What is Software Testing? The Complete Software Testing Guide
Human beings are prone to mistakes because of in-attention, incorrect assumptions, carelessness, or inadequate knowledge of the system. This very nature of humans makes software vulnerable to bugs, defects, and errors (we will get to know these terms in detail in later posts). To prevent and correct these issues we need testing.
Traditionally software testing was done in a single phase and that too only once the implementation or coding used to get completed. But the increasing complexity of software applications led to the evolution of testing.
So testing techniques were evolved and testing activities were not confined to a single phase. Instead, these were integrated with the different phases of the software development life cycle.
In this post, we will answer some common queries related to software testing and will be discussing the What, Why, Who, When, and How of testing.
What is Software Testing?
Software testing is the process of evaluating a system with the intent of finding bugs. It is performed to check if the system satisfies its specified requirements.
Testing measures the overall quality of the system in terms of its correctness, completeness, usability, performance, and other functional and non-functional attributes.
Why is testing required?
Software Testing as a separate activity in SDLC is required because-
- Testing provides an assurance to the stakeholders that the product works as intended.
- Avoidable defects leaked to the end-user/customer without proper testing adds a bad reputation to the development company.
- The separate testing phase adds a confidence factor to the stakeholders regarding the quality of the software developed.
- Defects detected in the earlier phase of SDLC result in lesser cost and resource utilization for defect resolution.
- The testing team adds another dimension to software development by providing a different viewpoint to the product development process.
- An untested software not only makes software error-prone, but it also costs the customer business failure too like in the case of Microsoft’s MP3 player – Zune’s crash.
- Software issues can cost lives too e.g. in the case of Therac 25 many people died due to concurrent programming errors wherein patients were given radiation doses that were hundreds of times greater than normal, resulting in death or serious injury.
Who does Testing?
Testing is/can be done by all technical and non-technical people associated with the software. Testing in its various phases is done by-
- Developer – The developer does the unit testing of the software and ensures that the individual methods work correctly.
- Tester – Testers are the face of software testing. A tester verifies the functionality of the application as a functional tester, checks the performance of the application as a Performance tester, automates the functional test cases, and creates test scripts as an automation tester.
- Test Managers/Lead/Architects – Develop and define the test strategy and test plan documents.
- End users – A group of end-users do the User Acceptance Testing (UAT) of the application to make sure the software can work in the real world.
How is Software Testing done?
Testing can be done both manually as well as using automation tools. When performed manually, it is called Manual Testing. It includes requirements verification, development of test strategy and plan; test case preparation, test case execution, defect creation, defect retesting, and finally test report sharing with all the relevant stakeholders.
When do we start Software Testing?
Based on the selection of different Software Development Life Cycle models for the software project, the testing activities can be performed in the different phases of the software life cycle.
There is a software myth that testing is done only when some part of the software is built but testing can(should) be started even before a single line of code is written. It can be done in parallel with the development phase e.g. in the case of the V Model, development and testing activities are integrated with each other.
|Development Phase||Testing Activity|
|Requirement Design||Acceptance test creation|
|Functional Specification||Functional test case creation|
|Implementation||Unit test case creation|
|Code Complete||Test case execution|
When to stop testing?
This question – “When to stop testing” or “how much testing is enough” is very tricky to answer as we can never be sure that the system is 100% bug-free. But still, there are some markers that help us in determining the closure of the testing phase of the software development life cycle.
- Sufficient pass percentage – Depending on the system, testing can be stopped when an agreed-upon test case pass percentage is reached.
- After a successful test case execution – The testing phase can be stopped when one complete cycle of test cases is executed after the last known bug fix.
- On meeting deadlines – Testing can be stopped after deadlines get met with no high-priority issues left in the system.
- Mean Time Between Failure (MTBF)– MTBF is the time interval between two inherent failures. Based on the different stakeholder’s decisions, if the MTBF is quite large, one can stop the testing.
So, this was all about an introduction to software testing. You can continue with our next tutorial on software testing here – Quality Assurance. For the complete step-by-step software testing tutorial check – Software Testing Tutorial.