This document provides a summary of the history and development of Behavior-Driven Development (BDD). It describes how Dan North originally developed BDD as an evolution of Test-Driven Development (TDD) to address problems developers faced in understanding TDD practices. North proposed using more business-readable language and terminology in test names and structures. This led to the creation of tools like Cucumber that help facilitate writing tests in a "behavior context" using a Given-When-Then structure inspired by domain-driven design. The document traces the evolution of BDD from these origins to its current definition emphasizing collaboration between stakeholders and defining requirements over a focus on testing.
The Challenges of Describing Best Tagging Practices for JATS
Jeffrey Beck, Technical Information Specialist, National Center for Biotechnology Information (NCBI), U.S. National Library of Medicine, National Institutes of Health; Co-chair, NISO Journal Article Tag Suite (JATS) Standing Committee
When All Teammates Speak The Same Language
Two main problems in software development
It's all about brains
What is BDD?
BDD vs TDD vs ATDD
Three Amigos
Gherkin
Cucumber and Selenium WebDriver
How to use feature files and create steps definitions
Examples
The document discusses turning user stories into reliable code. It covers specifying user stories, identifying valuable stories based on their "So that" statement, writing acceptance criteria, prioritizing stories, and coding stories. Developers work with users to write stories so that value is delivered from the beginning by satisfying actual needs rather than being off target.
The document discusses Behavior Driven Development (BDD) and how it relates to Domain Driven Design (DDD). It explains that while BDD and DDD share concepts like ubiquitous language, they have different goals, with BDD focusing on shared understanding through conversation and DDD focusing on modeling domains. The document also provides references to learn more about BDD from its creators like Dan North and how it can be practiced alongside but separately from DDD.
The PHP world is spinning quite fast these days. There’s a lot to keep up with. You can’t be an expert in all subjects, so you need a way to find out what’s relevant for you and your team. Which approaches to software development would be useful? Which programming paradigms could help you write better code? And which architectural styles will help your application to survive in this quickly changing world? In this talk I’ll help you answer these questions by taking a bird’s-eye view. I will quickly guide you along some of the most fascinating topics in modern PHP development: DDD, BDD, TDD, hexagonal architecture, CQRS, event sourcing and micro-services. We’ll see how these things are related to each other, and how understanding and applying them can help you improve your software projects in many ways.
The document discusses the requirements and basics of interacting with databases using Perl. It requires the DBI module to provide a database interface and a DBD driver specific to the database. It provides examples of simple queries to retrieve letter counts of last names and barcodes of patrons, demonstrating prepared statements, nested queries, and the benefits of binding variables. Chunking queries in large loops is more efficient than retrieving all records at once when working with BLOB fields.
Presentation given at the Samsung bada Orange partner event held in London on May 5th 2011.
This presentation explains how to apply your knowledge of other mobile platforms to bada.
The document outlines 50 different ways that one can contribute to the PostgreSQL project, ranging from contributing code to the core database, reviewing and fixing bugs, writing documentation, organizing user groups, giving presentations at conferences, and more. It encourages involvement from developers, writers, designers, system administrators, and those who can help with education and testing. The goal is to highlight the many opportunities available for getting involved in open source development of PostgreSQL.
The Challenges of Describing Best Tagging Practices for JATS
Jeffrey Beck, Technical Information Specialist, National Center for Biotechnology Information (NCBI), U.S. National Library of Medicine, National Institutes of Health; Co-chair, NISO Journal Article Tag Suite (JATS) Standing Committee
When All Teammates Speak The Same Language
Two main problems in software development
It's all about brains
What is BDD?
BDD vs TDD vs ATDD
Three Amigos
Gherkin
Cucumber and Selenium WebDriver
How to use feature files and create steps definitions
Examples
The document discusses turning user stories into reliable code. It covers specifying user stories, identifying valuable stories based on their "So that" statement, writing acceptance criteria, prioritizing stories, and coding stories. Developers work with users to write stories so that value is delivered from the beginning by satisfying actual needs rather than being off target.
The document discusses Behavior Driven Development (BDD) and how it relates to Domain Driven Design (DDD). It explains that while BDD and DDD share concepts like ubiquitous language, they have different goals, with BDD focusing on shared understanding through conversation and DDD focusing on modeling domains. The document also provides references to learn more about BDD from its creators like Dan North and how it can be practiced alongside but separately from DDD.
The PHP world is spinning quite fast these days. There’s a lot to keep up with. You can’t be an expert in all subjects, so you need a way to find out what’s relevant for you and your team. Which approaches to software development would be useful? Which programming paradigms could help you write better code? And which architectural styles will help your application to survive in this quickly changing world? In this talk I’ll help you answer these questions by taking a bird’s-eye view. I will quickly guide you along some of the most fascinating topics in modern PHP development: DDD, BDD, TDD, hexagonal architecture, CQRS, event sourcing and micro-services. We’ll see how these things are related to each other, and how understanding and applying them can help you improve your software projects in many ways.
The document discusses the requirements and basics of interacting with databases using Perl. It requires the DBI module to provide a database interface and a DBD driver specific to the database. It provides examples of simple queries to retrieve letter counts of last names and barcodes of patrons, demonstrating prepared statements, nested queries, and the benefits of binding variables. Chunking queries in large loops is more efficient than retrieving all records at once when working with BLOB fields.
Presentation given at the Samsung bada Orange partner event held in London on May 5th 2011.
This presentation explains how to apply your knowledge of other mobile platforms to bada.
The document outlines 50 different ways that one can contribute to the PostgreSQL project, ranging from contributing code to the core database, reviewing and fixing bugs, writing documentation, organizing user groups, giving presentations at conferences, and more. It encourages involvement from developers, writers, designers, system administrators, and those who can help with education and testing. The goal is to highlight the many opportunities available for getting involved in open source development of PostgreSQL.
Dependency Injection: Why is awesome and why should I care?devObjective
This document introduces dependency injection (DI), a design pattern that allows for flexible organization of classes. DI frameworks allow objects to be constructed and injected with their dependencies automatically based on configuration, avoiding hardcoded dependencies. Aspect oriented programming (AOP) allows cross-cutting concerns like logging or error handling to be defined separately from application code. Inversion of control (IOC) "flips" construction such that classes request fully initialized dependencies rather than constructing them directly. DI promotes loose coupling, testability, and flexibility in swapping implementations.
This document introduces dependency injection (DI), a design pattern that allows for flexible organization of classes. DI frameworks allow objects to be constructed and injected with their dependencies automatically based on configuration, avoiding hardcoded dependencies. Aspect oriented programming (AOP) allows cross-cutting concerns like logging or error handling to be defined separately from application code. Inversion of control (IOC) "flips" construction such that classes request fully initialized dependencies rather than constructing them directly. DI promotes loose coupling, testability, and flexibility in swapping implementations.
The document provides an overview of Behavior Driven Development (BDD). It discusses what BDD is, its history, differences from Test Driven Development, use of stories, and compares BDD tools like JBehave, EasyB, and Cucumber. BDD uses human-readable stories and examples to define requirements and tests in a way that is understandable to both technical and non-technical stakeholders. It aims to build the right system by involving all parties early.
Jumpstart your day with an introduction to MongoDB by building a simple web app with React, Atlas, and Stitch. First, we will cover the foundations of schema design, security, queries and indexing. Then we'll partially refactor an application using the MERN stack to a serverless application using MongoDB Stitch.
This document provides an overview of a MongoDB workshop. It includes an agenda with topics like an overview of databases, what is MongoDB, MongoDB commands, sharding and replication in MongoDB, and a demo. The workshop is hosted by Vivian at ThoughtWorks for the audience of NYC Open Data and will be presented by Kannan Sankaran and Roman Kubiak.
It is a NYC Open Data Meetup event. All credits went to Kannan and Roman.
Event link: http://www.meetup.com/NYC-Open-Data/events/141123082/ Blog Post: http://www.nycopendata.com/2014/02/11/mongodb/
The document provides instructions for an introductory Javascript workshop, including the Wi-Fi network and password, website URL, and agenda. The workshop will begin with an overview of key Javascript concepts, assignments for students to complete with TA support, and a review of next steps for continuing to learn Javascript. The document outlines the workshop content to introduce participants to basic Javascript programming.
JS Fest 2019. Ryan Dahl. Deno, a new way to JavaScriptJSFestUA
From async-await to ArrayBuffers, the JavaScript language has changes significantly in the decade since Node.js was designed. Deno takes advantage of these developments and incorporate lessons learned in the development of Node to provide a new JavaScript platform built on V8 and Rust. This talk will teach the audience how to get started with Deno.
DockerCon14 Contributing to Docker by TianonDocker, Inc.
This document provides information on various ways to contribute to the Docker project, including contributing code via pull requests, helping with documentation, testing, triaging issues, and more. It discusses the large number of existing contributors and files in the Docker codebase. The document encourages submitting pull requests and offers tips for doing so, such as keeping PRs small and easy to review, writing tests, and discussing significant proposed changes first on IRC. It also introduces tools like Gordon that can help with code reviews and maintenance.
This presentation discusses how anyone from a 'newbie' to a 'ninja' can get involved in Drupal.
Original session description:
This topic will be all about how to contribute to the Drupal community, in a number of different areas. While there'll be information for the hackers, even if you have only ever installed Drupal, you can help the project you know and love become even better.
Topics covered will include:
- Participation? Feh. What's in it for me?
- Community philosophy: Whys and Hows, Dos and Donts.
- Documentation: Helping other people not bash their heads against the same stuff you have.
- Helping with user support: Or, how to have a never-ending supply of clients.
- Maneuvering issue queues with speed and finesse.
- Patch review strategies that would make Dries proud.
- Taking control I: How to help get bugs fixed, and features in, even if you're not a coder.
- Taking control II: CVS, Patch, and how to use them to fix all that stuff you wish worked
The document discusses the BBC's efforts to implement semantic web and linked data technologies. It provides background on how the web has evolved from documents to data. It then outlines how the BBC is publishing structured data about programs, music, and other content using ontologies and linking to external data sources like MusicBrainz and Wikipedia. It aims to continue enhancing its linked data efforts across additional domains and work with identity providers to link user data.
Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...MongoDB
This document discusses using machine learning and various machine learning platforms like MongoDB, Spark, Watson, Azure, and AWS to engage customers. It provides examples of using these platforms for tasks like topic detection on tweets, sentiment analysis, recommendation engines, forecasting, and marketing response prediction. It also discusses architectures, languages, and functions supported by tools like Mahout, MLlib, and Watson Developer Cloud.
MongoDB World 2019: Don't Panic - The Hitchhiker's Guide to the MongoDB GalaxyMongoDB
MongoDB continues to rocket into space with ever-increasing thrust, but you just showed up today at the launch pad. With such an ever-growing universe of features, tools and versions, where to start? Fear not, Friend, for this talk is aimed specifically at you. Remember, we were all once noobs...
Media owners are turning to MongoDB to drive social interaction with their published content. The way customers consume information has changed and passive communication is no longer enough. They want to comment, share and engage with publishers and their community through a range of media types and via multiple channels whenever and wherever they are. There are serious challenges with taking this semi-structured and unstructured data and making it work in a traditional relational database. This webinar looks at how MongoDB’s schemaless design and document orientation gives organisation’s like the Guardian the flexibility to aggregate social content and scale out.
Binderoo - A rapid iteration framework that even scripters can useEthan Watson
The document is a presentation about Binderoo, a rapid iteration framework developed by Remedy Entertainment. It discusses:
- The goals of Binderoo, which are to provide perfect C++ binding, enable rapid iteration of code, and require minimal maintenance.
- The challenges of binding C++ and D, such as D classes being reference types while C++ can use both value and reference types.
- The three components of Binderoo - the service for compiling code, the host for loading code and handling reloads, and the client code embedded in D libraries.
- How to annotate D structs and functions to provide metadata needed for binding C++ code, and how this metadata is used to generate bindings
Dependency Injection Why is it awesome and Why should I care?ColdFusionConference
The document discusses dependency injection (DI), a design pattern that allows classes to be flexible and organized by managing their dependencies. It explains that DI frameworks handle object creation and injection of dependencies automatically, reducing boilerplate code. This inversion of control allows default values and relationships between objects to be configured through files rather than hardcoded in code.
This document discusses Domain Specific Languages (DSLs) and their use in JavaScript. It begins by defining DSLs and providing examples of domain-specific lexicons. It then covers internal and external DSLs, and examples of JavaScript DSLs like JSSpec (for testing) and ActiveRecord.js (for object-relational mapping). The document concludes by discussing lessons learned from building DSLs in JavaScript, such as its lack of namespaces being a challenge but prototypal inheritance and object literals providing opportunities.
This slide was used at a Lightning Talk of CouchConf Tokyo 2012 to introduce CouchDB JP, Japanese CouchDB community. In this slide, there is an easy-to-grasp history of CouchDB and Couchbase. I hope this slide will help you to clarify the relationship of these products.
5 hans van loenhoud - master-class the 7 skills of highly successful teamsIevgenii Katsan
The document describes the 7 skills that are important for effective teamwork: communicate, empathize, explore, collaborate, ideate, tell, and sell. It provides examples and exercises for each skill, such as creating personas to understand customers, exploring problems and goals, identifying team roles using Belbin's model, brainstorming ideas through divergent and convergent thinking, and using storytelling to present solutions. The overall message is that soft skills are critical for team and project success in addition to technical skills.
More Related Content
Similar to Iakiv Kramarenko - Don't be fooled with BDD, automation engineer
Dependency Injection: Why is awesome and why should I care?devObjective
This document introduces dependency injection (DI), a design pattern that allows for flexible organization of classes. DI frameworks allow objects to be constructed and injected with their dependencies automatically based on configuration, avoiding hardcoded dependencies. Aspect oriented programming (AOP) allows cross-cutting concerns like logging or error handling to be defined separately from application code. Inversion of control (IOC) "flips" construction such that classes request fully initialized dependencies rather than constructing them directly. DI promotes loose coupling, testability, and flexibility in swapping implementations.
This document introduces dependency injection (DI), a design pattern that allows for flexible organization of classes. DI frameworks allow objects to be constructed and injected with their dependencies automatically based on configuration, avoiding hardcoded dependencies. Aspect oriented programming (AOP) allows cross-cutting concerns like logging or error handling to be defined separately from application code. Inversion of control (IOC) "flips" construction such that classes request fully initialized dependencies rather than constructing them directly. DI promotes loose coupling, testability, and flexibility in swapping implementations.
The document provides an overview of Behavior Driven Development (BDD). It discusses what BDD is, its history, differences from Test Driven Development, use of stories, and compares BDD tools like JBehave, EasyB, and Cucumber. BDD uses human-readable stories and examples to define requirements and tests in a way that is understandable to both technical and non-technical stakeholders. It aims to build the right system by involving all parties early.
Jumpstart your day with an introduction to MongoDB by building a simple web app with React, Atlas, and Stitch. First, we will cover the foundations of schema design, security, queries and indexing. Then we'll partially refactor an application using the MERN stack to a serverless application using MongoDB Stitch.
This document provides an overview of a MongoDB workshop. It includes an agenda with topics like an overview of databases, what is MongoDB, MongoDB commands, sharding and replication in MongoDB, and a demo. The workshop is hosted by Vivian at ThoughtWorks for the audience of NYC Open Data and will be presented by Kannan Sankaran and Roman Kubiak.
It is a NYC Open Data Meetup event. All credits went to Kannan and Roman.
Event link: http://www.meetup.com/NYC-Open-Data/events/141123082/ Blog Post: http://www.nycopendata.com/2014/02/11/mongodb/
The document provides instructions for an introductory Javascript workshop, including the Wi-Fi network and password, website URL, and agenda. The workshop will begin with an overview of key Javascript concepts, assignments for students to complete with TA support, and a review of next steps for continuing to learn Javascript. The document outlines the workshop content to introduce participants to basic Javascript programming.
JS Fest 2019. Ryan Dahl. Deno, a new way to JavaScriptJSFestUA
From async-await to ArrayBuffers, the JavaScript language has changes significantly in the decade since Node.js was designed. Deno takes advantage of these developments and incorporate lessons learned in the development of Node to provide a new JavaScript platform built on V8 and Rust. This talk will teach the audience how to get started with Deno.
DockerCon14 Contributing to Docker by TianonDocker, Inc.
This document provides information on various ways to contribute to the Docker project, including contributing code via pull requests, helping with documentation, testing, triaging issues, and more. It discusses the large number of existing contributors and files in the Docker codebase. The document encourages submitting pull requests and offers tips for doing so, such as keeping PRs small and easy to review, writing tests, and discussing significant proposed changes first on IRC. It also introduces tools like Gordon that can help with code reviews and maintenance.
This presentation discusses how anyone from a 'newbie' to a 'ninja' can get involved in Drupal.
Original session description:
This topic will be all about how to contribute to the Drupal community, in a number of different areas. While there'll be information for the hackers, even if you have only ever installed Drupal, you can help the project you know and love become even better.
Topics covered will include:
- Participation? Feh. What's in it for me?
- Community philosophy: Whys and Hows, Dos and Donts.
- Documentation: Helping other people not bash their heads against the same stuff you have.
- Helping with user support: Or, how to have a never-ending supply of clients.
- Maneuvering issue queues with speed and finesse.
- Patch review strategies that would make Dries proud.
- Taking control I: How to help get bugs fixed, and features in, even if you're not a coder.
- Taking control II: CVS, Patch, and how to use them to fix all that stuff you wish worked
The document discusses the BBC's efforts to implement semantic web and linked data technologies. It provides background on how the web has evolved from documents to data. It then outlines how the BBC is publishing structured data about programs, music, and other content using ontologies and linking to external data sources like MusicBrainz and Wikipedia. It aims to continue enhancing its linked data efforts across additional domains and work with identity providers to link user data.
Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...MongoDB
This document discusses using machine learning and various machine learning platforms like MongoDB, Spark, Watson, Azure, and AWS to engage customers. It provides examples of using these platforms for tasks like topic detection on tweets, sentiment analysis, recommendation engines, forecasting, and marketing response prediction. It also discusses architectures, languages, and functions supported by tools like Mahout, MLlib, and Watson Developer Cloud.
MongoDB World 2019: Don't Panic - The Hitchhiker's Guide to the MongoDB GalaxyMongoDB
MongoDB continues to rocket into space with ever-increasing thrust, but you just showed up today at the launch pad. With such an ever-growing universe of features, tools and versions, where to start? Fear not, Friend, for this talk is aimed specifically at you. Remember, we were all once noobs...
Media owners are turning to MongoDB to drive social interaction with their published content. The way customers consume information has changed and passive communication is no longer enough. They want to comment, share and engage with publishers and their community through a range of media types and via multiple channels whenever and wherever they are. There are serious challenges with taking this semi-structured and unstructured data and making it work in a traditional relational database. This webinar looks at how MongoDB’s schemaless design and document orientation gives organisation’s like the Guardian the flexibility to aggregate social content and scale out.
Binderoo - A rapid iteration framework that even scripters can useEthan Watson
The document is a presentation about Binderoo, a rapid iteration framework developed by Remedy Entertainment. It discusses:
- The goals of Binderoo, which are to provide perfect C++ binding, enable rapid iteration of code, and require minimal maintenance.
- The challenges of binding C++ and D, such as D classes being reference types while C++ can use both value and reference types.
- The three components of Binderoo - the service for compiling code, the host for loading code and handling reloads, and the client code embedded in D libraries.
- How to annotate D structs and functions to provide metadata needed for binding C++ code, and how this metadata is used to generate bindings
Dependency Injection Why is it awesome and Why should I care?ColdFusionConference
The document discusses dependency injection (DI), a design pattern that allows classes to be flexible and organized by managing their dependencies. It explains that DI frameworks handle object creation and injection of dependencies automatically, reducing boilerplate code. This inversion of control allows default values and relationships between objects to be configured through files rather than hardcoded in code.
This document discusses Domain Specific Languages (DSLs) and their use in JavaScript. It begins by defining DSLs and providing examples of domain-specific lexicons. It then covers internal and external DSLs, and examples of JavaScript DSLs like JSSpec (for testing) and ActiveRecord.js (for object-relational mapping). The document concludes by discussing lessons learned from building DSLs in JavaScript, such as its lack of namespaces being a challenge but prototypal inheritance and object literals providing opportunities.
This slide was used at a Lightning Talk of CouchConf Tokyo 2012 to introduce CouchDB JP, Japanese CouchDB community. In this slide, there is an easy-to-grasp history of CouchDB and Couchbase. I hope this slide will help you to clarify the relationship of these products.
Similar to Iakiv Kramarenko - Don't be fooled with BDD, automation engineer (20)
5 hans van loenhoud - master-class the 7 skills of highly successful teamsIevgenii Katsan
The document describes the 7 skills that are important for effective teamwork: communicate, empathize, explore, collaborate, ideate, tell, and sell. It provides examples and exercises for each skill, such as creating personas to understand customers, exploring problems and goals, identifying team roles using Belbin's model, brainstorming ideas through divergent and convergent thinking, and using storytelling to present solutions. The overall message is that soft skills are critical for team and project success in addition to technical skills.
7 hans van loenhoud - the problem-goal-solution trinityIevgenii Katsan
The document discusses the problem-goal-solution trinity, which refers to the relationship between problems, goals, and solutions from the perspective of stakeholders. It defines a problem as an undesirable current state that inhibits desired behavior, a goal as a desirable future state that requires action to achieve, and a solution as a roadmap or plan to remove the problem and enable reaching the goal. It notes that problems and goals can only be identified through stakeholder elicitation, and that one stakeholder's problem may be another's goal. The document also discusses how problems, goals, and their relationships are not static and can change over time and context.
Digital disruption is defined as an effect that changes fundamental expectations and behaviors in a culture, market, industry or process through digital capabilities. It is an innovation that uses digital technologies to create change in our society and can threaten existing market players. Successful digital disruption satisfies a higher goal in a completely new way that is better, easier and cheaper, often through digital means. Design thinking is a light-weight approach using methods like prototyping to develop practical solutions to ill-defined problems, focusing on building quick prototypes to fail fast and succeed sooner through techniques like empathy mapping and the double diamond model. The lean startup approach emphasizes building minimal viable products to collect maximum learning from customers with minimum effort through pivoting based on testing and metrics.
5 victoria cupet - learn to play business analysisIevgenii Katsan
The document discusses how games can be used to support business analysis activities. It provides examples of different types of games that can be used for requirements gathering, prioritization, discovery, and innovation. Some key games discussed include Speed Boat to identify customer pain points, Spider Web to understand relationships between products, and Buy a Feature to prioritize features based on customer willingness to pay. The document advocates that games create structured activities that allow free and playful thinking to generate insights. It also provides tips for facilitating different games.
3 karabak kuyavets transformation of business analyst to product ownerIevgenii Katsan
The document discusses the transformation of a business analyst to a product owner role. It notes that hierarchical management modes are no longer suited for modern business challenges. Product modes were developed to allow teams to build, run, and iterate solutions continuously rather than separating these stages. A business analyst focuses on requirements gathering, while a product owner sets vision and priorities and makes decisions to support the team. The document advises business analysts to adopt a product owner mindset by focusing more on business objectives and outcomes rather than just requirements. It provides five recommendations for when and how to shift one's mindset to that of a product owner.
3 zornitsa nikolova - the product manager between decision making and facil...Ievgenii Katsan
The document discusses the role of the product manager and describes them as being like a "mini-CEO" who must lead by example. It defines the ideal product manager as being DRIVEN, which stands for decisive, ruthless, informed, versatile, empowering, and negotiable. Each of these traits is then further explained, with examples of how a product manager can demonstrate being decisive by prioritizing important decisions, informed by verifying assumptions, and negotiable by seeking consensus or consent from stakeholders. The document concludes by having product managers assess themselves on how well they embody these DRIVEN traits in their daily work.
9 natali renska - product and outsource development, how to cook 2 meals in...Ievgenii Katsan
Natali Renska discusses cooking two meals in one pan by presenting steps such as cooking proteins or vegetables for one meal first before adding ingredients for a second meal to the same pan. The document provides tips on saving time and money by using one pan to cook multiple ingredients sequentially for two separate meals. Various techniques are proposed, such as cooking pasta or rice as a base before adding protein and sauce components for another meal.
7 denis parkhomenko - from idea to execution how to make a product that cus...Ievgenii Katsan
The document provides tips on how to make a product that customers will love. It discusses focusing on the problem and solution, targeting a specific market, and building a strong brand. It also outlines the typical stages a startup goes through, from creating an idea to releasing a minimum viable product to scaling up and harvesting returns. The overall message is that developing a deep understanding of customers, focusing efforts, iterating based on feedback, and having a clear business model are keys to success.
Anton Vitiaz has over 10 years of experience in business analysis, custom software development, and Microsoft CRM/SharePoint implementation. He discusses creating a minimum viable product (MVP) in 3 days by focusing on key features, keeping things very simple, and ensuring it works. The process involves planning simple implementations, cutting unnecessary elements, conducting micro 2-3 hour iterations with quick demos, adding demo data, presenting key concepts, and running simple tests. Motivating participants, having expertise, providing the right support tools, and limiting the timeframe to 3 days or less are important to success, while distractions, overcomplicating the task, and unrealistic deadlines can lead to failure.
5 mariya popova - ideal product management. unicorns in our realityIevgenii Katsan
The document discusses product management and how to transform unrealistic expectations ("unicorns") into practical realities. It defines product management and what product managers do, including developing strategy, managing releases, conducting research, and more. However, unrealistic expectations can cause problems if customer and product requirements do not align, or if "nice-to-have" features are prioritized over product improvements. The presentation provides tips on how to take a more realistic approach by understanding customer needs, conducting market research, determining requirements, and developing a product roadmap to guide the process. Templates are also shared for SWOT analysis, development charters, requirements documents, timelines, and roadmaps.
The document outlines a process for homework fieldwork that involves brainstorming ideas, exploring customer needs through interviews, prototyping potential solutions through storyboards and mockups, testing prototypes with customers to co-create, implementing a solution by 25% each assignment period and rolling a dice, and delivering the final solution to validate it and get feedback.
4 anton parkhomenko - how to make effective user research with no budget at...Ievgenii Katsan
The document discusses how to conduct effective user research with no budget and limited time. It provides recommendations for free or low-cost tools to conduct remote interviews and usability testing, including Zoom, OBS, Screencastify, Loom, and Lookback. It also recommends using YouTube to store recordings, Google Docs for transcripts, and Airtable to organize findings into an atomic database structure of people, sessions, jobs, pains, gains, and features linked to evidence from interviews. The methodology outlined atomizes research into small units that can be easily shared and built upon over time.
International Conference on NLP, Artificial Intelligence, Machine Learning an...gerogepatton
International Conference on NLP, Artificial Intelligence, Machine Learning and Applications (NLAIM 2024) offers a premier global platform for exchanging insights and findings in the theory, methodology, and applications of NLP, Artificial Intelligence, Machine Learning, and their applications. The conference seeks substantial contributions across all key domains of NLP, Artificial Intelligence, Machine Learning, and their practical applications, aiming to foster both theoretical advancements and real-world implementations. With a focus on facilitating collaboration between researchers and practitioners from academia and industry, the conference serves as a nexus for sharing the latest developments in the field.
Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024Sinan KOZAK
Sinan from the Delivery Hero mobile infrastructure engineering team shares a deep dive into performance acceleration with Gradle build cache optimizations. Sinan shares their journey into solving complex build-cache problems that affect Gradle builds. By understanding the challenges and solutions found in our journey, we aim to demonstrate the possibilities for faster builds. The case study reveals how overlapping outputs and cache misconfigurations led to significant increases in build times, especially as the project scaled up with numerous modules using Paparazzi tests. The journey from diagnosing to defeating cache issues offers invaluable lessons on maintaining cache integrity without sacrificing functionality.
Embedded machine learning-based road conditions and driving behavior monitoringIJECEIAES
Car accident rates have increased in recent years, resulting in losses in human lives, properties, and other financial costs. An embedded machine learning-based system is developed to address this critical issue. The system can monitor road conditions, detect driving patterns, and identify aggressive driving behaviors. The system is based on neural networks trained on a comprehensive dataset of driving events, driving styles, and road conditions. The system effectively detects potential risks and helps mitigate the frequency and impact of accidents. The primary goal is to ensure the safety of drivers and vehicles. Collecting data involved gathering information on three key road events: normal street and normal drive, speed bumps, circular yellow speed bumps, and three aggressive driving actions: sudden start, sudden stop, and sudden entry. The gathered data is processed and analyzed using a machine learning system designed for limited power and memory devices. The developed system resulted in 91.9% accuracy, 93.6% precision, and 92% recall. The achieved inference time on an Arduino Nano 33 BLE Sense with a 32-bit CPU running at 64 MHz is 34 ms and requires 2.6 kB peak RAM and 139.9 kB program flash memory, making it suitable for resource-constrained embedded systems.
Harnessing WebAssembly for Real-time Stateless Streaming PipelinesChristina Lin
Traditionally, dealing with real-time data pipelines has involved significant overhead, even for straightforward tasks like data transformation or masking. However, in this talk, we’ll venture into the dynamic realm of WebAssembly (WASM) and discover how it can revolutionize the creation of stateless streaming pipelines within a Kafka (Redpanda) broker. These pipelines are adept at managing low-latency, high-data-volume scenarios.
Redefining brain tumor segmentation: a cutting-edge convolutional neural netw...IJECEIAES
Medical image analysis has witnessed significant advancements with deep learning techniques. In the domain of brain tumor segmentation, the ability to
precisely delineate tumor boundaries from magnetic resonance imaging (MRI)
scans holds profound implications for diagnosis. This study presents an ensemble convolutional neural network (CNN) with transfer learning, integrating
the state-of-the-art Deeplabv3+ architecture with the ResNet18 backbone. The
model is rigorously trained and evaluated, exhibiting remarkable performance
metrics, including an impressive global accuracy of 99.286%, a high-class accuracy of 82.191%, a mean intersection over union (IoU) of 79.900%, a weighted
IoU of 98.620%, and a Boundary F1 (BF) score of 83.303%. Notably, a detailed comparative analysis with existing methods showcases the superiority of
our proposed model. These findings underscore the model’s competence in precise brain tumor localization, underscoring its potential to revolutionize medical
image analysis and enhance healthcare outcomes. This research paves the way
for future exploration and optimization of advanced CNN models in medical
imaging, emphasizing addressing false positives and resource efficiency.
Comparative analysis between traditional aquaponics and reconstructed aquapon...bijceesjournal
The aquaponic system of planting is a method that does not require soil usage. It is a method that only needs water, fish, lava rocks (a substitute for soil), and plants. Aquaponic systems are sustainable and environmentally friendly. Its use not only helps to plant in small spaces but also helps reduce artificial chemical use and minimizes excess water use, as aquaponics consumes 90% less water than soil-based gardening. The study applied a descriptive and experimental design to assess and compare conventional and reconstructed aquaponic methods for reproducing tomatoes. The researchers created an observation checklist to determine the significant factors of the study. The study aims to determine the significant difference between traditional aquaponics and reconstructed aquaponics systems propagating tomatoes in terms of height, weight, girth, and number of fruits. The reconstructed aquaponics system’s higher growth yield results in a much more nourished crop than the traditional aquaponics system. It is superior in its number of fruits, height, weight, and girth measurement. Moreover, the reconstructed aquaponics system is proven to eliminate all the hindrances present in the traditional aquaponics system, which are overcrowding of fish, algae growth, pest problems, contaminated water, and dead fish.
Understanding Inductive Bias in Machine LearningSUTEJAS
This presentation explores the concept of inductive bias in machine learning. It explains how algorithms come with built-in assumptions and preferences that guide the learning process. You'll learn about the different types of inductive bias and how they can impact the performance and generalizability of machine learning models.
The presentation also covers the positive and negative aspects of inductive bias, along with strategies for mitigating potential drawbacks. We'll explore examples of how bias manifests in algorithms like neural networks and decision trees.
By understanding inductive bias, you can gain valuable insights into how machine learning models work and make informed decisions when building and deploying them.
Electric vehicle and photovoltaic advanced roles in enhancing the financial p...IJECEIAES
Climate change's impact on the planet forced the United Nations and governments to promote green energies and electric transportation. The deployments of photovoltaic (PV) and electric vehicle (EV) systems gained stronger momentum due to their numerous advantages over fossil fuel types. The advantages go beyond sustainability to reach financial support and stability. The work in this paper introduces the hybrid system between PV and EV to support industrial and commercial plants. This paper covers the theoretical framework of the proposed hybrid system including the required equation to complete the cost analysis when PV and EV are present. In addition, the proposed design diagram which sets the priorities and requirements of the system is presented. The proposed approach allows setup to advance their power stability, especially during power outages. The presented information supports researchers and plant owners to complete the necessary analysis while promoting the deployment of clean energy. The result of a case study that represents a dairy milk farmer supports the theoretical works and highlights its advanced benefits to existing plants. The short return on investment of the proposed approach supports the paper's novelty approach for the sustainable electrical system. In addition, the proposed system allows for an isolated power setup without the need for a transmission line which enhances the safety of the electrical network
Advanced control scheme of doubly fed induction generator for wind turbine us...IJECEIAES
This paper describes a speed control device for generating electrical energy on an electricity network based on the doubly fed induction generator (DFIG) used for wind power conversion systems. At first, a double-fed induction generator model was constructed. A control law is formulated to govern the flow of energy between the stator of a DFIG and the energy network using three types of controllers: proportional integral (PI), sliding mode controller (SMC) and second order sliding mode controller (SOSMC). Their different results in terms of power reference tracking, reaction to unexpected speed fluctuations, sensitivity to perturbations, and resilience against machine parameter alterations are compared. MATLAB/Simulink was used to conduct the simulations for the preceding study. Multiple simulations have shown very satisfying results, and the investigations demonstrate the efficacy and power-enhancing capabilities of the suggested control system.
ACEP Magazine edition 4th launched on 05.06.2024Rahul
This document provides information about the third edition of the magazine "Sthapatya" published by the Association of Civil Engineers (Practicing) Aurangabad. It includes messages from current and past presidents of ACEP, memories and photos from past ACEP events, information on life time achievement awards given by ACEP, and a technical article on concrete maintenance, repairs and strengthening. The document highlights activities of ACEP and provides a technical educational article for members.
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressionsVictor Morales
K8sGPT is a tool that analyzes and diagnoses Kubernetes clusters. This presentation was used to share the requirements and dependencies to deploy K8sGPT in a local environment.
4. Don’t be fooled by BDD
Reasoned by:
Q&A from BBDD talk
http://seleniumcamp.com/talk/better-bullshit-driven-development/
5. Don’t be fooled by BDD
Inspired by:
D. Zharii comment at “TDD vs BDD: what the difference?” (ru, en)
Dan North’s “Introducing BDD”, March 2006 (en)
Dan North’s “Introducing RBehave”, June 2007 (en)
Dan North’s “BDD is like TDD if”, May 2012 (en)
Liz Keogh’s “Translating TDD to BDD”, November 2009 (en)
Liz Keogh’s “Showcasing the language of BDD”, May 2012 (en)
Wiki’s “Behaviour-driven development” (en)
yashaka's:) experience of fighting with customers about using BDD at incorrect scopes :)
10. BDD is
TDD
tests first
written by devs
with tests
as documentation
as behaviours
focused on business
as specification
i.e. provided from BA side
a tool to define unclear reqs
in ubiquitous language
discussed between all stakeholders
(BA, Test, Dev, etc.)
?
11. BDD is
TDD
tests first
written by devs
with tests
as documentation
as behaviours
focused on business
as specification
i.e. provided from BA side
a tool to define unclear reqs
in ubiquitous language
discussed between all stakeholders
(BA, Test, Dev, etc.)
12. BDD is
TDD
tests first
written by devs
with tests
as documentation
as behaviours
focused on business
as specification
i.e. provided from BA side
a tool to define unclear reqs
in ubiquitous language
discussed between all stakeholders
(BA, Test, Dev, etc.)
13. BDD is
TDD
tests first
written by devs
with tests
as documentation
as behaviours
focused on business
as specification
i.e. provided from BA side
a tool to define unclear reqs
in ubiquitous language
discussed between all stakeholders
(BA, Test, Dev, etc.)
14. BDD is
TDD
tests first
written by devs
with tests
as documentation
as behaviours
focused on business
as specification
i.e. provided from BA side
a tool to define unclear reqs
in ubiquitous language
discussed between all stakeholders
(BA, Test, Dev, etc.)
15. BDD is
TDD
tests first
written by devs
with tests
as documentation
as behaviours
focused on business
as specification
i.e. provided from BA side
a tool to define unclear reqs
in ubiquitous language
discussed between all stakeholders
(BA, Test, Dev, etc.)
16. BDD is
TDD
tests first
written by devs
with tests
as documentation
as behaviours
focused on business
as specification
i.e. provided from BA side
a tool to define unclear reqs
in ubiquitous language
discussed between all stakeholders
(BA, Test, Dev, etc.)
17. BDD is
TDD
tests first
written by devs
with tests
as documentation
as behaviours
focused on business
as specification
i.e. provided from BA side
a tool to define unclear reqs
in ubiquitous language
discussed between all stakeholders
(BA, Test, Dev, etc.)
18. BDD is
TDD
tests first
written by devs
with tests
as documentation
as behaviours
focused on business
as specification
i.e. provided from BA side
a tool to define unclear reqs
in ubiquitous language
discussed between all stakeholders
(BA, Test, Dev, etc.)
19. BDD is outside-in
TDD
tests first
written by devs
with tests
as documentation
as behaviours
focused on business
as specification
i.e. provided from BA side
a tool to define unclear reqs
in ubiquitous language
discussed between all stakeholders
(BA, Test, Dev, etc.)
20. BDD is outside-in
TDD
tests first
written by devs
with tests
as documentation
as behaviours
focused on business
as specification
i.e. provided from BA side
a tool to define unclear reqs
in ubiquitous language
discussed between all stakeholders
(BA, Test, Dev, etc.)
any mention about
Automation Engineers?
21. BDD is outside-in
TDD
tests first
written by devs
with tests
as documentation
as behaviours
focused on business
as specification
i.e. provided from BA side
a tool to define unclear reqs
in ubiquitous language
discussed between all stakeholders
(BA, Test, Dev, etc.)
any mention about
Automation Engineers?
so why do
“hammering nails with a microscope”?
24. Once upon a time… one TDD coach…
faced problems in his trainings…
Dan North: “Introducing BDD”, March 2006
“Programmers wanted to know where to start, what to test and what not to test, how
much to test in one go, what to call their tests, and how to understand why a test
fails.” (c)
25. So he thought about…
“Test method names should be sentences” (c)
giving at least
some docs to devs
public class DiasporaBoardComponentTest {
...
public void testSharesMessage() {
...
}
}
Dan North: “Introducing BDD”, March 2006
26. So he thought about…
“Test method names should be sentences” (c)
giving at least
some docs to devs
public class DiasporaBoardComponentTest {
...
public void testSharesMessage() {
...
}
}
Dan North: “Introducing BDD”, March 2006
side note: examples were prepared in the “acceptance” context
instead of the “unit” context, as in the original article…
27. So he thought about…
“Test method names should be sentences” (c)
giving at least
some docs to devs
public class DiasporaBoardComponentTest {
...
public void testSharesMessage() {
...
}
}
Dan North: “Introducing BDD”, March 2006
28. So he thought about…
…in the language of the business domain
so starts to make more sense to other stakeholders (BA, Test E.)
Dan North: “Introducing BDD”, March 2006
public class DiasporaStreamTest {
...
public void testSharesPost() {
...
}
}
29. So he thought about…
…with “should” instead of “test”
so starts to make more sense to other stakeholders (BA, Test E.)
Dan North: “Introducing BDD”, March 2006
public class DiasporaStreamTest {
...
public void shouldSharePost() {
...
}
}
30. So he thought about…
…with “should” instead of “test”
“… implicitly allows … to challenge …: “Should it? Really?” .. easier to decide whether a
test is failing due to a bug … or … because … previous assumptions about … behaviour
are now incorrect.” (c)
Dan North: “Introducing BDD”, March 2006
public class DiasporaStreamTest {
...
public void shouldSharePost() {
...
}
}
31. So he thought about…
…“Behaviour” is a more useful word than “test” (c)
Dan North: “Introducing BDD”, March 2006
TBDD = TestBehaviour-driven development
32. So he thought about…
…creating tools to help "to be in behaviour context”
Dan North: “Introducing BDD”, March 2006
early: JBehave, RBehave (then “was merged” to RSpec)
late: Cucumber, etc.
33. So he thought about…
…creating tools to help "to be in behaviour context"
Ruby + RSpec example
describe 'Diaspora stream' do
it 'should share post' do
...
end
end
Dan North: “Introducing BDD”, March 2006
34. So he thought about…
focus on business value...
"What’s the next most important thing the system doesn’t do?" (c)
describe 'Diaspora stream' do
it 'should share post' do
...
end
it 'should delete post' do
# to be implemented
end
end
Dan North: “Introducing BDD”, March 2006
35. So he thought about…
share all this stuff with BA, testers... that's actually same thing - specifications
describe 'Diaspora stream' do
it 'should share post'
it 'should edit post'
it 'should hide post'
it 'should delete post'
...
end
Dan North: “Introducing BDD”, March 2006
36. So he thought about…
(being inspired by domain-driven design ideas)
define "ubiquitous language" for the "analysis" itself
Dan North: “Introducing BDD”, March 2006
As a [X] I want [Y] so that [Z]
Given some initial context (the givens),
When an event occurs,
then ensure some outcomes.
37. So he thought about…
(being inspired by domain-driven design ideas)
define "ubiquitous language" for the "analysis" itself
Dan North: “Introducing BDD”, March 2006
As a [X] I want [Y] so that [Z]
Given some initial context (the givens),
When an event occurs,
then ensure some outcomes.
where (c)
Y is some feature,
Z is the benefit or value of the feature,
and X is the person (or role) who will benefit.
38. So he thought about…
(being inspired by domain-driven design ideas)
define "ubiquitous language" for the "analysis" itself
Dan North: “Introducing BDD”, March 2006
As a [X] I want [Y] so that [Z]
Given some initial context (the givens),
When an event occurs,
then ensure some outcomes.
39. So he thought about…
Acceptance criteria should be executable (c)
Dan North: “Introducing BDD”, March 2006
Ruby + early RBehave example
Dan North: “Introducing RBehave”, June 2007
Story 'share post',
%(As a diaspora user
I want to share post to the stream
So that I keep my subscribers updated with all my news) do
Scenario 'new post can be added to user stream' do
Given 'user logged in with credentials:', 'yashaka', 'secret'
When 'shared new post:', 'will give a talk about BDD today'
Then 'user stream should be updated with a new top post:', 'will give a
talk about BDD today'
end
Scenario 'subscriber stream is updated with the new user post'
...
end
40. Story 'share post',
%(As a diaspora user
I want to share post to the stream
So that I keep my subscribers updated with all my news) do
Scenario 'new post can be added to user stream' do
Given 'user logged with credentials:', 'yashaka', 'secret' do |user, passw|
diaspora.login_page.open().sign_in(user, passw)
end
When 'shared new post:', 'will give a talk about BDD today' do |message|
diaspora.stream.new_post.start().write(message).share()
end
Then 'user stream should be updated with a new top post:', 'will give a talk
about BDD today' do |message|
diaspora.stream.post(0).should_be(message)
end
end
Scenario 'subscriber stream is updated with the new user post' do
...
end
end
Ruby + early RBehave example
41. Finally he invented…
Dan North: “Introducing BDD”, March 2006
Dan North: "How to sell BDD to the business", November 2009:
"BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-
scale, high-automation, agile methodology. It describes a cycle of interactions with
well-defined outputs, resulting in the delivery of working, tested software that
matters." (c)
42. Remember? outside-in BDD
TDD
tests first
written by devs
with tests
as documentation
as behaviours
focused on business
as specification
i.e. provided from BA side
a tool to define unclear reqs
in ubiquitous language
discussed between all stakeholders
(BA, Test, Dev, etc.)
any mention about
Automation Engineers?
43. Remember? outside-in BDD
TDD
tests first
written by devs
with tests
as documentation
as behaviours
focused on business
as specification
i.e. provided from BA side
a tool to define unclear reqs
in ubiquitous language
discussed between all stakeholders
(BA, Test, Dev, etc.)
any mention about
Automation Engineers?
notice emphasising BA terminology?
44. Remember? outside-in BDD
TDD
tests first
written by devs
with tests
as documentation
as behaviours
focused on business
as specification
i.e. provided from BA side
a tool to define unclear reqs
in ubiquitous language
discussed between all stakeholders
(BA, Test, Dev, etc.)
any mention about
Automation Engineers?
notice emphasising BA terminology?
moreover, BDD is NOT about Testing!
45. Testing...
Wiki's "Software Testing"
"Software testing is an investigation conducted to provide stakeholders with
information about the quality of the product or service under test." (c)
46. BDD...
is about "investigation conducted by stakeholders to figure out what the product
SHOULD be" (c)
Liz Keogh’s “Showcasing the language of BDD”, May 2012
47. Testing...
"we assume that we don’t know what we’re doing (and probably don’t know that we
don’t know)" (c)
Liz Keogh’s “Showcasing the language of BDD”, May 2012
BDD...
"imply that you know what you’re doing and just want to make sure you’ve done it" (c)
48. So...
1. BDD starts earlier than Testing Product can even become possible…
2. BDD is completely not about "Automating Regression by testers/automation
engineers". Because once we already have implementation - we missed the train.
There are no more of those main problems that BDD was created to solve.
49. Given the train is missed
When trying to catch the train with automation coverage
And as usual lacking time
Then why to use BDD tools –
often heavy frameworks
tuned for BA that is already not relevant ?
52. Cucumber-jvm
@defaults
Feature: Diaspora
Scenario: Share message
Given I signed in from login page with credentials: 'yashaka', 'secret'
When I publish new post: 'will give a BDD talk today'
Then I should see new post 'will give a BDD talk today' in the top of
stream
53. Cucumber-jvm
public class DiasporaStepdefs {
LoginPage loginPage = new LoginPage();
NewPost newPost = new NewPost();
Stream stream = new Stream();
@Given("^I signed in from login page with credentials: '(.+)', '(.+)'$")
public void
I_signed_in_from_login_page_with_credentials_selenide_yagniyagni(String
username, String password) {
loginPage.open();
loginPage.signIn(username, password);
}
...
54. Cucumber-jvm
...
@When("^I publish new post: '(.+)'$")
public void I_publish_new_post_Selenide_is_released_(String text) {
newPost.start();
newPost.write(text);
newPost.share();
}
@Then("^I should see new post '(.+)' in the top of stream$")
public void
I_should_see_new_post_Selenide_is_released_in_the_top_of_stream(String text)
{
stream.shouldHavePostWithText(0, text);
}
}
56. Spock + Fluent PageObject + Allure @steps + One Entry Point
public class DiasporaStreamTest extends Specification {
def "should share post"() {
given: "user logged in"
app.loginPage().open().signIn("yashaka","secret")
when: "shared new post"
app.newPost().start().write("will give a BDD talk today").share()
then: "new post should appear in the top of the stream"
app.stream().post(0).shouldBe("will give a BDD talk today")
}
}
57. Spock + Fluent PageObject + Allure @steps + One Entry Point
public class DiasporaStreamTest extends Specification {
def "should share post"() {
given:
app.loginPage().open().signIn("yashaka","secret")
when:
app.newPost().start().write("will give a BDD talk today").share()
then:
app.stream().post(0).shouldBe("will give a BDD talk today")
}
}
or even simpler if desired
59. JUnit + Fluent PageObject + Allure @steps + Gherkined One Entry Point
public class DiasporaStreamTest extends GherkinTest {
@Test
public void shouldSharePost() {
GIVEN("user logged in")
.loginPage().open().signIn("yashaka","secret");
WHEN("shared new post")
.newPost().start().write("will give a BDD talk today").share();
THEN("new post should appear in the top of the stream")
.stream().post(0).shouldBe("will give a BDD talk today");
}
}
60. JUnit + Fluent PageObject + Allure @steps + Gherkined One Entry Point
public class DiasporaStreamTest extends GherkinTest {
@Test
public void shouldSharePost() {
GIVEN().loginPage().open().signIn("yashaka","secret");
WHEN().newPost().start().write("will give a BDD talk today").share();
THEN().stream().post(0).shouldBe("will give a BDD talk today");
}
}
or even simpler if desired
61. Summary
GIVEN no outside-in:
no BA writing Gherkin
AND no Devs writing tests before implementation
AND automation engineers writing tests after
WHEN
xUnit + static Java
AND Fluent PageObjects with Allure readable @Steps
AND Gherkin style of One Entry Point (aka Application Manager)
THEN
"not BA" pros of BDD can be achieved much easier and faster
62. Summary
GIVEN no outside-in:
no BA writing Gherkin
AND no Devs writing tests before implementation
AND automation engineers writing tests after
WHEN
xUnit + static Java
AND Fluent PageObjects with Allure readable @Steps
AND Gherkin style of One Entry Point (aka Application Manager)
THEN
"not BA" pros of BDD can be achieved much easier and faster
KISS: classic static Java
and simple yet powerful Junit/TestNg (parallelisation, etc.)
need additional Gherkin support
but impl is few simple no-magic lines of code
with ability to match fluently the one entry point
63. Summary
GIVEN no outside-in:
no BA writing Gherkin
AND no Devs writing tests before implementation
AND automation engineers writing tests after
WHEN
Spock + dynamic Groovy
AND Fluent PageObjects with Allure readable @Steps
AND One Entry Point (aka Application Manager)
THEN
"not BA" pros of BDD can be achieved much easier and faster
64. Summary
GIVEN no outside-in:
no BA writing Gherkin
AND no Devs writing tests before implementation
AND automation engineers writing tests after
WHEN
Spock + dynamic Groovy
AND Fluent PageObjects with Allure readable @Steps
AND One Entry Point (aka Application Manager)
THEN
"not BA" pros of BDD can be achieved much easier and faster
for some newcomers – too dynamic => prone to hardly debuggable errors
but less "fluent"
less parallel tests support
test names as strings with spaces
out of the box gherkin
65. pseudo-BDD with
xUnit/Spock, Fluent PageObjects, Allure @Steps, “Gherkined" One Entry Point
• all-powerful programming language over textual-pseudo-language
• full IDE support (autocompletion, auto-generate, etc.)
• 1 abstraction layer less => simpler and faster in implementation
• still fully readable and with pretty good reports
• newcomers friendly
• Just One Entry Point to all Application Model
• structured with granular Fluent PageObjects => easier to learn&use via
autocompletion