Agile Development & quality management


Agile Development & quality management

1、 Quality management
1.1 what is quality management

The explanation of Baidu entry is as follows:

Quality management refers to all activities that determine the quality policy, objectives and responsibilities and realize them through quality planning, control, assurance and improvement in the quality system.
In order to carry out market research, design, manufacturing and after-sales service at the most economic level and under the condition of fully meeting customer requirements, it is an effective system integrating the development quality, quality maintenance and quality improvement activities of all departments in the enterprise.
Quality management is “the coordinated activity of commanding and controlling the organization in terms of quality”.

1.2 quality management revolution

The first revolution of quality management was to establish a special QC department.
The second revolution was to establish a special QA department.
The third revolution is to transfer all QA work to all functional departments (production, procurement, logistics, marketing, etc.).
The fourth revolution is the elimination of specialized quality departments, or 4.0 of quality management.

1.3 quality management 4.0 – eliminate the quality department

In traditional quality management, QA has three core tasks (audit, tracking and summary) and four roles (lawyer, police, doctor and teacher), but quality management 4.0 has changed. The role of QA personnel should change from nanny to coach, from focusing on product quality to process quality. This creates a good cycle:

When QA personnel are no longer directly involved in solving product quality problems, the development department will take the initiative to assume such a role. Logically, developers should know the problem better than quality personnel.
When the development director also begins to pay attention to the optimization process (the role of QA), the QA of the quality department can be upgraded to the role of QM, that is, whether the framework design of the quality management system is reasonable and whether each system needs to be integrated.
The mission of quality personnel is to eliminate the quality department, which seems to be a paradox, but the actual result is this.

When the product quality control is undertaken by the production personnel and the business process optimization is the responsibility of each functional department, the quality department should die. This requires the quality personnel to be aware of this.

2、 Agile Development & quality management

Agile development will not be discussed here, but will be shared in another article

First of all, we need to understand that whether it is agile development or waterfall development, quality is a concern of the R & D team, and quality management also needs to be carried out. Any team that doesn’t pay attention to quality can’t develop for a long time.

2.1 relationship between agile development and quality management

Agile development focuses on agility, responds quickly to changes, and reduces the impact of Internet development;
Quality management focuses on quality, ensures product quality and brings long-term benefits.
On the surface, there seems to be no correlation between the two, but in fact, there is a complementary relationship between the two. Quality management provides agile foundation for agile development, and agile development provides cultural communication for quality management. How to understand?

Agile development focuses on rapid response, but long-term agility is the real agile!
If you want to achieve agile, you will find many bottlenecks after a period of time. For example, new types of requirements are not supported by the system architecture and require system reconfiguration; In order to respond quickly and go online iteratively, the development ignores the unit test, the test ignores the coverage, and there are many online problems. Quality management is to provide the cornerstone for agile development and make agile development advance rapidly for a long time.

2. the central idea of quality management is to eliminate the quality department and turn quality into an issue of concern to all.

Agile development requires everyone to participate. It is no doubt that convening everyone through agile development is not a better way to implement the idea of quality management

2.2 how to do quality management in Agile Development

As mentioned above, the era of quality management 4.0 has begun. It is necessary to combine agile development with quality management 4.0
Here, I think of the two “upper quality limit and lower quality limit” when I sorted out the “left shift” of the test

If agile development is regarded as a “car” and quality management as a “road”, then what the team should do is “drive the car to the destination“

Determine and comply with lower quality limits
Defining the lower quality limit means that no matter how bad things are done, as long as the lower quality limit is met, the product can be considered as qualified.
Combined with agile development, it can respond quickly on the basis of strictly abiding by the lower limit of quality, which improves response efficiency and ensures qualified quality. As long as the “road” exists, the “car” can run.
Constantly challenge the upper limit of quality
The challenge of quality online is to make the product quality output better through a better way
When combined with agile development, improving the upper limit of quality is like changing “stone road” into “asphalt road” and then “highway”, so that “car” can be replaced by “sports car” to make agile more agile.
Quality management should not become a burden of agile development
It is sufficient to provide a suitable “road” for a specific “vehicle”. The team’s energy is limited. It needs to “drive” and “build roads”. When the “car” is still “Alto”, it is not necessary to build a “highway” for him. If we focus on “building roads”, we have no energy to “drive”. After all, the focus is “the car arrives at the destination”
Everyone on an agile team should be involved in quality management
”Both the car and the road are available, but it is still early to drive the car to the destination. Be careful that there are pits on the road!
Agile development provides a fast tool, but it is only a tool after all. To achieve the real goal, we need to pay attention to the process.

2.3 role assignment of quality personnel in Agile Development

Traditional quality management roles (QC, QA and QM)

Agile Development & quality management


According to the ultimate goal of quality management 4.0, “eliminate the quality department”, quality personnel are no longer needed.

However, to achieve this ultimate goal requires a lot of preliminary work, so QM, QA and QC personnel are still indispensable or even very important at this stage. They need to continue to strive towards “eliminating themselves”

QM is responsible for establishing an agile quality system. It needs to truly understand quality management, agile development and define the quality system structure. If necessary, QM can be expanded into an organization (including boss, director and directors at all levels)

It is the same as the upper limit of quality. QA personnel bring the continuous improvement of quality online to the team through the dissemination of quality culture and continuous improvement.

Similarly, QC personnel provide the lower limit of quality for the team through functional testing, exploratory testing, etc

In fact, the role of quality personnel in agile development has taken half a step forward compared with the role positioning in the figure above. QC needs to do some QA work, QA needs to master the foundation of QM, and QM moves from department to full staff organization. The most basic QC inspection is about to be eliminated, so in agile development

If you nail yourself in the position of traditional QC, you are basically dead.
If you focus on QA, you can improve your systematic thinking mode and make you have a clear understanding of quality.
If you set yourself on QM, you will be the organizer of the quality system

3、 Agile development &qa
3.1 agile development &qa

Agile development requires the team to be responsible for the quality of software products, rather than a special person with a QA title. QA in agile can be all team members involved in agile development, not necessarily specific full-time testers. However, when no team member takes the initiative to take charge, someone still needs to take the lead in this role, and the test leader is the most suitable candidate.

So what can QA people do in agile development?

Collaborative determination of lower quality limit

Collaborative determination of agile processes
Agile development does not mean that there is no process. It just turns many links with small benefits into face-to-face communication, reducing a lot of unnecessary time waste. What QA needs to do is to participate in the formulation of the whole agile process, identify the necessary links for retention, and ensure the process quality
Jointly determine the output standards of each link
(1) Agile development may make product personnel remove MRD documents, but PRD documents are indispensable. There must be certain standards for PRD output to ensure the quality of product links flowing into R & D
(2) Agile development advocates development modes such as TDD and BDD. The purpose is that developers know their own code better and improve the quality of testing by allowing developers to test themselves, so as to appropriately reduce the integration testing time. Through the formulation of unit test coverage rate, pass rate and other standards, ensure the quality of the development link flowing into the test link
(3) As the final guardian of the product, testers are the last line of quality defense before facing users, and there should be strict exit criteria to meet the qualification of the product.
(4) As the deployer, the operation and maintenance personnel need to implement the system package on the shelf, database cutover and other matters. The direct deployment of the server also needs the deployment problems caused by the launch of the standard and fewer personnel errors
Guaranteed quality lower limit

Some standards formulated still need to be supervised and complied with. After all, people always like to be lazy. There is no way for everyone to consciously abide by them without a period of supervision. Therefore, QA should supervise the team’s compliance with the lower limit of quality, and let all people develop habits slowly
When necessary, QA should play the role of Scrum master, participate in all links of the agile process and guide team members to move forward correctly, so as to improve quality
Identify risks and make key recommendations

QA participates in the whole development process and has the most comprehensive understanding and grasp of the whole system. It is also easier to find out the potential risks in each link, and put forward and continue to pay attention to them
Participate in the whole development process, and put forward some key opinions on the plans of products, development, testing, operation and maintenance from the unique perspective of quality personnel
Spread quality culture and encourage to challenge the upper limit of quality

QA participates in the whole development process. It is not necessary for QA to communicate with the personnel in each link. QA needs to continuously spread the quality culture in these exchanges
QA needs to encourage team members to challenge the quality launch while spreading the quality culture.
Data statistics, continuous improvement

Data statistics, which is a skill that QA must master. Take the initiative to find statistical objects, analyze different statistical data, and find problems in agile development, products, etc
Continuous improvement, will participate in the problems found in the development process and data statistics, and organize continuous improvement to continuously improve the overall quality

3.2 what qualities do you need for agile QA

Not talkative? Stop being agile QA
If you used to work in a quiet and focused way to find software defects, you may experience a long time of maladjustment when entering an agile team. Because agile QA can’t passively wait for the software to be completed and handed over to you for testing. It can’t find defects and wait for developers to repair them spontaneously. You need to start from the source of the software and participate in the whole life cycle of the software.
Bad attitude? Give up as soon as possible
I don’t know if you have ever experienced such a scene. In some small restaurants, when waiting for seats is serious, you need to stand next to a guest who is about to finish the meal and wait for an empty seat. However, some people can ignore the anxious waiting people who occupy their seats and chat attentively after the meal. Although this behavior is not very good, it is understandable. From another perspective, this kind of person’s psychology is very strong, because few people can go their own way regardless of others, and this “ability” is very useful for agile QA.
If you worry about other people’s ideas everywhere, it will make you look around and think about it, which will directly affect your judgment and decision.
Not interested in PM, business, code, architecture? Agile QA is not for you
Agile QA needs to be familiar with the whole system and the business, so that it can help business analysts and teams find unreasonable or missing parts of the business from the perspective of QA.
In addition, if you can have some coding ability, it is also very helpful for agile QA. Of course, the technology industry is specialized, and it is not required that every QA can write code, but they should have a certain interest in the code, be willing to listen to developers explain their logic and implementation, and understand their ideas by asking questions.
Don’t manage priorities? It’s hard to do agile QA
The biggest challenge of agile QA is that it works on many things at the same time all the time. Agile QA needs to participate in the development process, communicate with many people, and pay attention to risks all the time. Managing your work tasks and prioritizing are essential qualities
4、 Agile Development & Testing
The relationship between agile development and testing has to be mentioned,
Understanding of agile testing it is recommended to read what you know about agile testing

4.1 agile testing & Testing

What do testers need to do in agile testing?
Analyze user needs and act as po (product leader)
In agile development, Po has a great responsibility, but Po can also be busy and missing. When necessary, agile testers should act as po agents to help product owners supplement, refine requirements, and improve user stories.
The object of the tester is the product. To truly ensure the quality of the product, understanding the requirements is the most important.

Not only writing test cases, but also testing requirements (defining quality)
Agile testing not only needs to write test cases, but also needs to test whether the product requirements can be fully understood, transformed into test requirements according to product requirements, and transformed into test points according to product requirements.
Conduct demand management for testing, and transform testing requirements from the perspective of R & D, which is more conducive to clarifying business requirements and enabling developers and other testers to have a deeper understanding of requirements.
At the same time, the transformation of test requirements is also the definition of quality. Test requirements must be added during the transformation of test requirements. This is the definition of requirement quality

Maintain quality perspective and participate in process review
There will be some necessary reviews in the agile development process, such as requirements review, design review, etc. As an agile tester, we should not only participate in these links, but also maintain the perspective of quality development, such as whether the requirements are not closed-loop, whether the outline design is imperfect, whether the requirements are not clear, whether the design is unpredictable, and so on.

Work closely with customers and developers
According to the nature of work, as the second person in the team who knows the needs best, testers need to communicate and cooperate with customers (businesses) regularly or often; And as a secondary requirement translator, you also need to work closely with developers.
Release demonstration (UAT acceptance) and other links have established a channel for testers to communicate and cooperate with customers (businesses). It is necessary to grasp the communication channel. Direct communication can make you better understand your needs
Both the review of test requirements and the requirements of the development process require close cooperation between testers and developers, so that the requirements discussion and problem positioning become fast and simple

Provide quick feedback
Agile development advocates rapid communication and feedback, which is the same for testers. Quickly feedback the problems of the system, so that Tu ah can quickly respond to them.
For example, pay attention to smoke test, and quickly verify whether the system can be implemented, so as to avoid wasting time when the test cannot be carried out; According to more detailed test requirements, quickly check and verify whether there are development omissions, and supplement them as soon as possible; The problems encountered in the test shall be quickly fed back to solve; Fast feedback of test progress, reminding operation and maintenance personnel to prepare for intervention in advance, etc

Standardize tests with test strategies
As for the role of quality personnel in agile development, testers should ensure the lower limit of quality. The quality of testers is an important factor in how to ensure the lower limit of quality. However, you can not guarantee that the quality of all testers can be improved rapidly. At this time, the standardized testing process is the most fundamental guarantee.
Test strategy is a very big topic. I recommend reading the “cultivation of test architects” by teacher liuchenmei, which has a more in-depth explanation of test strategy. I have also read and shared this book once

Integration of roles of tester and analyst
Agile testing requires testers to integrate testers and analysts, analyze the rationality of requirements from the perspective of testing, and analyze the testability of the system from the perspective of testing.
Analysts are used to dissecting problems, while testers look at problems with a “critical” eye. The integration of the two is to dissect problems to find internal “defects”

Master exploratory testing (appropriate exploratory testing)
First of all, we need to understand exploratory testing. The simple understanding of exploratory testing is to continuously explore the boundary, logic boundary, deployment environment boundary, system boundary, etc. according to the system logic after the functional test is completed, so as to find more problems.
Appropriate exploratory testing. Exploratory testing is not an irregular blind test. It also needs regular conditions. Teacher liuchenmei also mentioned this in his book “the cultivation of test architects”.
Don’t fall into exploratory testing. It’s meaningless to explore your underlying basic functions before they are tested

Automated regression testing
Agile development improves efficiency, but for testers, it also needs to improve efficiency. By automating the regression of a large number of old requirements of old versions, a lot of time will be saved soon. Can it be used for exploratory testing of new functions and new requirements? But remember that automated testing in agile development is also about efficiency.
For UI automation, it is recommended to work with the front end to standardize the page element ID and jointly formulate a set of ID specifications to facilitate the maintenance of UI automation. Po mode is indeed a good choice
Compared with the UI, the interface may be more suitable for automation first. It can also learn from the Po mode management of the UI to reduce the maintenance cost

BDD (digression)
Many companies will introduce the TDD development mode, writing unit tests before writing code; If the TDD is completed, you can continue to enter the BDD. For business needs, the white box may be more likely to find problems than the black box. After all, it is more likely to call internal functions directly than the whole system to find problems.
Copyright notice: This article is the original article of CSDN blogger “Mr. Xiao Feng” and follows the CC 4.0 by-sa copyright agreement. Please attach the original source link and this notice for reprint.