Things I wished I knew sooner about software testing...
When we talk about testing in software development you would probably recognize terms as unit testing, integration testing and maybe acceptance testing. All are terminology relating to the activities we do in software development to make sure software is as robust as possible before reaching users.
In the Foundation Level ISQTB certification we can find five different test levels:
- Component testing: Which is what we have most commonly heard as unit testing. It focuses testing components in isolation, for that to happen we might need test harnesses or unit test frameworks. Test harnesses are what are commonly referred as stubs or mocks if you have used a unit testing framework. Stubs allow us to facilitate testing when some of the application's production infrastructure is unavailable, for example, if our ORM allows it we might use an in-memory db to test a function that interacts with the database. This type of testing is commonly done by developers in their development environments.
- Component integration testing: Also known as unit integration testing in the ISQTB certification. Focuses in testing interfaces and interactions between components, this is done by testing the interaction between different software components. For example if we are testing a SW component in a system with a micro-service architecture, interconnected by a REST API, in component integration testing, we might check that the expected JSON responses are returned to our component from the other SW component.
- System testing: At this level you'd are testing the behavior and capabilities of the whole system or product. System level tests might be performed by an independent test team, depending on the organization. Having an independent test organization allows for a different team with a different understanding of the product to conduct tests, preventing misconceptions from causing escaped defects. At this level we also test non-functional requirement testing, like usability or performance.
- System integration testing: At this level we test the interfaces of the system under test and other systems. An example of this is testing the integration of a payment system with our system.
- Acceptance testing: This level focuses on validation and demonstrating that the system fulfills the user's business needs. The main forms of acceptance testing as defined by the ISQTB foundations certification are: user acceptance testing, operational acceptance testing, contractual acceptance testing and regulatory acceptance testing, alpha testing and beta testing.
Photo by freestocks on Unsplash
Top comments (0)