What is an agile test? Agile testing, of course, is not simply understood to be faster, and certainly not less time tested than before, or reduced or lowered to reduce test tasks. It is also said that only agile development, no agile testing. Here we will discuss:
What exactly is an agile test?
What are the process improvements for agile testing?
How do testers face the challenge of agile testing?
How to develop the corresponding automated test strategy in agile testing?
What is an agile test
If the traditional test process and methods are hard to cram into the agile development process, the test work may be wasted, testers may work overtime every day, and can not play their due role. Agile testing should be a new test flow, method, and practice adapted to agile methods, tailoring the traditional test process to different emphases, such as reducing the proportion of work in test plan, test case design, and increasing communication and collaboration with product designers and developers. In the agile testing process, participate in unit testing, focus on the new features of continuous iterations, perform adequate acceptance testing for these new features, and regression testing of existing functionality relies on automated testing. Due to the short iteration period in agile methods, testers begin to test early, including timely evaluation of requirements, development design, and more importantly, timely and continuous feedback on the quality of software products. Simply put, agile testing is a continuous response to software quality issues, as shown in Figure 1.
Figure 1 The image description of the Agile test definition
Optimization of agile testing process
In the agile approach, the requirements change faster, the product development cycle is very short, we currently use four weeks, that is, each month to release a new version. The development cycle is short and the function is accumulating, which brings a great challenge to the software test, and the software testing process should be adjusted accordingly. For example, our original test specification clearly stipulates that first you build the project's master test plan, and then you build a test plan for each functional task, a rigorous template for the test plan, and a discussion with the product manager, the developer, and other team members (including the Test manager), It will eventually be approved and signed by everyone, and only a test plan will take one months to complete the "draft, review and issue" cycle. In an agile approach, it is no longer required to write a dozens of-page test plan, but rather to write a sheet of test plans for each iteration cycle, and to list the test points (including strategies, specific methods, focus areas, etc.).
In the original test specification, it is required to use Excel to write out test cases, then discuss, review, review and then import the test Case library (online management system). In an agile test, you might not need a test case, but rather a direct validation of use cases or user story, and exploratory testing. and save time for the development of the original function of the automated test script, for regression testing services. Automated test scripts will replace test cases and become the wealth of software organizations. The original test specifications also require two rounds of regression testing, in the agile test, only one round of regression testing. Combining these considerations, the process of agile testing is simple and effective, as shown in Figure 2.
Fig. 2 Summary diagram of Agile test process
In the agile testing process, as mentioned earlier, the test is a continuous quality feedback process, the problems identified in the test are promptly fed to the product manager and the developer, and some key aspects have to be paid enough attention to:
Testers not only have to participate in the discussion of requirements, product function design, but also face-to-face and fully discuss (including the language, video and instant messaging), just through the mail is not enough.
Participates in code Review and appropriately assists developers in unit testing.
Add a link to the process "product walk-through"-testers and product managers, developers, and so on, look at the new features from beginning to end, and visually and quickly identify the problem.
Testing and regression testing strategies for new features
Test tasks can be easily divided into new functional tests and regression tests. In the Agile method, the corresponding strategy is established for the test of the two parts to improve the efficiency of the test and to minimize the quality risk. The strategies for new functional testing include:
Do not need test cases, directly based on use cases and understanding of requirements to complete new functionality validation. Even if you want to write test cases, just ensure that each function point is covered, not too detailed (large granularity).
Continuous validation, once a new piece of code has been completed (code Drop), starts the validation, rather than waiting until all the code is complete to start the test. This also includes participation in unit testing and integration testing.
Implementation of End-to-end (End-to-end) testing to ensure complete business process implementation, but also easy to find business logic is not clear enough, unreasonable and other aspects of the problem.
Read the code to find the problem, to keep pace with the developer's work, and to eliminate the stress of the test cycle.
Based on experience, more exploratory testing, combinatorial interactivity (interoperation) Testing and user scenario testing can be implemented to more effectively detect buried defects.
Regression testing is a difficult problem to be faced in agile testing. Each iteration adds new functionality, and a product can go through more than 10 or even dozens of iterations, and the regression test range is growing, with each iteration cycle unchanged, perhaps one months. Such acceptance tests are very limited in time, so regression testing relies heavily on automated testing because it is difficult to control regression testing to a very limited extent. Of course, there are ways to help reduce the scope of regression testing, such as:
By executing code Diff to understand all of the changes in the code, and then doing the correlation analysis, you can know exactly where the regression test is going to be, and the scope of regression testing will be greatly reduced.
Based on risk and operational surface analysis to reduce the scope of regression testing, such as regression testing is to ensure that the main function point is not a problem, but ignore some details of the problem.
The process of continuous testing, as long as there is time to test, including developers, product designers are involved in the day-to-day trial and test.
Automated test Strategy
Because of the short development cycle, requirements, design and other aspects of communication also takes a lot of time, there is not enough time to develop automated test scripts, at least for new features of the test is difficult to achieve automated testing. At this point, you need the right strategy to improve the effectiveness of the automated test, as shown in Figure 3, and described below.
Figure 3 Strategy for automated testing
Building a flexible and open automated testing framework, such as a keyword-driven automated framework, makes the development of test scripts simple and easy to script maintenance.
Develop automated test scripts for a stable product feature, which is a script to develop automated tests for existing functions that have been completed in the early stages, while most new function tests are performed by hand-tested
Focus on implementing automated testing at the unit level, primarily by the developer, who provides the unit test framework and assists with some of the required basic work.
The requirements of automated testing are well considered in product design and programming, making it possible to complete, automated, low-level testing, interface testing, and to avoid user interface (UI) automation testing as much as possible.
Good IT infrastructure, including automated build packages, automated versioning (BVT), automated deployments, and automatic coverage generation.
Agile testing Tools
Automated testing relies on testing tools, and fortunately, there are many agile testing tools available. Due to space limitations, this is simply a list of some common agile test tools that are not discussed in depth.
Unit Test tools: TestNG, Xunit family (such as JUnit, NUnit), JMock, Bizmock, etc.
Functional Test Automation: ThoughtWorks Twist.
Web function Test (frontend): Selenium ide/rc, Watir, Watin.
WEB Service Test Tool (Backend): Soapui.
Performance test: Jmeter+badboy.
Acceptance Test framework: FitNesse, Tellurium.
Agile Test Process Management tools: Microsoft Visual Studio 2010, including TFS 2010, Scrum templates (MS VS Scrum 1.0), Test Manager 2010, coded UI test, and more.
Test framework for Business Intelligence (BI) applications: Oraylis BI. Quality (+ NUnit).
Other collaborative tools such as Testlink, BugZilla, Bugfree, wikis, etc.
The value of testers in agile methodologies
In agile methods, the leading role of developers is more obvious, system design, programming implementation, unit testing, refactoring and other seemingly crucial tasks are on the developer, testers are vulnerable to marginalization. So how does the value of testers manifest in agile methods?
In the requirements and functional design discussion, testers can stand on the customer's point of view to explain their views, play a "user representative" role, emphasizing the user experience, truly reflects the testers and developers complementary role.
Testers not only play the role of "user representative", but also provide quality feedback, including code quality, interface consistency and so on, through various activities such as requirement discussion and code review, so as to ensure the quality of product construction is paid enough attention to improve the continuity and visibility of quality improvement.
Testers should actively participate in unit testing, even if they do not participate in unit testing, should also urge developers to conduct unit testing to ensure that unit testing to achieve more than 80% coverage, to ensure that the development of good testable code.
In agile methods, a large system development is often decomposed into small subsystems (modules or components), integration testing and End-to-end (end-to-end) testing is more important, testers can play a greater role in these tests.
Before the release of the product, acceptance testing and regression testing is still indispensable, this is the test staff to come into the arena.
After the end of an iterative cycle, the root causes of defects are analyzed and summarized to help developers build good habits, prevent defects and fundamentally improve product quality.
Ideally, testers Master design patterns, have good programming capabilities, and have role swaps with developers, such as being the tester role in the current version development and the developer role in the next version of development. In this way, both sides have a deeper understanding of the work of different roles, eliminate the barriers to communication, and improve the efficiency and quality of development.
Summary
Based on the above discussion and our practice, finally a simple summary of agile testing is:
Agile testing is continuous testing, continuous feedback, play a "user representative" role to ensure that the product to meet customer needs.
Agile Functional Testing = Manual testing of new features (use case validation and exploratory testing) + automated testing of original functionality (regression testing).
The difference between agile testers and developers is so small that ideally, in an agile approach, testers and developers can swap at different iterations.
Agile testing process According to different team characteristics, different product characteristics and different, adapt to local conditions is the best.