• TOP
  • QAコラム
  • Software testing overview 〜Quality assurance and software testing〜

Software testing overview 〜Quality assurance and software testing〜

 Do you know what software testing is? Even though you often conduct software testing, we assume that you couldn’t answer the question “what is software testing?”, correctly. One of the most famous Engineer and investor, Marc Andreessen, said that software is eating the world. Recent enterprise activities are largely associated with a lot of softwares, including cutting-edge technology, such as Artificial Intelligence (AI), blockchain, and so on. In other words, we assume that your (or your company) business is probably based on some kinds of informational technologies, which is corresponding to the word of Marc Andreessen. Whoever doesn’t doubt the importance and impact of software to our living life, whereas the importance and impact of software testing are not enough recognized. When do you need software testing? What is software testing based on? Namely, in this article, we described overview of software testing, including impact of software testing, definition of software testing, methodologies of software testing, software testing as an aspect of quality assurance to understand what the software testing is for all business persons.

1. Impact of software testing

 Why should we think about software testing? In short, the reason is that software testing has high impact on our business as aspect of cost. Generally, you know that the activities which are related with development and operation of software, are highly expensive. Interestingly, it is said that the costs of software testing accounts for a large percentage of total costs of software development activity.

One of the famous software testing engineers, Glenford J.Myers said as follows:

It has been known for some time that, in a typical programming project, approximately 50% of the elapsed time and over 50% of the total cost are expended in testing the program or system being developed.

Glenford J. Myers in The art of software testing in 1978

 Boris Beizer, who is also famous software testing engineer, said as follows:

The effort to achieve quality is the largest component of software cost.

Testing and debugging costs range from 50% to 80% of the costs of producing a first working version of a software package.

Boris Beizer in Software system testing and quality assurance in 1996

 Surprisingly, approximately 50% to 80% of the total cost of software development is possibly related with the activity of software testing, referred to the above two quotations. Based on this, if software is eating the world, software testing is also eating a half of the world in the aspect of the costs.

2. Definition of software testing

 Even if you know the importance of software testing, many people probably don’t know the definition of software testing. The definition is not truth, but necessary to understand what the software testing is. We introduce two reasonable software testing definition as below.

Boris Beizer’s definition:

Testing is the primary tool of software quality assurance.

Boris Beizer

 The definition of Boris Beizer’s implies that software testing is one of the activities of quality assurance. The quality is, in this context, software quality, which is relevant to the needs of users of the software (described below sections).

 Steve McConnel, who is an author of software engineering textbooks, also said as follows:

The most common quality-assurance practice is undoubtedly execution testing, finding errors by executing a program and seeing what happens.

Steve McConnel

 His definition is similar to Boris Beizer’s. The difference between them is the mention to errors. Steve McConnel’s indirectly indicates that one of the roles of software testing is finding errors, which causes the higher order of quality assurance. We can’t escape from occurring the errors during software development, and higher volumes of errors lose the reliability of the software, which often leads to the loss of reliability of the business itself.

 These two definitions have in common what software testing is a part of a process of quality assurance activity. To assure the software quality, we spend the cost on software testing, and do the software testing.

3. Quality assurance and software testing

 How do we consider the quality assurance of software? To address the issue, we should know what the software quality is. International standard organization, ISO25000 define the software quality as follows:

Software quality is capability of software product to satisfy stated and implied needs when used under specified conditions

ISO/IEC 25000 : 2014

We take an example to think about two aspects of needs (stated and implied) clarified in this definition.

 Mobile Payment application, such as paypal, apple pay, google pay, paypay, etc., generally give payment, remittance, wallet functions to people. In other words, people who use the mobile payment application expect that the application can our payment of money, our transfer of money, and our holding money. This is a “stated needs”. On the other hand, “implied needs” are not explicitly, namely, non-functional requirement in this instance. When people use the payment application to buy chewing gum, people expect the payment is finished in a few seconds. The requirement(expectation) is not sometimes clearly stated in the explanation of the payment application, however, people who use them expected. This is what implied needs.

 To deep dive into software quality further, quality model gives us some knowledge. One of the software quality models, software product quality, which defined by iso/iec25010, shows eight quality characteristics and sub-characteristics to categorize software product quality.

The details are explained in

 In these contexts, we can roughly say that software quality assurance is to assure the software’s satisfy and implied needs. Based on the definition, we seemed that software testing is the one of the methods and/or processes of assure the implied and satisfy needs.

In the next and subsequent articles, the software testing process and test levels will be explained.