Best Practices for Agility-2

Source: Internet
Author: User

Part II: Methods and Practices

The essence of Agile testing

Testing is not just about testing the software itself, it also includes the process and patterns of software testing. After the release of the product to find a lot of problems, it is likely that the software development process is out of the question. So in addition to ensuring the quality of the software, the software does the right thing, and the software does what should be done, the Agile Test team has to ensure that the entire software development process is correct.

Agile testing is the continuous revision of quality indicators, the correct establishment of testing strategies, to confirm that the effective needs of customers to achieve a successful and ensure that the entire production process is safe, timely release of the final product. Agile testers therefore need to focus on product requirements, product design, and interpretation of source code in their activities, and the agile testers need to participate in almost all team discussions and team decisions while independently completing each test plan and testing execution. As an excellent agile tester, he or she needs to prepare and execute more tests in a limited time, with a strong sense of responsibility and leadership. What's more, good testers need to be able to expand to do more work that may not be relevant to the test, but are directly related to the team's common goals. He or she will help other members of the team resolve the difficulties, help achieve their intended goals, and develop a high degree of collaboration to help the team succeed in the end. It should be noted that the team's high level of collaboration requires both team members ' bravery and team members ' active cooperation and help. This is true for testers, as well as for developers, designers, and other members.

The method and practice of agile testing
    1. Agile Team organization composition, agile Test team's task and mission;

    2. The Agile development team is testing-driven development-test-driven development, a unique test? or the development?

    3. Incremental iterative testing, which begins with the introduction of agile test process activities and life cycle models, and by learning the classic Agile Incremental Test model, we combine the various activities of agile testing into one. On top of that, we understand the planning and management of testing activities by analyzing and understanding the unique Agile Incremental test model after customization.

    4. And one of the key activities of incremental iterative testing that require special attention, "static testing", which is the most difficult and influential agile testing activity I think. It will test the team to the earliest introduction of product development, testing staff to the first user's perspective to determine the effectiveness of the design, this activity earlier exposed the design flaws, avoid the team's inconsistent understanding of the target, is the most creative value of the test activity part;

    5. Finally, the author will talk about the test plan and management in the test activity, that is, about the test task estimation, the test activity plan, each important test activity time allocation and the arrangement introduction.

However, agile testing is not a one-time, real agile, whether from the traditional test mode to agile testing transition, or the formation of a new team will need to be gradual, but also need team members to cooperate and continuous practice to improve the practice of agile testing principles and methods.

Agile Team

The entire product development team I worked with was divided into 4 relatively independent agile development teams, each with 7 members of the same configuration, each with different functional attributes.

Each Agile team member role consists of:

1 UCD (user centered Designer), mainly responsible for the main product design, its work mainly includes interface design, user's use case design and so on;

1 Visual Designer, mainly responsible for the product interface color collocation, control design and the design of the UCD interface to the initial implementation and beautification;

1 Information Developer, mainly responsible for the editing of information in the product and the writing of important documents;

3 developers, mainly responsible for product implementation;

1 Tester, mainly responsible for product quality assurance.

The 4 Agile teams have the same SCRUM MASTER stakeholder. Typically, you enter an iteration cycle at the same time, develop individual agile plans, and exit at the same time, releasing the respective feature implementations. The work of the 4 teams was integrated into a product that could be released.


Because there are only 1 testers in the Agile team, an arm is needed to develop the test strategy, test plans, test scripts, test case design, and test execution, help the team identify potential problems, and assist in the work of solving the problem. Agile teams ' agile principles are also the norm for testers ' agile activities, and testing also requires good communication with the team, highly iterative activities and constant stakeholder feedback. What is the structure of the team directly related to agility itself? How much is it associated with agile testing?

Agile principles tell us that agile teams are highly collaborative, democratic and equal teams, in order for everyone in the team to work efficiently. The team members under the same function are not more than 3, the best configuration is also different functions under the configuration of 1 heads. Therefore, in such a small, parallel organizational structure, communication is easier to establish, communication complexity is relatively low, compared to 17, 20 people of the team organization, the cost of communication is much smaller. On the contrary, it is hard to imagine how the decision makers will be confused by the many different styles of performers in an agile team.

In addition, having experienced the experience of agile testing, we found that a single agile team had better maintain a smaller "size". This is because agile teams with many testers often need not only a larger amount of actual work to match the large body, but also a larger and more complex team task, losing the confidence of self-management, and each tester will spend a lot of time and effort on internal communication, And more frequent repeated communication that may result from internal lack of consistency.


Each agile tester needs to maintain frequent and necessary communication with other Agile team members to ensure a full and correct understanding of the goals, needs, designs, and respond quickly to changes in demand. In addition, you need to be consistent with other Test members in the functional team. As a result, communication costs have soared, and it will account for a larger proportion of the testers ' work. This internal communication, coordination, but can not be defined as an Agile Backlog project to account for the overall work of the team output. Therefore, the overall test efficiency does not necessarily increase with the input of human resources. Instead of implementing agile principles, I'm afraid the team's organizational structure has become more complex. The so-called "self-management, self-development" of the team can only rely on the traditional management and planning. The author believes that, in addition to the special stage, the agile team needs to "aggregate" more resources to solve the existing high-priority physical problems, the agile team should try to maintain a smaller "size."


If the project has invested a lot of human resources, no matter the design or implementation, the Test team has a large number of people, then we should consider the team can be divided into smaller, the workload is correspondingly more refined, until close to the best combination of our recommendations. At least we think that to do agile testing, we need to make sure that every function in the Agile team has a clear enough scope of responsibility and a certain amount of free space and full authorization within this space. Therefore, in terms of number and function, the composition of agile team must be the key to be neglected.


As we mentioned earlier, it is important to confirm the correctness of the software development process, so as an agile tester, it is more necessary to understand the agile process, for example, testers need to help UCD and developers determine the feasibility of the requirements, testers to urge developers to release the build in time, To ensure that the results of the iteration can eventually be successfully released after passing enough tests. After the build is released, the tester will first verify that the task for the current iteration is complete, followed by verifying the correctness of the product's functionality. In order to be able to free up valuable time in future repetitive and physical labor to cover testing more critical content, such as usability, globalization, testers need to automate part of the testing, innovative, flexible work.


The agile team is a self-managing team, a highly collaborative team, the quality goal is the Test team is the goal of the entire development team, so the development team should do unit testing, the design team will help the test team design test cases as a work within the plan. Here we promote, recommend developers to adopt, popularize test-driven development model.


Test-driven development

Test-driven development shows that the core of iterative development is that developers themselves can first confirm that their requirements are correctly implemented, and that when unit tests cover more content, the quality of the code will be improved. The guiding principle of test-driven development is for developers to write test code based on requirements before writing functional code. Think about how to validate the functionality that will be implemented, write the unit test scripts, and then write enough functional code to meet these test cases until you pass the test. In this way, incremental additions are made to the unit tests and functional code in the iteration until the full functionality is developed.

In unit test activities, testers are also encouraged to participate in the design of unit tests, not only to help developers conceive more unit test cases to expand the coverage of unit tests, but also to learn how to use unit tests, how to reuse unit test cases to regression tests and functional tests, In order to maximize the use of effective resources (such as) and cost-saving role. At the same time, it is possible to further improve the effectiveness of the test and reduce the cost of testing by correlating the unit test scripts organically and automating their execution in the regression test and the user acceptance test.

Unit test scripts are updated at any time due to changes in demand and design. Developers need to stand in the overall position, development always adhere to the first to modify the test script, and then modify the original product code. At this point, it is also recommended that testers participate in the improvement of unit test scripts to help developers make reasonable changes to the unit test scripts, while at the same time starting to modify test plans and test strategies.


Static testing

A good tester can first find the requirements analysis, design ambiguity, omission, the wrong place, can promote the efficient completion of the early work of the team, will greatly reduce the number of defects in the future product quality, and positively affect the final output of agile development. This part of the work is the Test team, development, design team The most tacit cooperation stage, communication is very frequent, it is through positive communication and timely correction and team objectives "error" makes the team more clear its direction, more cohesive and can also play the team's best combat effectiveness. In the author's project experience, often this phase will require an iterative cycle of about 1/4 of the time. This also illustrates the importance of static testing in the Agile test type.

Static testing in the agile development process is the most important work of the pre-development testers of the project iterations. It is worth emphasizing again that during this period the focus of the tester's work is to understand the requirements and use case design carefully, and to validate the feasibility, usability, and validation of the design, which is the best implementation of the requirements.

Testers should lead the team to help clarify the details of the use case. For example, in a design use case discussion, the designer proposed "I need a Overlayer". Then testers should ask: "How to open such a overlayer, how to close?" "" This overlayer need to be a large flat size, whether the adjustment is supported, whether to support the automatic adaptation of the screen size "," Overlayer open and close need to have a dynamic gradient effect? "," Does the Overlayer need a scroll bar? ", and so on.

This process helps the team to identify early design flaws, identify problems, and customize new designs, and the team is able to better understand the importance of the test, as well as the possible "assumptions" about the requirements, thus making the team's goals and direction more clear. This is a very critical process. In particular, for testers, any "hypothesis" is harmful, so it is necessary to clarify unclear and ambiguous questions from the outset.

Best Practices for Agility-2

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.