Unit I
Testing Fundamental Principles
By Dr. Vibha Kaw Raina
STLC - Overview
STLC stands for Software Testing Life Cycle. STLC is a sequence of
different activities performed by the testing team to ensure the quality
of the software or the product.
• STLC is an integral part of Software Development Life Cycle
(SDLC). But, STLC deals only with the testing phases.
• STLC starts as soon as requirements are defined or SRD (Software
Requirement Document) is shared by stakeholders.
• STLC provides a step-by-step process to ensure quality software.
STLC - Overview
• In the early stage of STLC, while the software or the product is
developing, the tester can analyze and define the scope of testing,
entry and exit criteria and the Test Cases. It helps to reduce the test
cycle time along with better quality.
• As soon as the development phase is over, the testers are ready
with test cases and start with execution. This helps to find bugs in
the initial phase.
STLC Phases
STLC has the following different phases, but it is not mandatory to
follow all phases. Phases are dependent on the nature of the
software, or the product, time and resources allocated for the testing
and the model of SDLC that is to be followed.
STLC Phases
There are 6 major phases of STLC −
Requirement Analysis − When the SRD is ready and shared with the stakeholders,
the testing team starts high level analysis concerning the AUT (Application under
Test).
Test Planning − Test Team plans the strategy and approach.
Test Case Designing − Develop the test cases based on scope and criteria.
Test Environment Setup − When integrated environment is ready to validate the
product.
Test Execution − Real-time validation of product and finding bugs.
Test Closure − Once testing is completed, matrix, reports, results are documented.
COMPARISON - STLC and SDLC
• STLC is part of SDLC. It can be said that STLC is a subset of the
SDLC set.
• STLC is limited to the testing phase where quality of software or
product ensures. SDLC has vast and vital role in complete
development of a software or product.
• However, STLC is a very important phase of SDLC and the final
product or the software cannot be released without passing
through the STLC process.
• STLC is also a part of the post-release/ update cycle, the
maintenance phase of SDLC where known defects get fixed or a
new functionality is added to the software.
COMPARISON - STLC and SDLC
Phase SDLC STLC
Business Analyst Testing team reviews
gathers requirements. and analyzes the SRD
Development team document.
analyzes the Identifies the testing
requirements. requirements - Scope,
After high level, the Verification and
development team Validation key points.
Requirement Gathering starts analyzing from Reviews the
the architecture and requirements for
the design logical and functional
perspective. relationship among
various modules. This
helps in the
identification of gaps
at an early stage.
COMPARISON - STLC and SDLC
The architecture of In STLC, either the
SDLC helps you Test Architect or a
develop a high-level Test Lead usually
and low-level design plan the test
of the software based strategy.
on the requirements. Identifies the
Design Business Analyst testing points.
works on the mocker Resource
of UI design. allocation and
Once the design is timelines are
completed, it is finalized here.
signed off by the
stakeholders.
COMPARISON - STLC and SDLC
Development Testing team
team starts writes the test
developing the scenarios to
software. validate the
Integrate with quality of the
different systems. product.
Once all Detailed test cases
integration is are written for all
Development
done, a ready to modules along
test software or with expected
product is behaviour.
provided. The prerequisites
and the entry and
exit criteria of a
test module are
identified here.
COMPARISON - STLC and SDLC
Development The Test team
team sets up a confirms the
test environment set
environment up based on the
with developed prerequisites.
product to Performs smoke
Environment Set up validate. testing to make
sure the
environment is
stable for the
product to be
tested.
The actual testing System Integration
is carried
COMPARISON out in
- STLC and SDLC testing starts based
It
this phase. on the test cases.
includes unit Defects reported, if
testing, any, get retested
integration and fixed.
testing, system Regression testing
testing, defect is performed here
retesting, and the product is
regression testing, signed off once it
etc. meets the exit
Testing The Development criteria.
team fixes the bug
reported, if any
and sends it back
to the tester for
retesting.
UAT testing
performs here
after getting sign
off from SIT
testing.
COMPARISON - STLC and SDLC
Once sign-off is Smoke and sanity
received from testing in
various testing production
team, application environment is
is deployed in prod completed here as
environment for soon as product is
Deployment/ Product real end users. deployed.
Release
Test reports and
matrix preparation
are done by
testing team to
analyze the
product.
COMPARISON - STLC and SDLC
It covers the In this phase,
post the maintaining
deployment of test cases,
supports, regression suits
enhancement and automation
Maintenance
and updates, if scripts take
any. place based on
the
enhancement
and updates.
STLC - Testing Fundamental Principles
• The common objective of testing is finding bugs as early as
possible. And, once the bugs are fixed, make sure it is working as
expected and not breaking any other functionality.
• To achieve these goals, seven basic principles are given for
software testing −
What Testing shows?
Testing can show that defects are present but there is no way to prove
that there is no defect in the product. Testing phases make sure that the
application under test is working based on the given requirement and
it helps to reduce the probability of undiscovered defects in the
application. But, even if no defects are found, it does not mean that it
is correct. We can assume that AUT(Application under test) is
matching with our exit criteria and maintaining the requirements
according to SRD.
Testing Fundamental Principles
• Is Exhaustive Testing possible?
100% coverage or testing of all combinations of inputs and
possible combinations are not possible except of trivial
cases. Instead of exhaustive testing, risk analysis and
priorities are used to define the scope of testing. Here, most
of the real time scenarios can consider including most
probable negative scenario as well. This will help us track
the failure.
Testing Fundamental Principles
• Early Testing
Testing activities should start as soon as possible and be
focused on defined objectives in Test Strategy and expected
results. Early stage of testing helps to identify Requirement
Defect or design level discrepancies. If these types of bugs
are captured in initial stage, it helps us save time and is cost-
effective too. The answer to why testing should start at an
early stage is very simple – as soon as the SRD is received,
the testers can analyze the requirement from the testing
perspective and can notice a requirement discrepancy.
Testing Fundamental Principles
• Defect Clustering
Based on previous product defect analysis, it can be said that most of
the defects are identified from small set of modules which are critical
for application. These modules can be identified based on complexity,
different system interaction or dependency on different other modules.
If testers can identify these crucial modules, they can focus more on
these modules to identify all possible bugs. In a study, it is found that
8 out of 10 defects are identified from 20% functionality of AUT.
Testing Fundamental Principles
Pesticide Paradox
• What is pesticide paradox – if pesticides are frequently used on
crops, there comes when the insects develop a certain kind of
resistance and gradually the pesticides thus sprayed seem to be
ineffective on the insects.
• The same concept is applicable on testing also. Here, insects are
bugs while pesticides are test cases that are used to run again and
again. If the same sets of test cases are executed again and again,
these test cases become ineffective after certain timeframe and the
testers will not be able to identify any new defect.
• To overcome these conditions, test cases should be revised and
reviewed time to time and new and different test cases can be
added. This will help in identifying new defects.
Testing Fundamental Principles
Testing is Context Dependent
• This principle states that two different type of application can’t be
tested using same approach until both applications are of same
nature. For example, if a tester uses the same approach for Web
Based Application and Mobile Application, that is completely
wrong and there is high risk of poor quality of product release.
• Testers should use different approaches, methodologies, techniques
and coverage for different types and nature of applications.
Testing Fundamental Principles
Absence of Error – Fallacy
• This principle states finding defects and fixing them until
the application or system is stable, is time consuming and
eats up on the resources. Even after fixing 99% of the
defects, there is a high risk of unstable application.
• The first essential thing is to verify the stability of the
application and the prerequisites of the environment. If
these two conditions fulfill, only then we can start with
the detailed testing.
References
• [Link]
testing/
• [Link]
nciples-of-software-testing/
• [Link]
[Link]