What is software testing?

Source: Internet
Author: User

"What is software testing" is the most basic question. Anyone who is engaged in software testing can answer this question. In addition, the answers provided by most testers are described as follows:

Software testing is a series of activities to discover problems in a program or software system.

Software testing is to verify that the program or software system meets the design requirements and meets the customer's needs.

There is nothing wrong with this, that is, the performance of the different views of positive thinking and reverse thinking recognized by software testing:

Prove that the software is "not working". In reverse thinking, developers constantly think about misunderstandings, bad habits, program code boundaries, invalid data input, and system vulnerabilities, try to identify various problems. After all, developers strive to build software, so the developer's thinking style is mainly positive. The tester's work can be seen as a supplement to the development work, and reverse thinking is more important, in addition, this work efficiency is also higher.

Verification software verifies that the software is "working". It verifies the correctness of all functional points of the software system one by one with positive thinking. This is a natural extension of the quality control work of traditional industries in the software industry.

However, it is not enough to understand software testing in this way. If you need a more comprehensive understanding of software testing, you can do a better job and adapt to the challenges posed by different software development processes, including Agile Methods brings great challenges to software testing.

Almost 30 years ago. j. the art of software testing, a classic book by Myers, defines a test: "program testing is a process of executing programs to discover errors ". At that time, my understanding of software testing was still very limited. This was also influenced by the waterfall model of software development. I thought software testing was a stage after programming. It is "dynamic testing" only after the code is developed and problems are discovered by executing the program and operating the software like the user ".

If you find that the function design is unreasonable or the performance is poor at this time, you need to modify the requirement or design, and you have to rework to the requirement definition or system design stage, causing a high price. Therefore, it is necessary to extend software testing to the demand and design stages and verify the requirements and design, because the requirement definition documents and design technical documents are also part of the product, that is, the output of results in stages, as long as there is an output, it needs to be verified. Through demand review and design review activities, problems can be found earlier and problems can be corrected in a timely manner. This is a static test, that is, to review, read, or view each other's products during the software development process, and find problems. Through static testing, you can discover problems earlier, eliminate problems in the bud, and promptly remove defects in each stage. Therefore, through Requirement Review, design review, and code review, the product quality can be improved and the cost of the enterprise can be greatly reduced.

Software testing is composed of "static testing" and "dynamic testing". It not only tests the software subject-program, but also checks the phased half-products, ensure that the output in the software development process meets the requirements. Therefore, software testing is a quality assurance activity throughout the entire software development life and an important means of software quality assurance. In essence, software testing or post-event testing is the inspection of products (including phased products and final products), that is, the evaluation of product quality. Check the quality attributes (functions, performance, security, compatibility, and ease of use) of software products to understand the extent to which software products meet the preset requirements in these aspects. In this sense, software testing is a comprehensive evaluation of software quality to determine whether software products can be released. In addition, through a comprehensive evaluation of software quality, developers can understand and determine the mistakes that are easy to make and provide a basis for improving the software development process. Software testing activities throughout the entire software development life can be seen as a continuous evaluation of the software product quality. Therefore, in Agile Methods, continuous integration is not only promoted, but also continuous testing is also called continuous quality evaluation, as shown in 1. More importantly, continuous integration aims at continuous testing and continuous quality evaluation.


Software testing is a continuous Quality Evaluation

At the same time, we know that "tests cannot be conducted without effort", that is, for complex or large-scale software systems, the test coverage cannot reach 100%, even if the code, branches, and conditions can be fully covered, it cannot cover path combinations, various input data, combinations of usage conditions and environments. Therefore, software testing is always risky. The risks of software also come from unclear requirements and inadequate standards. From a risk perspective, software testing is to find the greatest and major risks, so as to eliminate these risks. For example, when your manager arranges a test task for you, it takes two weeks to complete the task based on actual conditions and high quality requirements, now your manager only gives you one week. At this time, you can certainly win more test time, but if your manager says that the time cannot be discussed, you can only give one week, and no more people can give it. At this time, you do not need to reject the task or work overtime, but just try to narrow down the test scope, determine the test work according to the test priority, and tell the manager more risks. That is to say, the two-week test will eliminate more risks, including very small risks and reach a very high quality level. The one-week test will increase the risk, but we can eliminate most of the major risks, but only take some small risks and reach a high quality level. In the risk-based testing concept, first, we need to assess the risk of testing. What is the probability of functional problems? Which of the following are the 20% most commonly used features of users-the "true" principle (also called the "80/20" principle )? What is the impact of a function on users? Then, the test priority is determined based on the risk. Tests with a higher priority are executed first. Generally, tests with the most commonly used 20% function (with a higher priority) are fully executed, low-priority tests (In addition, users do not need to use the 80% feature) are not necessary. If the time or funds are insufficient, they will not do or do less for the time being.

"A good test case is that it can discover undiscovered errors so far", reflecting the economics of software testing. In fact, the economics of software testing is still one of the industry's concerns. The core of economics is to make profits, and the foundation of profit is to have a clear commercial goal. Similarly, whether the commercial goal is correct directly determines whether the enterprise is profitable. In most cases, software testing is performed within the company. It is the company's behavioral purpose that determines the meaning of software testing or the economic aspect of definition. Just as, the definition of software quality is not only stuck in "consistency and applicability with customer needs", but also needs to add other requirements-"on-budget, on-time release, and easy maintenance ". The cost of software testing can be regarded as the cost of security, and the cost caused by Software defects is the cost of poor quality. From the economic point of view, when the cost of security is less than or far less than the cost of poor quality, software testing makes sense. Therefore, it is impossible for software testing to continue without end. That is, the purpose of software testing is "good enough ".
Not perfect. In Agile development and the Internet software industry.

From the perspective of standards, software testing can be defined as a whole composed of verification and validation activities, that is, software testing = V & V.

"Verification" is to verify that the software has correctly implemented the system functions and features defined in the product specifications. The verification process provides evidence that the software-related products are consistent with the requirements for all lifecycle activities, such as correctness, integrity, consistency, and accuracy. It is equivalent to performing software testing activities based on spec to verify the consistency between software products and spec.

Validation is an activity that confirms whether the software developed meets the real needs of users. It is equivalent to maintaining doubts about the definition and design of software requirements, starting from the customer, understanding the customer's requirements, and discovering problems in the definition and product design. This is mainly achieved through various software review activities.

What is software testing? To sum up, software testing is a continuous quality evaluation process that runs through the entire software development lifecycle and verifies and confirms software products (including phased products, the purpose is to discover all kinds of problems in software products as soon as possible, eliminate the risks caused by software quality problems as much as possible, and enable enterprises to gain good competitiveness and benefits.

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.