Like development framework, the testing framework also helps to determine a strategy for testing. A testing framework helps teams to organize their test suites and in turn, helps to improve the efficiency of testing. There are multiple testing frameworks used in waterfall model like –
- Keyword driven
But when we shift from waterfall model to agile model we experience a considerable amount of difference in delivery model. And common testing frameworks do not work well with an agile framework.
Why are Testing frameworks not a good fit for the agile framework?
In the normal waterfall model, we get the working version of the software only at the last phase of the lifecycle. Whereas in agile development framework test execution starts early in the SDLC where we need short and frequent test cycles that deals with frequent change requests. There are two key areas where common testing frameworks fail to achieve success goals in agile framework model –
- In agile model automation also plays a crucial role. Continuous integration, unit testing, and continuous regression testing are the key characteristics in agile testing. Although any of the testing frameworks can be used in this model, it becomes difficult to maintain the automation test suite with the changing requirements.
- Another shortfall with conventional testing frameworks is -in this model, it cannot provide maximum code level and functional coverage.
What is the Agile Testing Framework?
A typical agile testing framework stands on two pillars –
- Test Driven Development (TDD) – This is a technique in which automated unit tests directs the design of software. Hence, a test-driven development ensures that the software meets the actual requirements, hence to assure it works properly. This, in turn, decouple the dependencies and just not target to find the defects like traditional testing. Hence, the overall testing process becomes faster and meets the agile delivery timeline. Along with it, TDD enhances the confidence of testers as they don’t need to waste time for debugging. Almost 99% possibility of achieving correct results is expected in such development. The steps involve in this process –
- The testing is based on repeating very small development cycle
- It tests for automated test case that may fail initially and defines a desired improvement or possibility of adding new function
- For the testing purpose, least amount of code is injected in the test suite.
- Refactoring of the fresh code is done for acceptable standards.
- Behavior-driven development (BDD) – Behavior-driven development is the combination of test-driven development with automated acceptance testing. It focuses on system behavior rather than its implementation aspects. Hence, it gives a clear vision of system behavior to the developers making testing process more effective and efficient. It is scenario based and defines acceptance criteria. It typically follows given-when-then-and template.
While automation testing plays the key role in agile framework,
- TDD invests in automated unit test cases
- BDD invests in automated acceptance tests
There are two more important parts of agile testing framework –
- Unit testing – Unit test cases are written using a combination of TDD and BDD. While TDD is used to write test cases for each public methods of code, BDD verifies the behavior of each method with different input values and scenarios.
- Technical Debt – A clean code makes life easier for future changes. Hence, a good agile testing encourages restructure and refactoring of code to eliminate messy code. This is known as technical debt. Technical debt fixing involves following –
- Test Driven Development
- Refactoring of code
- Automated Tests for both Unit tests and Functional Tests
- Continuous Integration
- Code/Peer reviews
- Agile best practices
The stages of Agile Testing Framework
Typically agile testing framework consists of 3 stages –
- Agile Planning Stage – In this stage, BDD test cases are written using project management tools like JIRA, Visual Studio, and Rally etc.
- Agile Implementation stage – The following works are performed at this stage –
- BDD tests pulled or run with tool like jbehave, Cucumber, Spinach
- Functional test cases and data-driven tests are written at this stage using tools like Selenium
- Services tests are run using tools like REST Assured
- Continuous Integration(CI) process run using tools like git, Sonatype etc
- Reporting of build status, test results and quality using tools like sonarQube
- Agile Regression /Release stage – This is the most important stage of this framework. Following testings are performed at this stage –
- Regression Test
- Performance Test
- Security Test
- Web accessibility Test
- Web Consistency Test
Performance testing typically covers load testing. In waterfall model testing coverage of middleware and front-end performance usually fall short. Whereas in agile testing framework there is a scope for integrating test tools like Selenium and JConsole. This helps in monitoring and measuring JVM performance. On the other hand with tools like Selenium, firebug, Netexport and HAR one can measure the front end web performance. Furthermore, in this framework, there is the scope of integrating tools like BlazeMeter and JMeter which can help in load testing monitoring.
Hence, in a nutshell, testing coverage at each sprint in agile framework covers the following with tools –
|Testing area||Tools that can be integrated|
|Functional Testing||Selenium, WebDriver, White and Sikuli|
|Backend Testing||JDBC connected SQL testing tools|
|Mobile Testing||IOS Driver, Selendroid, Appium, Sikuli|
|Performance Testing||JMeter, JConsole, BlazeMeter, HAR, netExport, Selenium|
|Web Accessibility||Selenium, WAVE|
Testing methodologies followed in Agile Testing Framework
Agile testing follows different methodologies based on different agile development models –
- Extreme programming(XP)
- Crystal method
- Dynamic software development model (DSDM)
- Feature driven development(FDD)
- Lean software development
Let’s get an overview of the each testing process flow.
Scrum testing process: In this process releases follow iterations which are nothing but shorter development cycles. Each iteration is known as Sprint. The team plays a key role here and the entire process accomplishes a collaborative environment
The key considerations in this process are –
- All details are listed in Product backlog to get end product
- Team selects backlog based on risk classifications and business value during each Sprint. It is then considered as Sprint backlog
- Team follows sprint backlog for their work
- Daily stand up calls between client and team happen to expedite the process.
- Regression test cases are prepared based on critical business areas only.
- Automation of this regression set is almost a must
- The team delivers the product with right functionality at the end of the sprint.
eXtreme Programming (XP)
This method is useful when the requirements change frequently and the client is not sure about the exact functionality of the developing system. In such scenario, frequent releases with shorter development cycles are advised which are known as iterations. The usual time period of such iteration is 14 days. Each iteration includes some major risk driven business functionality. And it is built and released through coding, unit testing, system testing and checkpoint to meet the criteria.
The XP method typically consists of 6 phases – planning, analysis, design, execution, wrapping, and closure. The testing covers 4 stages of this method.
- In design phase tasks are defined for business requirements based on their priorities. For each task test scenarios are prepared and required automation framework is established for regression testing.
- In execution phase testing team first run unit testing manually and generate reports on the bugs. Later the manual test cases are executed in automation suit.
- In wrapping phase, regression testing is performed and the sprint is released.
Crystal methodology: The main development is divided into two or more cycles. In each cycle subset of the requirements are implemented using one or more program test integrate iterations.
Dynamic Software Development Method (DSDM): This is an iterative, incremental approach which is largely based on the Rapid Application Development (RAD) methodology. During testing continuous integration and quality assurance is conducted in-line. Also in the testing phase, functional model and design model iterations are performed.
Feature driven development (FDD): It is one of the popular testing method followed in agile development. Testing is done based on design and builds features. Moreover,testing is performed for each feature. It is a user-centric approach where end users are directly involved during testing. Each sprint is very short typically 2-10 days. It is a very scalable approach where documentation plays the key role in communication rather than a meeting.
Lean Software Development: This is a “just in time production” approach. The main target of testing in this method is to increase the speed of software development while reducing the cost. Improving the code is a simultaneous job with testing.
- Using issue tracking tools final or intermediate software is tested. It is an automatic process that detects the defects.
- Once the bugs are detected reporting is done on that. This also follows an automatic process.
- Bugs are fixed at the next stage.
- Another round of testing is performed once the bugs are fixed. Because the main goal of the testing is to improve the quality.
Tools those can be integrated into Agile Testing Framework
An Agile Testing framework can be integrated with many Application Lifecycle Management (ALM) tools like TeamForge, Jira, Rally, and TFS. The agile testing framework can be tailored as per the development environment. Different tools those can be integrated into agile testing framework are –
|Tool name||Used for|
|Jenkins, Hudson, Bamboo, and TFS||CI integration|
|TeamForge, Jira, Rally, and TFS||Agile|
Quality and Technical Debt Reporting
|Maven, Nexus, and GIT||Implementation Tool Integration|
Conclusion: Agile Testing Framework gives better outcome with every sprint of agile release. Moreover, with the enhanced scope of plugging in automation test tools help to perform more automation testing profiles. In this framework, both the SOAP and REST protocols are easily tested for web services. Furthermore, with service integration in this framework creating and inserting test data during functional web testing become very easy.