There are many types of testing which a tester can choose to perform based on the requirements. All testing types falls under two categories, White Box and Black Box. Here’s the diagrammatic representation of types of software testing :
[Figure: Types of Software Testing]
1. Black Box Testing: is a type of testing that is concerned about the output generated in response to a set of input and execution conditions. It is not bothered about the internal mechanism of a system.
1.1 Functional & System Testing: Functional testing is performed to ensure that the functionality specified in the requirement specification document is working correctly.
System testing involves testing the product in different conditions to ensure the program works in typical customer environments.
It is conducted on a complete system to evaluate it’s conformity with the standards and specified requirements.
Because system test is done with a full system implementation and environment, following types of testing can be done to determine non-functional properties of the system:
1.1.1 Stress Testing: Stress testing is conducted to evaluate a system behavior at or beyond the allowed limits.
1.1.2 Performance Testing: Performance testing is conducted to evaluate how well the system is doing what it is intended to do, it evaluates compliance of a system with agreed upon performance requirement
1.1.3 Usability Testing: Usability Testing is performed to check the user friendliness of the system. It evaluates how well user can learn to operate and interpret outputs of a system.
1.2 Acceptance Testing: This testing is primarily a testing performed for the user.
Objective is to check if the product is helping the business by doing what it is intended to do and there was no misinterpretation along the ways.
It is a formal testing conducted to determine whether or not product satisfied the acceptance criteria set by the customer.
1.3 Beta Testing: When the software package is ready and available, the development organization can offer it for free to potential users or beta testers.
These users use it report any errors encountered during usage back to the development organization
Also Read: Test LifeCycle, What is Software Testing?, Software Development Modals
2. White Box Testing: is a type of testing that takes into account the internal mechanism of a system or component. Other Names for White Box Testing are Open Box Testing, Clear Box Testing, Glass Box Testing, Transparent Box Testing, Structural Testing, Logic Driven Testing, and Design Based Testing.
2.1 Unit Testing: Unit testing is the testing of individual software units or groups of related units.
This is usually done by the developer, who has implemented the independent solution to verify the code does what it is intended to do at the un-integrated level.
2.2 Control Flow Testing: It is a testing strategy that uses the program’s control flow as a model to test various conditions and verifies simpler paths over complicated but fewer paths.
Control flow testing is more effective for unstructured code rather than structured code because wrong behavior are more likely in unstructured code that could be caught by control flow testing.
2.3 Branch Testing: It is also known as conditional testing or decision testing.
It makes sure that each possible outcome from the condition is tested at least once.Branch testing has the objective that every control statement is tested for both possible outcomes i.e. truth and fallacy.
2.4 Path Testing: Based on the design base set of test cases is designed outlining the execution path. These test cases execute every statement at least once. Basic path testing makes sure that each independent path is covered.
2.5 Data Flow Testing: looks at how data moves within a program. In data flow testing the control flow graph is drawn depicting how the program variables are defined and used
2.6 Loop Testing: Loop testing is another type of white box testing which verifies the validity of loop constructs. For example how many passes through the loop, nested loops, concatenated loops etc.
3. Combination of White and Black Box
3.1 Integration Testing: Integration test is performed to evaluate the interaction between the various components. Objective is to verify that all units work together when they are assembled together.
It uses both black box and white box techniques. Testers refer to standard specifications and design documents and internal structures of the code to prepare the test cases.
3.2 Regression Testing: The purpose of running the regression test cases is to examine whether the new code works properly and has not damaged any previously-working functionality by introducing unintended side effects.
Regression tests are a subset of the original set of test cases. These test cases are re-run after any changes because of defect fixes or feature enhancements are made to the code.
It is very important to start preparing the regression test suite right from the start and keep on updating it to maintain the relevancy.
Since they are run throughout the development cycle, there can be white box regression tests at the unit and integration levels and black box tests at the integration, function, system, and acceptance test levels.
This is not an exhaustive list of types of testing but it is enough for you to start working as a Software Tester. Please share your feedback !!