|
Behavior-driven development (BDD) has become quite popular, and organizations often attempt to adopt it. BDD is more than just the Given-When-Then way of documenting requirements – it is a culture that promotes collaboration. You might wonder whether these lofty claims are indeed valid and whether they really fetch the results they claim to.
Let’s look at a case study that illustrates the miracles BDD can achieve.
A Real-Life BDD Implementation
Of the many testaments of BDD’s prowess is one written by Simon Powers (A case study for BDD in improving throughput and collaboration) in which he discussed how he utilized BDD to improve efficiency and product quality at a global investment bank.
The Case Study
Simon Powers (CEO and founder of AWA Global) was asked to improve throughput and collaboration at a well-known global investment bank. He learned that teams were struggling to complete stories within the sprint, mainly due to defects from UAT and Production flowing in. 35% (and rising every month) of all developer time was spent dealing with these urgent or semi-urgent defects. After reviewing the QA practices, it was observed that there was very low to non-existent unit and acceptance testing.
As a next step, he got the investment time needed for revamping the teams, trained them on how to perform software testing, and built frameworks and libraries for automated testing. All this was done over the first three months. During this time, the estimated individual tests take up five days of time for a 2-day story. By the end of the first three months, tests were being written in a few lines of code in minutes for the same type of story. However, no noticeable reduction in defect rate had been noticed.
In the next phase, focus was shifted to bettering testing practices and Product Owners (POs) were brought in. This turned out to be a good thing because POs wrote much better acceptance tests due to their proximity with the user and these tests could be directly converted into test cases using BDD’s Gherkin. At the end of the 3-6 month period, nearly zero defects were observed on brand-new code. However, work was still required to achieve this for legacy code.
In the 6-9 months period, defects from the legacy code were also drastically reduced, so much so that by the end of 9 months, the defect rate was down to 4%. Due to minimal unexpected surprises, teams were better able to complete their development targets within the sprint.
Some of the positive effects of this exercise were:
- A collaborative culture was achieved between different teams (developers, testers, and POs).
- Infrastructure was better involved and utilized to achieve this kind of throughput. Modifications were made to accommodate automated testing.
- The load was taken off manual testing teams since confidence increased in the performance and accuracy of automated test suites.
Learnings from the Case Study
There are some interesting takeaways that we can pick up from here:
- Check your testing strategies: Poor testing strategies, such as very low or non-existent unit and acceptance testing, can have consequences on the quality of the product.
- Good things take time: One cannot just turn the picture around overnight. Teams need to be taught about the hows and whys of testing and how to customize these practices to their situation. Even in the case study, the team required a good nine months of work to start seeing the expected results.
- Keep everyone together: Implementing a QA process like BDD requires buy-in from all stakeholders and even team members since it takes significant time, resources, and effort. However, the situation will improve after this initial phase.
- Contributing BAs and POs: Using processes like BDD and BDD 2.0 is beneficial since product owners (POs) and business analysts (BAs) are the closest to the users and have the best knowledge about how the system should work. This is invaluable insight and can be used to develop highly accurate acceptance tests.
- Automation as a companion: Automated testing is a must to speed up the QA process so that Agile methodologies can be implemented. This will also give you better results since human errors are no longer going to be a problem.
After seeing the impact BDD can have on QA, let’s explore BDD further and how automated testing becomes imperative to achieve it.
![](https://testrigor.com/wp-content/uploads/2024/07/Transforming-with-BDD-IMG1.jpeg)
What is BDD?
Behavior-Driven Development (BDD) is a methodology emphasizing collaboration among developers, testers, and business stakeholders. BDD focuses on specifying the behavior of software through examples written in a shared language that everyone involved can understand.
![](https://testrigor.com/wp-content/uploads/2024/07/Transforming-with-BDD-IMG2.jpeg)
How is BDD done?
![](https://testrigor.com/wp-content/uploads/2024/07/Transforming-with-BDD-IMG3.jpeg)
Benefits of BDD
Here are the top benefits of BDD implementation:
Improved communication and collaboration
Development teams sometimes struggle with clear communication, leading to misunderstandings and features that don’t meet user needs. BDD tries to solve this by using plain language user stories and scenarios. Everyone involved (developers, testers, product owners) discusses and agrees on these, ensuring a shared understanding of the desired functionality.
Example: A product owner describes a “shopping cart” feature with vague details. Developers might interpret this differently, leading to unexpected behavior. In the BDD approach, the team collaborates to create user stories such as:
As a customer, I want to add items to my shopping cart
Also, the scenarios outline specific interactions (adding different quantities, removing items, etc.). This clarifies expectations for everyone.
Enhanced quality and early defect detection
Without clear acceptance criteria, it can be difficult to ensure the final product meets user expectations. Defects might be discovered late in the development cycle, leading to costly rework. BDD emphasizes defining clear acceptance criteria based on the user stories and scenarios. These criteria act as a checklist to ensure features function as intended. Read: Minimizing Risks: The Impact of Late Bug Detection.
Example: A “search product” feature might be developed without specifying how to handle empty search results. This could lead to a user-facing error if no products match the search. But with BDD, acceptance criteria might state:
When a user enters a non-existent search term, the system should display a message indicating no results found.
This clarity ensures the feature behaves as expected.
Increased agility and faster feedback
Traditional development processes might lead to lengthy development cycles and slow feedback loops. It can be difficult to adapt to changing user needs. BDD focuses on breaking down features into smaller, testable chunks. This allows for iterative development with frequent feedback loops. The team can adapt to new requirements or identify issues quickly.
enter shipping address select payment method confirm order
Each story is developed and tested independently, allowing for faster feedback and easier adaptation to changes.
Living documentation and reduced rework
Technical documentation can quickly become outdated, leading to confusion and rework. User stories, scenarios, and acceptance criteria act as living documentation that evolves with the project. This documentation is readily understood by everyone involved and reflects the current state of the software.
Example: A developer might need to refer to lengthy technical documents to understand a feature’s functionality. These documents might not be updated regularly, leading to confusion. The BDD artifacts remain up-to-date and serve as a clear reference point for the team, reducing the need for additional documentation and minimizing rework due to misunderstandings.
Moving forward with BDD 2.0
As fantastic as BDD sounds in theory, it tends to face some major challenges. The common language that’s used in BDD is mostly Gherkin (Given-When-Then syntax), which tends to become a hindrance when the test cases are too complex or too many. Moreover, when it comes to BDD, every “common language” statement needs to be coded. This means that there is a dependency on those who can write this code, which in turn does not give the business stakeholders the flexibility that they need to contribute towards acceptance testing.
Thus, when BDD is applied to practice, you’ll see that the business stakeholder, like the product owner, defines the specifications, the developer writes the code, and the tester ends up playing catch up.
Luckily, there’s a better approach than BDD, that is BDD 2.0 or SDD (Specification-Driven Development). Over here, the development process is guided by detailed and comprehensive specifications created before any coding begins. These specifications describe the expected behavior, requirements, and constraints of the system in a formal and structured manner.
Benefits of BDD 2.0 (SDD)
If you’re opting for SDD, then you can achieve the following:
- Faster test creation: Unlike BDD scenarios, which often require additional coding for automation, SDD specifications are written to be directly executable as tests. This eliminates the need for extra scripting and translates to faster test development.
- Reduced development time: SDD saves development time and resources by streamlining test creation, allowing teams to focus on core functionalities.
- Clear communication for non-technical stakeholders: SDD emphasizes plain English specifications, making them understandable for non-technical users. This fosters better collaboration and ensures everyone involved is on the same page about testing goals.
- Reduced misunderstandings and errors: Plain English specifications minimize the risk of misinterpretations and errors caused by technical jargon, leading to more reliable and consistent testing.
- Improved maintenance: SDD specifications are easier to maintain and update because they are written in plain language. This reduces the effort needed to keep tests aligned with evolving requirements.
- Increased automation: Executable specifications in SDD can be easily automated, leading to faster and more consistent testing compared to traditional methods.
BDD v/s SDD
Feature | BDD | SDD |
Focus | User behavior and scenarios | Executable specifications |
Test Creation | Requires additional scripting for automation | Directly executable |
Complexity | It may require some technical understanding (Gherkin syntax) | Written in plain English (or any other natural language) |
Collaboration | Promotes collaboration with user stories | Enhances collaboration with plain English tests |
Automation | It can be automated with frameworks like Cucumber | Easier to automate directly |
Automating SDD
With the help of the above-mentioned case study, you can deduce the real-world benefits of using methodologies like BDD and BDD 2.0.
“Agility is wholly dependent on automated testing as it gives you the real option to change direction and refactor in response to changing business needs.”
Simon Powers wrote these words in his case study, where he made an accurate, fact-based assessment of how automation can fast-track the SDLC process. Since Agile demands quick deliveries and customers demand high-quality, test automation is one of the best ways to ensure efficiency and speed, without compromising quality.
Finding the right tool to automate test cases in a way that adheres to SDD, and bringing out the best of the practice can be a challenge. Luckily, there’s one such tool that makes it happen – testRigor.
Test automation with testRigor
testRigor is an advanced generative AI-based test automation tool that brings SDD to life, making the test automation process as smooth sailing as possible. Let’s see how it does this.
- Executable plain-English test scripts: SDD demands that the test scripts that are written are in a common language, and what better than using plain English. testRigor can interpret these plain English statements out-of-the-box and execute them for you, thus eliminating the need to write step definitions in code.
- Test anything and everything with a single tool: You can write test cases across platforms: web, mobile (hybrid, native), API, desktop apps, and browsers using the same tool in plain English statements.
- Negligible test maintenance: The test maintenance that tends to arise with using BDD is slashed down to a bare minimum here, again thanks to testRigor’s use of AI.
click "Register" generate by regex "[a-z0-9]{20}\@testrigor-mail\.com", then enter into "Email" and save as "newEmail" enter "password123" into "Password" click "Sign Up" check that email to saved value "newEmail" was delivered check that page contains button "Confirm Registration" click "Confirm Registration" check that page contains text "Successfully confirmed"
Here are few complex testing scenarios which you can run simply in natural languages:
- Reusable Rules (Subroutines): You can easily create functions for the test steps that you use repeatedly. You can use the Reusable Rules to create such functions and call them in test cases by simply writing their names. See here how to create reusable rules.
- Global Variables and Data Sets: You can import data from external files or create your own global variables and data sets in testRigor to use them in data-driven testing.
- 2FA, QR Code, and Captcha Resolution: testRigor easily manages the 2FA, QR Code, and Captcha resolution through its simple English commands.
- Email, Phone Call, and SMS Testing: Use simple English commands to test the email, phone calls, and SMS. These commands help validate 2FA scenarios, with OTPs and authentication codes being sent via email, phone calls, or phone text.
- File Upload/ Download Testing: Execute the test steps involving file download or file upload without the requirement of any third-party software. You can also validate the contents of the files using testRigor’s simple English commands.
- Database Testing: Execute database queries and validate the results fetched.
- Cross-browser and Cross-platform Support: testRigor supports seamless cross-browser and cross-platform testing on real devices, ensuring your application functions correctly on various browsers and operating systems.
You can do a lot more with testRigor. Check out its detailed features list, benefits, and documentation to understand testRigor’s powerful capabilities.
Additional resources
- What is Behavior Driven Development (BDD)? Everything You Should Know
- What is a BDD Framework? The Complete Introduction
- Top 5 BDD Tools: How to Choose Among Them?
- Functional Testing Types: An In-Depth Look
- Functional Testing and Non-functional Testing – What’s the Difference?
- Test Automation Tool For Manual Testers
- How to Build a Test Automation Framework
Frequently Asked Questions (FAQs)
BDD focuses on defining requirements through examples and scenarios that describe the system’s behavior in a shared language, facilitating collaboration. SDD emphasizes creating detailed and comprehensive specifications up front, with a more formal and structured documentation approach.
Living documentation refers to the fact that BDD scenarios serve as up-to-date documentation that evolves with the system. They provide a current and accurate description of how the system behaves.
The structured approach of SDD, with its detailed planning and documentation, makes it easier to predict timelines, resource needs, and project outcomes, helping manage projects with fixed requirements.