Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Software Testing

Download as docx, pdf, or txt
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.

You might also like