Software testing is a combination of checking, exploration, and documentation, more or less a scientific method that helps us achieve better results in the software lifecycle, otherwise products may fail in production, which is critical for any team. Testing can be done manually or through test automation frameworks.
Exploring uncovers risks in our projects, asks deeper questions that allow us to find defects that could affect UX quality, and identifies possibilities that no one has thought of before because we are learning about the system while exploring, designing and executing at the same time.
Documenting is a good practice that seeks continuous improvement, it helps us not to make the same mistake twice so that we can focus on the objectives and guide others towards achieving them, it also allows us to consult, give or receive feedback and reviews of previous tests to inform the next ones.
Why is software testing important?
Testing, in general, has always been used to prevent accidents and catastrophes. The Pareto 80/20 rule states that 80 percent of the consequences come from 20 percent of our causes, which translated to software means that 80% of system failures are caused by 20% of bugs.
We live in a world in which technology is part of life, it even controls many aspects of it, such as finances, insurance, devices, transportation, security, information, entertainment, etc. Therefore, software should not fail, at least not that much, but it does. To be agile and accurate is necessary to have a correct understanding of the requirements, good teamwork, attention to detail, and assertive communication, typical skills of software testers.
It is much better to catch bugs on time, correct them and make sure that the defects are not in other steps of development or already in production. Basically, software testing is important to ensure the quality of the product.
To perform testing, make sure of...
- Understand the requirements: Knowing what the software must do and what is classified as a defect or bug.
- Perform the tests: Follow the test cases and run them as if they were already in production, as average users do. Mark them as passed, failed, or skipped. Take note of what you observe when the test fails.
- Record good bug reports: Make comprehensive reports that can be consulted at any time. Use screenshots, recordings, text, or export files.
- Document test cases: Compose the test cases to guide the understanding of the bugs found.
TYPES OF TESTING
Black Box Testing
Here, testers don't need to have any knowledge about the code, the software architecture, or any other technical aspect, they just need to interact with the application, to explore it to test functional and non-functional behavior.
White Box Testing
Here, testers know about the code and the structure of the application, it is mainly used by developers to perform Unit Testing for control flow, to test data, flow testing, branch testing, path testing, and so on.
Grey Box Testing
This one is a mix of the previous ones, meaning that testers have information about certain factors
This one focuses on the correct functionality of the standalone module so the smallest pieces of code referred to as Units should be tested here. The Units to test could be functionality specifications, a piece of code or anything else that needs to be isolated and verified.
Here is where different modules, units, and software components of the application are integrated. It is meant to verify the functionality, stability, and reliability of the modules when they are combined. This type of testing verifies the correct communication between all units.
It is done after all functionalities have been checked and approved. Evaluate the system's compliance with its specified requirements.
Formal testing that is done based on the user requirements, performed in real-life situations for end-users.