There are a lot of terminologies in software testing area, and these terminologies confused so many 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 read this article.
Divide by project process phases.
As you can see in the above picture, there are four methods in a whole software testing life time. All these methods should be run in the correct order. I will explain all these methods one by one.
- 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 test. You need to assemble unit modules into a system or subsystem, and then run the test. This method focus 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 check whether the correctness and performance of the system meets 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 make sure that every function in this product meets the user’s requirements.
Divide 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. 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: Tester need 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 according to the design specification or not. 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 care about the software internal performance. But 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 white box test for every case. So it is necessary to take such a method.
Divide 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 end user’s requirement or not. It is all around software’s functions. This method can be broken down into a variety of subset. Such as logic function, user interface, ease of use, installation and compatibility test etc.
- Performance Testing: Tester use 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 need to build a specific and independent environment to do 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.
Divide 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 automation tool to write scripts to simulate human actions. Save the results in file or database. Then human tester can review the results to find out software bugs.
Smoke, regression testing
- Smoke testing: When a new version of software is ready, only verify the main function of the software before make large-scale test. We also named this as “Build verification testing”. If the main function verification is not passed, then will not continue large-scale function check. This can save a lot of human resource 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.
What kind of projects are suitable for automated
- Testing case is clear, not frequently changed.
- Build verification for daily build.
- More frequently regression testing.
- Software’s UI has few changed.
- The same test cases that need to be run on multiple platforms.