How to improve the efficiency of software testing, will you come!

Abstract:
Software testing is an important means to ensure software quality. How to organize software testing and spend the least time and effort to complete the software test so that the quality of the software meets the requirements of users is a problem that software development units need to solve. This article combines engineering practice to explore ways to improve software testing efficiency from the aspects of software testability and testing organization.

introduction:

  • Since the software crisis broke out in the 1970s and 1980s, the development of the software industry has always been accompanied by huge management problems. The entire software industry has problems such as high software cost, difficulty in controlling development progress, difficulty in estimating software workload, low quality, and difficulty in software modification and maintenance. To solve these problems, to a large extent depends on improving the quality of software design, development and testing.

As the scale of software development increases, software quality problems become more and more prominent. Software testing is an effective way to improve software quality. The manpower, material and financial resources invested in software testing are gradually increasing. The ratio of testers to developers in some foreign software companies even reaches 1:1 or 2:1. Therefore, how to improve the efficiency of software testing is a serious problem faced by every software R&D unit and R&D project.

This article combines engineering practice, analyzes the software testability and software test organization, and discusses methods to improve software test efficiency.

1. Factors affecting the efficiency of software testing

There are many factors that affect the efficiency of software testing. This article only discusses the impact of the quality of the tested software and the software testing organization on the efficiency of software testing. Some problems in the software can be found through software testing. Some potential problems in the software cannot be found due to the limitations of test tools, test methods and test time. The problems found in the test need to be corrected by the software developer. From a certain point of view, software testing does not fundamentally improve software quality. The level of software quality directly depends on the design and programming level of software developers. The software written by good software developers has fewer problems and is easy to maintain. Features, but sometimes there will be cases where one software defect is modified and multiple software defects are introduced at the same time. It takes multiple rounds of regression testing to complete the problem to zero. Therefore, although software testing is an effective way to improve software quality, improving the level of software developers and improving the testability of software reflecting the quality of software design and development is the fundamental way to improve software quality.

Software testers’ understanding of project requirements, their mastery of testing theories, testing tools, and testing methods, as well as their understanding of the importance and maturity of the tested software modules in the project, also have a great deal of software testing efficiency Therefore, it is necessary to organize software testing reasonably in the project to improve the efficiency of software testing.

**

Software testability **

Testable software has the following characteristics:

(1) Operability. Operability refers to: the software under test has few errors, which can avoid the overhead of repeated testing; there are no errors that hinder the continuous execution of the test; part of the testing activities should be allowed in the development phase during software design.

(2) Observability. Observability includes: each input has a unique output; the system status and variables are visible or can be queried during operation; the past system status and variables are visible or can be queried during operation; all factors that affect the output are visible; easy Identify the error output; automatically report internal errors; obtain the source code.

(3) Controllability. Controllability means: all possible outputs are generated from a certain input combination; through a certain input combination, all codes can be executed; software testers can directly control the state and variables of software and hardware; input and output formats are maintained Consistent and standardized structure; can easily explain the test, and easily execute and refactor the test.

(4) Decomposability. The software system consists of many independent modules, and each software module can be tested independently.

(5) Simplicity. Simplicity includes functional simplicity, structural simplicity, and code simplicity.

(6) Stability. The software changes are infrequent, the changes are controllable, the software changes do not affect the existing tests, and they can be restored well after failure.

(7) Easy to understand. The ease of understanding includes: the design can be well understood; the dependencies between internal, external, and shared components can be well understood; testers can easily obtain technical documents and grasp design changes in time; technical documents are well organized , Clear and detailed.

Ways to improve software testability

In actual work, the testability of software can be improved through the following ways: reduce and control the change of requirements; strengthen the design of software testability; pay attention to and standardize the writing of technical documents.

Reduce and control changes in requirements

User needs can be divided into the following three levels: basic needs, expected needs and extended needs. The expected demand is explicit, while the basic demand and expansion demand are non-explicit. The so-called expanded demand means that these features are outside the user's expectations and will be very satisfactory when they exist. Due to various reasons, the uncertainty of the software requirements is objective and inevitable. The larger the software scale and the longer the development cycle, the greater the uncertainty of the requirements. The reasons for the uncertainty of software requirements mainly include: users often have uncertainty and ambiguity when expressing their requirements; as the development process advances, users have a deepening understanding of the built application system, and the original vague or unclear With a new understanding of requirements, changes to requirements will be proposed at any time; due to the limitations of developers’ domain knowledge, misunderstandings of requirements are triggered; the process of obtaining user requirements and the description form often adopt informal natural language and natural The essential contradiction in the concept makes the specification description of requirements difficult.

(1) Identify project requirements

Identifying project requirements is the key to the success of the project. In order to reduce the uncertainty of requirements, we should first fully understand the importance of determining requirements. Through communication with users, users can fully realize the impact of software requirements changes on software quality, schedule and cost. Actively participate in the activities of determining software requirements, and achieve the purpose of determining software requirements as much as possible before software design. At the same time, when identifying project needs, in addition to the user's stated needs, it is also necessary to pay attention to the user's basic needs. The user's basic needs are often reflected in the project's domain knowledge and the relevant standards of the project's industry. Practice has proved that the extent to which developers master domain knowledge directly affects the determination of project requirements, and the accumulation of domain knowledge helps developers determine project requirements.

(2) Requirements documentation and requirements review

In accordance with the requirements of software engineering, users should formally submit requirements documents to the developers. The developers perform requirements analysis based on user requirements to form product requirements. Both user requirements and product requirements must be documented and reviewed to find unreasonable requirements as early as possible.

(3) Demand management and control of demand changes

In the system development process, the demand should be managed. First, the demand database and demand tracking matrix should be established, and the corresponding relationship between the work products and demand at each stage of the development should be reflected in the demand tracking matrix, and the demand should be tracked in both directions.

(4) Use software requirement management tools

The use of demand management tools can increase the degree of automation of the demand management workflow, so that demand management can be effectively implemented in the project implementation process. Demand management tools can help the team to collaborate effectively throughout the project life cycle, and timely transmit demand change information to each member of the team, so that all members of the cross-project team can grasp the necessary detailed information of the demand, and Software project planning, project tracking and supervision implementation management.

Strengthen software testability design

At the project design stage, attention should be paid to the design of software testability. The person in charge of the project can put forward specific requirements for the testability of the software according to the specific conditions of the project, and specify the software comment rate, software module scale, module cycle complexity, basic cycle complexity, number of operands, and the number of process exits. Strictly follow the specifications during the software design and programming stage, which can effectively improve the efficiency of software testing. Practice has proved that if the software testability design is not carried out in the project design stage, it often takes huge manpower and material resources to modify the software according to the testability requirements after the software is completed. At the same time, a large number of modifications will also affect the quality of the software. To adversely affect.

Pay attention to and standardize the writing of technical documents

Technical documentation is not only a means for developers to communicate information, but also a basis for testers to conduct tests. Therefore, software-related documents should be described clearly and detailed, organized reasonably, and updated in time according to changes in requirements and design. At the same time, in order to provide independent testers with more information, the importance of each software module, reusability, and test history can be added to the technical documents, so that independent testers can allocate energy reasonably, conduct key tests on important software, and reduce Unnecessary duplication of work improves test efficiency.

3. Software testing method and organization

Software testing method

Software module level testing is divided into white box testing and black box testing. Black box testing focuses on testing the functional requirements of the software, trying to find functional defects or omissions, interface errors, data structure or external database access errors, performance errors, and initialization and termination errors. White box testing relies on rigorous inspection of program details, testing the logic path of the software, and checking the "state of the program" at different program points to determine whether the expected state or the state to be verified is consistent with the real state. In software testing, black box and white box testing methods are often combined to complement each other.

Software tester

Software testing can be carried out by software developers, independent testers or users. When organizing software testing, it can be organized according to the characteristics of different personnel, so that various tests complement each other.

Software developers are familiar with software requirements and tested software, understand the importance and interrelationship of each software module, understand the historical conditions of each software module's previous testing and modification, and can conduct targeted testing; software developers communicate with users more Convenient, software errors inconsistent with requirements can be found in the test. However, developers are eager to prove that their programs are error-free, developed in accordance with the needs of users, and can be completed in accordance with the scheduled schedule and budget, which will affect the developers to complete related testing tasks.

Independent testers should have a strong theoretical level of testing and testing experience, proficient in software testing tools, and be aware of the functional requirements of the software to be tested before they can perform a systematic and comprehensive test on the software. However, independent testers sometimes lack professional knowledge in the corresponding field. The main test basis is the user's technical requirements and the documents formed by the developers during the software development process. On the one hand, these documents lack a description of the user's basic needs; on the other hand, Independent testers often need to understand requirements through developers, so sometimes it is impossible to find errors in software not meeting requirements in software testing. But this kind of error is often the most serious from the user's point of view. At the same time, independent testers do not have a deep understanding of the importance and interrelationship of various software modules. Sometimes it will affect the test efficiency.

When conditions permit, the software can be submitted to users for trial after completion. Users operate according to actual use requirements during the trial, including various normal operating procedures and abnormal operating procedures. The user trial can effectively check whether the software meets the user's needs. At the same time, the reliability of the software is also tested simultaneously during the user trial. Because the user trial method is very close to the actual use method, the software that has been praised by the user trial can basically meet the actual use requirements in the future.

Ways to improve the efficiency of software testing

In order to improve the efficiency of software testing, testers need to be familiar with the domain knowledge involved in the software, understand the importance and maturity of software functions, and master the testing theory and tools; users are the dominant force in verifying the correctness of requirements and should give full play to users’ positive effects.

When organizing software testing, the efficiency of software testing can be improved through the following aspects:

According to the characteristics of different testers, the test division is carried out. The unit test should be carried out mainly by the software developer to ensure that each unit can complete the designed function. In many cases, integration testing can also be conducted by developers. When the software architecture is completed, an independent testing agency will intervene;
software testers should pay attention to communication with users, find out unreasonable problems in demand analysis and understanding as early as possible, and avoid spending a lot of resources and time to make corrections in the future;
for software developers, It is necessary to strengthen the training of testing methods to improve the efficiency of self-testing;
when selecting independent testers, try to choose people who are more familiar with the knowledge of the software under test;
independent testers should participate in the development of the project during the demand stage of software development. In order to better develop test plans, determine test objectives and write test cases. By identifying key project modules and high error rate module that allows testing to focus first on the most important part, to avoid spending too much time spent on non-essential test module and no time to test important module of the situation;
is If a problem is found in the test software during the test, organized analysis and research must be carried out, and then the pros and cons shall be weighed for standardized modification, avoiding repeated modifications and repeated testing;
standardized software configuration management, through management and technical means, software and document version control, Ensure the effectiveness of software testing.

Concluding remarks

Practice has proved that the efficiency of software testing can be effectively improved by improving the testability of the tested software and rationally organizing the software testing work. With the recognition of the importance of software testing, the proportion of software testing in the entire software development cycle is also increasing. In order to eliminate defects and errors in the bud, software testing will gradually develop into activities that must be carried out at every stage of software development and need to be repeated. A lot of work in software testing is mechanical, repetitive, boring and non-intelligent, but gradually strengthening the research and promotion of software automation testing will be the development trend of the software industry in the future.

I recommend a software testing exchange group here, QQ: 642830685. The group will share software testing resources, test interview questions and industry information from time to time. You can actively exchange questions in the group, and technical experts will answer questions for you.

Guess you like

Origin blog.csdn.net/weixin_53519100/article/details/112795007