Software Testing Types
As the first step, let's learn few of software testing methods. Please note that this just to give you a high level idea of each testing type.
White Box Testing Usually the white box testing is doing by software developers who have a depth knowledge about the code base. This is where we test the internal structure or the implementation (design) of an application. The developer gives input(s) and test whether he/she gets the required output as expected. If there is any issue/deviation with the output the developer do the required changes and make it correct. That's why we need some knowledge about the code base and the development experience. The white box testing is also known as, Open Box Testing, Clear Box Testing, Glass Box Testing, Transparent Box Testing, Code based Testing and Structural Testing. When To Apply: The white box testing can be applied at any level of system testing, integration testing, unit testing etc.
Black Box Testing Generally the black box testing is doing by the software tester since this doesn't require any development knowledge. The tester only focuses on the input and the output. They don't care how the code work internally and is performed from the end-user perspective. These tests can be functional or non-functional. It is also known as behavioral testing. When To Apply: When we want to simulate the end-user experience we do the black box testing. This can be used to explore the applications behaviors and check the missing features, errors (unexpected outputs) etc.
Unit Testing Usually the Software developer do the unit testing. They focused a small unit or inter related units and test their behaviors by giving an input. Then they can verify whether they are getting the expected output or not.
Integration Testing Integration testing is the second level testing which is doing by the developer or the Quality Engineer. This needs to be done after the unit testing. We combined the individual units and tested them as a group to test their interactions and outputs.
Regression Testing Let's assume that there was a code change in the program due to a requirement change or as an enhancement. We need to re-execute partial or full selection of test cases to ensure the functionalities of the program work fine as earlier without any issue.
Smoke Testing After we deployed the software to our QA environment, QA Engineering team is doing minimal set of tests to verify the stability of the release. Based on that, QA team decide whether they are proceeding with further testing or not. Build Verification Testing & Confidence Testing are another two terms we can use instead of Smoke Test.
Stress Testing Stress testing refers to a simulation technique, we use to test the application stability, resilience, reliability etc. This testing method even tests beyond the usual operating point, so that we can evaluate its behaviors under those conditions. Following reasons will show you the importance of the stress testing - To prepare for an extreme situation with unexpected load/traffic - To avoid system failures in extreme situations to save you from revenue losses - To check whether your system is working under unexpected traffic or load