Software test organization and method
Author: Fan Zhihua Source: NEW YORK
With the continuous decline in computer hardware costs, software has a growing proportion of the entire computer system, how to improve software quality is a major topic of the entire computer software industry. Software Test As an important part of software development, it is increasingly valued. In order to find out the mistakes in the program, high-quality software products are produced, and the organization and management of testing work is particularly important.
Software survival cycle
A software starts from the start plan, to discard, called software survival cycle. In general, software survival circumference includes planning, development, running, and can be divided into several smallest phases every other period. The main task of the program period is to analyze user requirements, analyze the main goals of the new system, and the feasibility of developing the system. During the development period, design and implement two major tasks are specific. Specifically divided into demand analysis, summary design, detailed design, coding, test. The coding and testing is the last two stages of the software development period. The running period is the last period of the software survival cycle, and the work staff in this period is mainly to do software maintenance.
Statistics show that more than 40% of the energy is expensive, even if experienced programmers, it is inevitable that there is an error in the encoding, let alone, write errors in design and even analyze the phase. The root of the disaster, whether it is an early latent error or the newly introduced mistake in the encoding. If it is not durable, the light is reduced by the reliability of the software, and the balance leads to the failure of the entire system. In order to prevent problems, it is necessary to emphasize the importance of software testing.
2. Process and method of test
2.1, the purpose of the test
In the classic book "Software Test Skills" of G.J.MYERS, the definition of the test is given: "Program Test is to find errors and execute the process of execution." The purpose of the test is to find errors in the program, to prove that the program is wrong, not the procedure is not wrong. During the software development, analysis, design and coding are constructive, but the test is "destructive", the test can be considered as "final review", in software quality It is important to guarantee. In order to ensure the quality of the software, the ideal approach should be a strict review in the development process of software, according to the results formed by software engineering.
2.2, test process
When the design work is completed, it should be prepared for testing. Generally speaking, a test outline is prepared by a designer designed by the entire system design, clear the content of the test and test, design a complete test case. In order to make a comprehensive test after the system is implemented.
After implementing the procedures developed, submit the test group, tested by the test person in charge, and testing can generally be organized as follows:
(1) First of all, the tester should carefully read the relevant information, including specifications, design documents, instructions, test outlines, test content and testing of test content, test content and testing, comprehensive familiarity, write test plan, design test Use case, prepare before testing.
(2) In order to ensure the quality of the test, the test process is divided into several phases, namely: code review, unit test, integrated test, and acceptance test.
(3) Code will review:
The code will be a process of static analysis by a group of people through reading, discussing and dispute. The conference team consists of a team leader, 2 to 3 programming and testers and programmers. On the basis of fully read the text, control flow charts and related requirements, regulations, and other documents, the meeting, the program, and the programmer will explain the logic of the program, and the enthusiastic discussion is even controversial to reveal the key to the mistake. The location. Practice shows that programmers can find many mistakes that have not found mistakes during the explanation, and discussions and controversies further prompted the exposure of the problem. For example, discussions on a local small problem modification method may find that it is impossible to implicate the function of the module, the module intergeneration port, and system concatenation, resulting in the redefine defined by the demand definition, heavy Design verification, greatly improve the quality of the software. (4) Unit test:
Unit test focuses on checking software design minimal unit-modules, through testing discovery to implement the actual functionality of the module and define the function of the module does not match, and the encoded error. Due to the small size, single function, simple logic, testers may clearly understand the logical structure of the I / O condition and module of the module through module manual and source, and use the structure test (white box method). It is possible to achieve thorough testing, then supplemented by the use of functional test (black box method), making it individually and responds to any reasonable and unreasonable input. High reliability modules are a solid foundation for forming a reliable system.
(5) Integration test:
The integrated test is to test the module simultaneously according to the design requirements, and the main goal is to discover problems related to the interface. If the data passes through the interface; a module may have a harmful impact due to negligence problems; the sub-function may not be generated by the expected main function; individual seems to be acceptable to the error may accumulate Unacceptable extent; the full data structure may have an error.
(6) Acceptance test:
The purpose of the acceptance test is to indicate that the system can operate as a predetermined requirement. After the integrated test, it has been assembled into a complete software system in accordance with the design. The interface error has also been basically eliminated, and then the effectiveness of the software should be further verified, which is the task of acceptance test, that is, the function of the software. Performance is like the user's reasonable expectation.
After testing the software after the above test process, the software basically meets the requirements of development, the test announcement is over, after accepting the acceptance, the software will be submitted to the user.
2.3. Test method analysis
Integrated testing and its subsequent test stages, generally using black box methods.
(1) Basic test cases are proposed by the boundary value analysis method and the (or) equivalent classification method;
(2) Supplement with a new test case with a guess method;
(3) If in the functional description of the program contains a combination of input conditions, it is appropriate to use the causal diagram method at the beginning, and then press the above (1), (2).
The design strategy of the unit test is slightly different. Because when designing the program for module, you can directly refer to the source program of the module. So the strategy of unit testing is always used in combination with white box method and black box method. There are two specific practices:
a, first, a set of basic test cases is proposed in the black box method, and then verify it with a white box method. If you find that the test case generated by the black box method is not satisfied with the desired coverage, add a new test case with a white box method to meet them. The covered standard should be determined according to the specific situation of the module. A module with a higher reliability requires a conditional combination overlay or a path coverage standard.
b, first analyze the logical structure of the module with a white box method, propose a batch of test cases, and then supplemented according to the function of the module.
3. Tester organization
People are the most valuable resources in testing. There is no qualified, active test team, and testing cannot be achieved. To highly highly efficient test tasks, good test engineers should have the following capabilities: 3.1, communication skills
An ideal tester must communicate with everyone involved in testing, with the communication capabilities of technology (developers) and non-technical personnel (customers, managers). It is necessary to talk to the user, and can talk to the developer, unfortunately, these two categories have no common language. The focus of the user's conversation must be placed in the system to handle what and cannot be handled. When talking to the developer, these live renections must be expressed in another way, and the members of the test team must be able to communicate equivalent to users and developers.
3.2, technical ability
In general, developers have a despise attitude towards those who don't understand technology. Once a member of the test team made a wrong concluding, then their credibility will be immediately promoted. A tester must understand the concepts of the test software system and will use those tools in the project. To do this, you need to have more programming experience, and the early development experience can help the software development process has a deeper understanding, from the correct evaluation tester from the perspective of developers, simplify the learning curve of automatic test tool programming.
3.3, self-confidence
The developer accuses the tester to make a fault, and the tester must have enough self-confidence in his own point of view. If you can do anything about yourself, you can't complete what more things.
3.4, diplomatic ability
When you tell someone, he must use some diplomatic methods. Caracian experience and diplomatic techniques help maintain cooperative relationships with developers, and testers also need a certain diplomatic wrist when telling developers. If the method taken is too tough, for the tester, it is equivalent to "winning the war" in the future cooperation in the development department.
3.5, humor
In the case of sophistry, a humorous criticism will be very helpful.
3.6, very strong memory
An ideal tester should have the ability to mine similar errors that have been previously encountered from memory, and this ability is impossible to measure the value during the test. Because many new problems are different from the problems we have found.
3.7, suspicion
It can be expected that developers will do their best to explain all the errors in the past. The test must listen to everyone's instructions, but he must keep suspect until he has seen itself.
3.8, self-supervision
Dry testing work is easy to make you lazy. Only those who have self-supervision capabilities will work properly every day.
3.9, insight
A good test engineer has the viewpoint of "testing to destroy", capturing the ability of user views, strong quality pursuit, focusing on the details. The high-risk zone of the application is determined to make limited testing for key links.
In short, testing is a key stage in the software survival cycle, and is also one of the important activities to ensure software quality. No matter how the importance of software testing and its impact on software reliability, facing the increase in software development, the increase in complexity, and should attach great importance to the organization and management of software testing, to mention software quality.