Software Testing Classification

There are a lot of terminologies in the software testing area, and these terminologies confused so many software testing beginners. Different methods can be classified from different points of view. So here is a summary of common software testing-related terms, you will have a general understanding of them after reading this article.

1. Testing Classification By Project Process Phases.

As you can see in the below picture, there are four methods in a whole software testing lifetime. All these methods should be run in the correct order. I will explain all these methods one by one.
test-classification-by-project-process-phases-155x300

Unit testing: This method is used to test a single subroutine in a program or a code segment with independent functionality.

Integration testing: This method is based on unit tests. You need to assemble unit modules into a system or subsystem, and then run the test. This method focuses on check whether the interface between the unit modules is correct or not.

System testing: This is a test of the entire product system, verify that the system meets the requirements specification. It also checks whether the correctness and performance of the system meet the requirements or not.

Acceptance testing: This is the last operation before the software is to be deployed. The purpose of this method is to ensure that the product is ready to be delivered to the buyer. It makes sure that every function in this product meets the user’s requirements.

2. Testing Classification By Source Code Visible Level.

Black box and white box test is mainly divided by source code visible level. This is the most basic concept.

Black box testing: Treat the software being tested as a black box. Only care about the input data and the output data, do not care about the inner structure of the software. It only checks whether the software’s function runs correctly and consistent with the requirements specification or not. And whether the program can properly receive the input data and produce the correct output data. The black box focuses on the external structure of the program, regardless of the internal logic structure. It is mainly used to check software interface and functions.

White box testing: The tester needs to step into the software source code, verify every path in the code. Test the software according to the structure of the program. Check whether the internal action of the product is carried out correctly or not according to the design specification. Verify that each path in the program can work correctly as expected.

Gray box testing: Gray box is between black box and white box. It not only focuses on the correctness of the output for the input but also cares about the software’s internal performance. But the gray box is not as detailed and completed as the white box test. It checks internal operation’s state only through some of the characteristics of the phenomenon, events, and signs. Sometimes the output is correct, but the interior process is actually wrong. There are a lot of such cases. So the efficiency will be very low If do a white box test for every case. So it is necessary to take such a method.

3. Testing Classification By Software Test Point.

It is divided into functional and performance testing from different test points.

Functional testing: Checks whether the software’s functions meet the end user’s requirement or not. It is all around software’s functions. This method can be broken down into a variety of subsets. Such as a logic function, user interface, ease of use, installation and compatibility test, etc.

Performance testing: The tester uses an automation tool to simulate a variety of normal, peak, and abnormal load conditions to the system, monitor and record system performance indicators. Software performance includes many aspects, mainly with both time performance and spatial performance.

Time performance: Mainly refers to the software response time. Such as the time required for a login, the time required for a transaction, and so on. It is meaningless to analyze the response time of a transaction leaving a specific environment. It needs to build a specific and independent environment to do a time performance test.

Spatial performance: Mainly refers to the consumption of system resources, such as hardware, CPU, memory, network bandwidth consumption when the software is running.

4. Testing Classification By Automation Level.

Manual testing: Human tester design test cases, run all the designed cases by hand. Use keyboard and mouse to input data into the software, check whether the output is as expected or not.

Automated testing: Human tester design test cases. Then use an automation tool to write scripts to simulate human actions. Save the results in a file or database. Then human tester can review the results to find out software bugs.

5. Smoke, Regression Testing.

Smoke testing: When a new version of the software is ready, only verify the main function of the software before making a large-scale test. We also named this Build verification testing. If the main function verification is not passed, then the test team will not continue large-scale function checks. This can save a lot of human resources and time costs.

Regression testing: Run the test cases which has been verified before with a software’s new release version. Make sure that those test cases can also be verified after the software’s source code changed.  This always occurred at the second round of software testing.

6. What Kind Of Projects Are Suitable For Automation Testing.

If your project matches the below cases, then it is suitable for automation testing. 1). The testing case is clear, not frequently changed. 2). Build verification for a daily build. 3). More frequently regression testing. 4). Software’s UI has few changed. 5). The same test cases need to be run on multiple platforms.

2 thoughts on “Software Testing Classification”

  1. I am not very clear about the difference between functional testing and acceptance testing, can you give me some advice? Thanks a lot.

    1. Functional testing: The functional testing case is designed to verify that the software can work as we expected. All the software functions should be passed successfully. The functional testing should cover all the cases that we can imagine. Our goal of functional testing is to cover all the source code as maximum as we can do.

      Acceptance testing: The acceptance testing case is designed according to the software customers. The testing case should focus on whether the software functions are really needed by the customer or not. If the functions we designed are not acceptable by the software customer, then the software acceptance testing should be failed. This kind of testing usually needs the join of the customer.

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.