Introduction:

Faster, better, and cheaper is the expected result of any given hour in any given business case.  Now that many organizations have adopted continuous integration in practice, it is now for testers to get aligned to continuous integration development practices. Continuous integration (CI) is a practice in agile methodologies where all developer workspaces are merged with shared mainline several times a day.

Continuous integration quality control aims to improve the quality of software and to reduce the time taken to deliver it, by replacing the regular practice of following quality control processes after completing all development.

Continuous integration and its evolution

Continuous integration (CI) was first named and proposed as part of extreme programming (XP). Its main aim is to prevent integration problems, referred to as “integration hell” in early descriptions of XP.

CI was originally intended to be used in combination with automated unit tests written through the practices of test-driven development. Initially, this was conceived of as running all unit tests and verifying they all passed before committing to the mainline. Later elaborations of the concept introduced build servers, which automatically run the unit tests periodically or even after every commit and report the results to the developers.

Test-Driven Development (TDD) to Behavior Driven Testing (BDT)

An agile in general is the software development practice to develop the software iteratively.  This is achieved by adding new code at each iteration, but also by refactoring existing code written during previous iterations. This refactoring can be safely achieved only with a strong test system, able to check that the whole software product doesn’t break when new code is added, or when existing ones are modified.

Hence, two separate, but strongly connected systems are created:

  • The software product that is provided to users
  • The test harness helps build it incrementally

Test-Driven Development (TDD) is the best-known practice to create this test harness, enabling the creation of incremental software. TDD is a design technique that drives the development process through testing.

In essence, you follow three simple steps repeatedly:

  • Write a test for the next bit of functionality you want to add.
  • Write the functional code until the test passes.
  • Refactor both new and old code to make it well structured.

Behavior-driven development (BDD)evolved to address (TDD) practice issues. BDD really isn’t all that different from TDD. What BDD adds is a clear emphasis on what it takes to make TDD succeed.

BDD starts by identifying business outcomes and then drills down into the feature set that will achieve those outcomes. Each feature is captured as a “story”, which defines the scope of the feature along with its acceptance criteria.

Behavior-driven Testing(BDT) is a testing approach that evolved from BDD.

  1. Develop test scenarios that cover product behavior as in the BDD feature pattern
  2. Execute test scenarios with manual/automated scripts

Exploratory testing

Cem Kaner, who coined the term in 1983, now defines exploratory testing as “a style of software testing that emphasizes the personal freedom and responsibility of the individual tester to continually optimize the quality of his/her work by treating test-related learning, test design, test execution, and test result interpretation as mutually supportive activities that run in parallel throughout the project

The balancing act: CI, BDT, and Exploratory Testing

Balancing Exploratory Testing with scripted behavior-driven testing is the way to go.

Though BDT, TDD, and BDD help in testing the business outcomes and unit conditions as early as possible in the development life cycle, exploratory testing will help in going out of the box and catching the interface-related testing gaps which we would have missed in TDD, BDD, and BDT test script.

  • Scripted behavior-driven testing – Prepare test scenarios using the BDT approach and integrating with UI automation tools for testing inline web & native applications.
  • Exploratory testing – Reach out of the box by executing exploratory testing to ensure the test completely.

 

?Most Popular Topics

?Top 5 Aspects to consider when testing financial applications

?The Challenges Faced by Today’s Quality Assurance Practices

?Design Patterns In Test Automation World

 

Follow us on Aspire Systems Testing to get detailed insights and updates about Testing!