1. Learning Module I
Software Testing
By
Harsimrat Deo
(Assistant Professor, PG Department of Computer
Science, Mata Gujri College, Fatehgarh-Sahib)
2. Topics to be Covered
Meaning of software testing
Software testing lifecycle
Principles of software testing
Techniques of software testing
3. Learning Outcomes
After going through this module the students will be
able to know the concept of software testing
Understand the software testing lifecycle
Learn principles of software testing and
Know the techniques of software testing
4. Software testing refers to process of
evaluating the software with intention to find
out error in it.
Software testing is a technique aimed at
evaluating an attribute or capability of a
program or product and determining that it
meets its quality.
Software testing is also used to test the
software for other software quality factors
like reliability, usability, integrity, security,
capability, efficiency, portability,
maintainability, compatibility etc.
Software Testing
7. 1. Testing shows the presence of bugs
Testing an application can only reveal that
one or more defects exist in the application,
however, testing alone cannot prove that the
application is error free. Therefore, it is
important to design test cases which find as
many defects as possible.
8. 2. Exhaustive testing is impossible
Unless the application under test (AUT)
has a very simple logical structure and
limited input, it is not possible to test all
possible combinations of data and
scenarios. For this reason, risk and
priorities are used to concentrate on the
most important aspects to test.
9. 3. Early testing
The sooner we start the testing activities the
better we can utilize the available time. As
soon as the initial products, such the
requirement or design documents are
available, we can start testing. It is common
for the testing phase to get squeezed at the
end of the development lifecycle, i.e. when
development has finished, so by starting
testing early, we can prepare testing for each
level of the development lifecycle.
10. How Much Testing Is Enough?
Another important point about early
testing is that when defects are found
earlier in the lifecycle, they are much
easier and cheaper to fix. It is much
cheaper to change an incorrect
requirement than having to change a
functionality in a large system that is
not working as requested or as
designed!
11. 4. Defect clustering
During testing, it can be observed that most of
the reported defects are related to small number
of modules within a system. i.e. small number of
modules contain most of the defects in the
system. This is the application of the Pareto
Principle to software testing: approximately 80%
of the problems are found in 20% of the
modules.
12. 5. The pesticide paradox
If you keep running the same set of tests over and over
again, chances are no more new defects will be discovered
by those test cases. Because as the system evolves, many
of the previously reported defects will have been fixed
and the old test cases do not apply anymore. Anytime a
fault is fixed or a new functionality added, we need to do
regression testing to make sure the new changed software
has not broken any other part of the software. However,
those regression test cases also need to change to reflect
the changes made in the software to be applicable and
hopefully fine new defects.
13. 6. Testing is context dependent
Different methodologies, techniques and types of
testing is related to the type and nature of the
application. For example, a software application in a
medical device needs more testing than a games
software. More importantly a medical device software
requires risk based testing, be compliant with medical
industry regulators and possibly specific test design
techniques. By the same token, a very popular website,
needs to go through rigorous performance testing as
well as functionality testing to make sure the
performance is not affected by the load on the servers.
14. 7. Absence of errors fallacy
Just because testing didn’t find any defects in
the software, it doesn’t mean that the software
is ready to be shipped. Were the executed tests
really designed to catch the most defects? or
where they designed to see if the software
matched the user’s requirements? There are
many other factors to be considered before
making a decision to ship the software
16. 1. Manual testing (static testing): It is a
slow process and laborious where testing is
done statically .It is done in early phase of
life cycle. It is also called static testing. It is
done by analyst, developer and testing team.
Different Manual testing Techniques are as
follows:-
A) walk through
B) Informal Review
C) Technical Review
D) Inspection
17. A) Walk through:
•It is not a formal process/review
•It is led by the authors
•Author guide the participants through the
document according to his or her thought
process to achieve a common understanding
and to gather feedback.
18. B) Informal Review:
Informal reviews are applied many times during
the early stages of the life cycle of the document.
A two person team can conduct an informal
review. In later stages these reviews often involve
more people and a meeting. The goal is to keep
the author and to improve the quality of the
document. The most important thing to keep in
mind about the informal reviews is that they are
not documented.
19. C) Technical Review:
A Technical review is a static white-box
testing technique which is conducted to
spot the defects early in the life cycle that
cannot be detected by black box testing
techniques.
20. •Technical Reviews are documented and use
a defect detection process that has peers and
technical specialist as part of the review
process.
•The Review process doesn't involve
management participation.
•It is usually led by trained moderator who is
NOT the author.
•The report is prepared with the list of issues
that needs to be addressed.
21. D) Inspection:
•It is the most formal review type
•It is led by the trained moderators
•During inspection the documents are prepared and
checked thoroughly by the reviewers before the
meeting
•A separate preparation is carried out during which the
product is examined and the defects are found
•The defects found are documented in a logging list or
issue log
•A formal follow-up is carried out by the moderator
applying exit criteria
•It involves peers to examine the product
22. 2. Automated Testing (Dynamic testing):
In this tester runs the script on the testing tool
and testing is done. Automated testing is also
called dynamic testing.
Automated testing is classified into four Types:-
A) Correctness testing
B) Performance testing
C) Reliability testing
D) Security testing
23. A) Correctness Testing:
Correctness is the minimum requirement of
software. Correctness testing will need some
type of oracle, to tell the right behavior from the
wrong one. The tester may or may not know the
inside details of the software module under test.
Therefore either white box testing or black box
testing can be used.
24. B) Performance Testing :
Performance Testing involve all the phases as the
mainstream testing life cycle as an independent
discipline which involve strategy such as plan,
design, execution, analysis and reporting. Not all
software has specification on performance
explicitly. But every system will have implicit
performance requirements. Performance has
always been a great concern and driving force of
computer evolution.
25. C) RELIABILITY TESTING:
The purpose of reliability testing is to discover
potential problems with the design as early as
possible and, ultimately, provide confidence that
the system meets its reliability requirements.
Reliability testing is related to many aspects of
software in which testing process is included; this
testing process is an effective sampling method to
measure software reliability. In system after
software is developed reliability testing techniques
like analyze or fix techniques can be carried out to
check whether to use the software.
26. D) SECURITY TESTING :
Software quality, reliability and security are
tightly coupled. Flaws in software can be
exploited by intruders to opens security holes.
Security testing makes sure that only the
authorized personnel can access the program
and only the authorized personnel can access the
functions available to their security level. The
security testing is performed to check whether
there is any information leakage in the sense by
encrypting the application or using wide range of
software’s and hardware's and firewall etc.