Agile Testing – Tools

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
1HudsonCI Framework
2SeleniumFunctional Testing – Integrated with Hudson
3CruiseControlCI Framework
4JunitJava Unit Test
5Nunit.Net Unit Test
6Cobertura / JavaCodeCoverage / JFeature / JCover /Java Test Coverage
7JesterJava – Mutation Testing/ Automated Error Seeding
8GretelJava Test Coverage Monitoring Tool
9TestCocoonC/C++ or C# – reduces the amount of Tests by finding redundant Tests and finds Dead Code
10JAZZJava – Branch, Node, and Defuse Coverage and implements a GUI, Test Planners, Dynamic Instrumentation, and a Test Analyzer
11AntJava – Automation Build
12Nant.Net – Automation Build
13BonfireAgile Testing add-on for JIRA

Agile Test Automation Tools

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 βˆ’

  • Fit
  • Fitnesse
  • Concordion
  • Ruby
  • Cucumber

Fit

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

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

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.

Leave a Reply