In Agile Projects, Testers are responsible for the following daily tasks −
Support the developers in coding, with clarifications on the expected behavior of the system.
Help developers in creating effective and efficient unit tests.
Develop automation scripts.
Integrate automation testing tools / scripts with continuous integration for regression testing.
For an effective and fast implementation of these tasks, a Continuous Integration (CI) system that supports CI of Code and test components is used in most of the Agile projects.
The testers and the developers in agile projects can benefit from various tools to manage testing sessions and to create and submit Defect reports. In addition to specialized tools for agile testing, agile teams can also benefit from test automation and test management tools.
Note − Record-and-Playback, Test-Last, Heavyweight, and Test Automation Solutions are not Agile as −
The test-last workflow encouraged by such tools does not work for Agile teams.
The unmaintainable scripts created with such tools become an impediment to change
Such specialized tools create a need for Test automation specialists and thus foster silos
The Tools that are widely used are −
S.No. | Tool & Purpose |
---|---|
1 | Hudson CI Framework |
2 | Selenium Functional Testing – Integrated with Hudson |
3 | CruiseControl CI Framework |
4 | Junit Java Unit Test |
5 | Nunit .Net Unit Test |
6 | Cobertura / JavaCodeCoverage / JFeature / JCover / Java Test Coverage |
7 | Jester Java - Mutation Testing/ Automated Error Seeding |
8 | Gretel Java Test Coverage Monitoring Tool |
9 | TestCocoon C/C++ or C# - reduces the amount of Tests by finding redundant Tests and finds Dead Code |
10 | JAZZ Java - Branch, Node, and Defuse Coverage and implements a GUI, Test Planners, Dynamic Instrumentation, and a Test Analyzer |
11 | Ant Java – Automation Build |
12 | Nant .Net - Automation Build |
13 | Bonfire Agile Testing add-on for JIRA |
Effective Agile test automation tools support −
Early test automation using a test-first approach.
Writing test automation code using real languages, domain specific languages.
Focusing on the expected behavior of the system.
Separating the essence of the Test from the implementation details, thus making it Technology independent.
Fostering Collaboration.
Automated Unit Tests (using Junit or NUnit) support test-first approach for coding. These are white-box tests and ensure that the design is sound, and that there are no defects. Such tests are built by developers with support from testers, and can be independent of the functionality that is required. This results in delivering a product that may not meet customer requirements and hence with no business value.
This concern is addressed by automating Acceptance Tests that are written with collaboration of customer, other stakeholders, testers and developers. The automated Acceptance Tests are written by the customers or product owners/business analysts reflecting the expected behavior of the product. The developers’ involvement ensures the production of code as per the requirements. However, if the testing is focused only on acceptance, the resulting code may remain non-extensible.
Thus, Automated Unit Tests and Automated Acceptance Tests are complimentary and both are needed in Agile Development.
Agile Tools and Frameworks that support Automated Acceptance Testing are −
Ward Cunningham developed the tool Fit that can be used for Acceptance Test Automation. Fit allows −
Customers or Product Owners to give examples of product behavior using Microsoft Word and Microsoft Excel
Programmers to easily turn those examples into automated tests.
Fit 1.1 supports both Java and .NET.
FitNesse is a wiki, which is a style of web server that allows any visitor to make any edits, including changing existing pages and creating new pages. A simple markup language lets you easily create headings, make text bold, underline, and italic, create bulleted lists, and do other kinds of simple formatting.
In FitNesse, Acceptance Test Automation is as follows −
Express tests as tables of input data and expected output data.
Use FitNesse to put the test table on the page that you can edit.
Alternatively, put the test table in Microsoft Excel, copy to clipboard and then use the Spreadsheet to FitNesse command to have FitNesse format your table properly
Run the test
You get the test results by color coding of the cells in the test table
green cells represent that the expected values are obtained
red cells represent that a different value than what you expected is obtained
yellow cells represent that an exception was thrown
Cucumber is a tool based on Behavior Driven Development (BDD) framework. The key features are −
Is used to write acceptance tests for web applications.
Allows automation of functional validation in easily readable and understandable format like plain English.
Was implemented in Ruby and then extended to Java framework. Both support Junit.
Supports other languages like Perl, PHP, Python, .Net etc.
Can be used along with Selenium, Watir, Capybara, etc.