Software testing is one of the most important activities in the life cycle of any software, since with it we can detect easily if the software works or if it doesn’t. Software Testing is a process in which you perform evaluations of the software and the system to check if it follows the requirements, works as expected and is bug-free.
Types of Software Testing
To understand the way software testing works you need to know that there are many different types of testing and each one with its own subtypes. In this blog we will mainly talk about the software testing approaches and the software testing levels.
Software Testing Approaches
- White Box Testing.- This type of testing is done by via looking at the structure of the code, you test the internal part of it, designing test cases for it.
- Black Box Testing.– This type of testing is done mainly by looking at the inputs and outputs of the system or the program. You design test cases which only look at the input and the output, and see if the expected output matches the real output of the program.
- Grey Box Testing.- In this type of testing you perform a mixture of Black box and a mixture of White Box testing, you choose tests that align with what you want out of the program.
Software Testing Levels
- Unit Testing.- This level of testing is done via testing each module of the program as separate units, ensuring that each function and every unit of the application works correctly as expected by its own.
- Integration Testing.- In this type of testing you check if the connections or transfer of data within the units works as expected.
- System Testing.- In this type, you check the system as a whole, ensuring that the whole system works as is expected when all the units work together as one.
- Acceptance Testing.- In this type of testing you mainly check if the system follows the requirements of the client. Checking if it has met the criteria for delivery.
You could also divide software testing into functional and non functional, where in one you test the functional requirements of the program and in the other you test the non functional ones.
Roles of Software Testing
- QA Manager.- The one who manages the whole team related to testing, ensuring they are all working as a team and following the guidelines of the company and of the client.
- QA Analyst.- The one whose main job is analyzing the results of the tests, looking for where the bugs are, what is happening, and the one who also designs the tests.
- Tester.- The person whose in charge of testing the system using the test cases.
- Other jobs.- Sometimes in software testing you get other roles like the one in charge of the automation of the tests or the one who tests the performance of the system.
Test Case Design
Since Test Cases are the base of testing, you need to ensure that they are good and are well designed. To do that there are different techniques which you can use to design them. These techniques are defined into 3 categories:
- Designing test cases using the requirements specification and black box testing.- Examples: Use Case Testing, Decision Table Testing.
- Designing test cases from the structure of the system or its components. Examples: Branch coverage, path coverage.
- Designing test cases based on the tester’s experience or intuition. Examples: Error guessing, Exploratory Testing.
One of the main ways to test is using a testing environment, which is an environment designed solely for testing before launching to the live server. It allows to deploy application and ensure it is bug free before pushing to the product.