Download as DOCX, PDF, TXT or read online from Scribd
Download as docx, pdf, or txt
You are on page 1of 4
What is Software Testing?
The Complete Software Testing
Guide
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 and quality standards. It evaluates the system to validate its functionality. Testing measures the system’s overall quality in terms of correctness, completeness, usability, performance, and other functional and non-functional attributes.
Software testing is not associated with uncovering
potential bugs or defects. It also involves finding measures to improve the system’s efficiency and accuracy.
Basically, software testing is the combination
of verification and validation.
Verification is a static process that does not involve
code execution. It validates the documents, design, and code against specified requirements and answers the question – “Are we building the product right?”. Validation is a dynamic process that involves code execution. It checks software for its reliability, usability, and functionality. It answers the question – “Are we building the right product?”.
Why is Software Testing Important?
Software Testing is an indispensable activity in SDLC because it uncovers any bugs or errors early that can be addressed before releasing the system to the market.
The following are some significant reasons stating the
importance of software testing:
It provides assurance to the stakeholders that the
product works as intended. Delivering an untested product with avoidable defects to the end-user/customer leaves a bad reputation for the development company. The separate testing phase adds a confidence factor to the stakeholders regarding the quality of the software under development. 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 also costs the customer business failure, like in the case of Microsoft’s MP3 player – Zune’s crash. Software issues can cost lives. 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 Conducts Software Testing?
Testing is/can be done by all technical and non-technical people associated with software development. As testing is not a single process and a series of phases, the following are people associated with it in different phases:
Developer – Developers perform unit testing of the
software and ensure that the individual modules or components work correctly. Testers – Testers are the face of software testing. A tester verifies the application’s functionality as a functional tester, checks its performance as a performance tester, automates the functional test cases, and creates test scripts as an automation tester. Test Managers/Lead/Architects – They develop and define the test strategy and test plan documents. End Users – A group of end-users does the User Acceptance Testing (UAT) to ensure the software is ready to release to the real world.
Levels of Software Testing
There are four levels of software testing, as follows-
Unit Testing: It is the first level of testing that
involves validating every individual component or module of a software product for its correctness and functionality. Each module is tested in isolation. It is usually done by the developers (but some testers, well-versed with the code, can also write unit tests). The developers write the code that tests the individual module or component of the software application. Integration Testing: This level involves combining unit-tested components and testing them as a group. It uncovers any inconsistencies between the integration of components. System Testing: This testing level tests the system as a whole to ensure it meets quality standards and specified requirements. Acceptance Testing: It involves validating the system for its acceptability by the different stakeholders or the end users. It serves as the final stage of testing before the software is released into production or delivered to the client.
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 the system is 100% bug-free. But still, some markers 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 large, one can stop the testing.