Software testing is simply the process of assessing a system or its components with the aim to find whether it meets the specified requirements. Software that does not work correctly can lead to many problems, including loss of money, time or business reputation, and could even cause injury or death.
Human beings are prone to mistakes. We all are. Some of these mistakes are insignificant, but some are expensive or dangerous. Defects in software occur because of circumstances like; time pressure, complex code, changing technologies and/or many system interactions.
Thorough testing of systems can help minimize the risk of problems occurring during operation & contribute to the quality of the software after it is released for use. Testing also makes it possible to assess the quality of software in terms of reliability, efficiency, usability, portability & maintainability.
To learn how software testing can be beneficial to your business, read this post that we published recently: Is software testing really necessary?
Software Test Types
The aim of these test types is to verify the software system or part of the system based on a specific reason or targeting for testing. Test types focus on a specific test objective which may include:
- The structure of the software
- A function to be performed by the system.
- A non-functional quality characteristic such as usability.
Here are the four software types:
Basically, functional testing entails the testing of the functions and features of a system. It refers to activities that verify a specific action or function of the code. Functional testing answers questions like “does this particular feature work”. The functions are “what” the system does.
This is the testing of “how” the system works. Here, the quality characteristics of the component or system are tested. Non-functional testing comprises of performance testing, load testing, stress testing, usability testing, maintainability testing, portability testing and reliability testing. Non-functional refers to features of the software that may not be related to a specific function or user action e.g. security or scalability.
Structural testing, also known as white-box, is the testing of the structure of the system or component. In structural testing, we are interested in what is happening inside the system, thus the term “white-box”. In structural testing the tester has to have knowledge of the internal software and code working. This is because the tester is mainly concentrating on the code implementation. Here, tests are based on coverage of code statements, branches, paths, conditions, etc.
Change related testing (Regression Testing)
After a fault is detected and fixed, the software should be re-tested to confirm that the original defect has been successfully removed. Regression testing is repeated testing of an already tested system after modification, to discover any defects introduced or uncovered as a result of the change. Mostly automation tools are used for these testing types because it is difficult to cover the whole system manually.
These are just a few types of software testing. We will continue to expound more on regression & non-functional testing in a future post. To find out the risks of lack of proper testing and how testing can add value to your system, read this post.
Systech Limited is a ISTQB (International Software Testing qualifications Board) Silver partner. Our testing practice offers a comprehensive suite of software testing that spans across quality assurance consulting, product testing and automation, software testing training and much more. Our testing specialists enable us to provide innovative solutions to our customers testing concerns. Contact us for a quote.