2017년 5월 28일 일요일

All types of software tests

Learn about the types of software testing.

The types of tests can be divided into various categories according to various classification criteria.
In this article, I will classify and organize the test types as shown below.


  • Black Box Test vs White Box Test 
Black Box Test
Regardless of the internal structure of the software, it is tested only on the basis of external phenomena.

White Box Test
A person who understands the internal structure of the software tests the functions that are not exposed.


  • Functional Test vs Non-functional Test 
Functional Test
Tests to verify the functionality of the software.

Non-functional Test
Test nonfunctional things besides software functions. For example, performance or stability is tested.



If you divide the test into four areas and deploy each test, you can classify it as shown below.




  • Acceptance Test

It is a test that confirms whether the customer's requirements are met.
So analyze the requirements and extract the test items.
Acquisition testing should be managed from the beginning of the project as it is an important criterion that determines the end of the project later.



  • System Test

Perform tests from the perspective of the entire system.
The system test includes all of the requirements for satisfying the customer's requirements.
However, it is not a white box test like an integration test, but a test item is extracted from a black box view and tested.



  • Integration Test

It is a test to check for bugs that can occur while integrating each component developed.
When testing only individual components, it is a test to identify areas that can not be identified.



  • Unit Test

This is a test to check for the unit function.
Test each function of the function created by the developer.
That's why the code writer who best understands the code is mainly testing.



  • User Interface Test

It is a test to check each user interface function.
Check if the target UI component is operating normally.
UI testing is included both in the acceptance test and the system test.



  • Scenario Test

If the UI test is a test for a development UI component, then the scenario test is a combination of UI tests.
Create a test scenario based on your usage scenario and perform the test.
Scenario testing is included both in the acquisition test and in the system test.



  • Performance Test

This test confirms that the performance of the software meets the criteria.
So, it is very important to set a performance criterion. If performance is defined in the requirement, it should be based on the requirement.
If performance is not defined in the requirements, the performance criteria should be defined early in development by agreement with the customer.
For example, the response rate of a Web page should not exceed 5 seconds. " And so on.



  • Stability Test

It is a test to confirm that the software meets the stability criteria.
If the stability criterion is defined in the requirement, it should be based on the requirement, otherwise the standard should be agreed with the customer based on the general performance.
For example, "Do not let the system go down even if you use up to 1000 simultaneous connections for 24 hours." And the like can be said as a standard of stability.



  • Smoke Test

Smoke is a test that simulates smoke on a hardware board.
In other words, it is a test that confirms very basic functions.
Therefore, if you can not talk to the smog test, you can assume that other tests are not worth doing.
So a smog test is a test that precedes all tests.



  • Monkey Test

It is a test comparing monkeys touching the touch screen randomly.
It is a test to check if system error occurs by sending click event to UI component randomly.
Therefore, the test execution is performed for a predetermined time, and it is judged whether or not an error has occurred in the system in the meantime to determine a pass and a failure.



  • Usability Test

Usability tests are tested from the UX (User Experience) perspective.
In other words, it is not a test of functional parts, but a test that finds parts that the user may feel uncomfortable with.
That's why test automation is almost impossible, and a professional UX engineer has to perform tests.



  • Stress Test

It is a test to check the limits of the software.
The stress test is a test to confirm the specification of the product rather than the purpose of satisfying the requirement.
For example, increase the number of concurrent users to software and test and record the response rate of a web page.
The recorded web page response rate can be a reference for improving the performance of software or hardware.
Therefore, the stress test is often performed with irregular event.



  • Interface Test

Test whether data is coming or going properly between each module.
This is a test that checks for errors that occur when the individual developed modules are integrated and connected.



  • Regression Test

It is a test to see if an issue that has already been resolved occurs again.
It is a test that comes out of the idea that once an error has occurred is likely to happen again.
So it is the largest range of functional tests.
If any bugs occur and are resolved, there must be a test entry to see if the same bug is occurring.
So if you have an existing test, you should put a Regression label on it, otherwise add a new test item and put a label on it.
You should put labels on them and perform periodic tests regularly.



  • Memory leak Test

This is a test to see if a memory leak occurs in the software.
Long-term software is left unattended or combined with UI, Scenario, and Monkey tests to check for memory leaks. Memory leaks can lead to fatal software problems, so they are detected in advance through these tests.



  • Positive Test

It is a test that checks whether normal result is obtained by substituting normal value.
In a unit test, a test is performed by inserting only normal values into a function to be tested.
If a positive test results in a failure, the function is not implemented.



  • Negative Test

This is a test to check whether error handling is done properly by assigning an abnormal value.
In a unit test, a test is performed by assigning only abnormal values to a function to be tested.
If a negative test results in a failure, the function will need further error handling.



  • Boundary Test

Test with a boundary value, a value smaller than the boundary value, or a value larger than the boundary value.
In the unit test, it is a test to check whether the function responds properly by assigning values near the boundary value to the function to be tested.
This test is based on the idea that bugs near the threshold are likely to occur.




I have tried to summarize my own software test.
Each test is categorized based on its experience.
So there may be some arbitrary interpretations.

For example, I classified the Stability Test as Non-functional in the Acceptance Test.
However, if the Monkey Test and the Stress Test are interpreted as one type of the Acceptance Test, the scope of the stability test will vary.

This sort of classification is my personal idea because it can be classified differently according to the interpretation.












0 개의 댓글:

댓글 쓰기