What is Software Testing...?
A vital process often remains
behind the scenes in software development, where innovation and technology
converge to create intricate applications that shape our digital world. Still,
it plays an immense role in delivering robust, functional, and
reliable software - software testing. In this blog, we start a journey to
understand the basis of software testing, its significance, and its
multifaceted dimensions.
What is Testing:
Imagine
building a grand architectural marvel - a skyscraper that stands tall against
the horizon. Before it can host occupants and offer breathtaking views,
architects and engineers meticulously inspect each detail to ensure structural
integrity and safety. Similarly, software development involves coding,
designing, and crafting intricate functionalities. But just like the
skyscraper, software needs a careful examination too, and that's where software
testing comes into play.
Software Testing & its Objectives:
Def: Executing a software product for
the purpose of finding bugs/defects and ensuring that the software product
should be defect-free is called software testing.
Objectives of Software Testing:
·
Finding
Defects.
·
To
Prevent the defect.
·
To
build the Quality of a product.
·
To
fulfil the user requirements.
The Importance of Software Testing :
Ø Testing is important
because software bugs could be expensive or even dangerous. Software bugs can
potentially cause human loss.
Examples:
·
Nissan cars recalled over 1 million cars from the market
due to software failure in the airbag sensory detectors. There have been
reported two accidents due to this software failure.
·
In April of 1999, a software bug caused the failure of a
$1.2 billion military satellite launch, the costliest accident in history.
Ø Testing contributes to the success of a product.
·
In the Software Development Life Cycle, delivering the
right product to stakeholders is impossible without Software Testing. Software
Testing reduces problematic delivery by testing the software using appropriate
test techniques and expertise at different test levels.
Principles of Testing:
1.
Testing shows the presence of
defects.
2.
Exhaustive testing is not
possible.
3. Early testing saves time &Money.
4. Defect clustering together.
5. Testing follows the Pesticide paradox rule.
6. Testing is context-dependent.
7. Absence of errors is a fallacy.
The Layers of
Software Testing:
Software
testing isn't a monolithic process; instead, it's a layered approach that
involves different types of testing:
Unit Testing: Testing individual components or modules
in isolation to ensure they function as intended.
Integration Testing: Evaluating how components interact and
ensuring they work together seamlessly.
System Testing: Assessing the entire software system to
verify its requirements.
User Acceptance Testing (UAT): Inviting end-users to test the software
in real-world scenarios, confirming its suitability for their needs.
The Journey to
Continuous Quality :
Continuous
quality is a systematic approach to finding and fixing software defects during
all phases of the software development cycle. CQ reduces the risk of security
vulnerabilities and software defects (bugs) by helping developers find and fix
problems as early as possible in the development cycle. Continuous quality is
part of a continuous integration (CI) / continuous delivery (CD) process, which leads to "continuous
testing," where testing is integrated throughout the software development
lifecycle, ensuring that issues are detected and resolved promptly.
Manual vs.
Automated Testing :
Software
testing can be conducted manually, where testers manually execute test cases,
or it can be automated using specialised tools and scripts. Automated testing
is particularly effective for repetitive tasks, regression testing, and
evaluating large datasets.
Conclusion :
Software
testing is the unsung hero of the software development process. testing is a critically important
verification method that takes up a very large portion of a project’s
resources, including schedule, budget, staffing, and facilities. Unlike the
many constructive activities of systems engineering, testing is relatively
unique because it is inherently destructive. In addition to defect detection,
testing is also performed to provide sufficient objective evidence to justify
confidence in the system’s quality, fitness for purpose, and readiness for
being accepted and placed into operation.
Superb, Informative article
ReplyDelete