Introduction to Software Testing and Its Types
Agenda
Quality Control
What is Software Testing?
Myths & Facts about testing
Testing Framework
V Model
Strategies of Testing
White Box Testing
Black Box Testing
Types of Black Box & White Box Testing
Quality Control
Quality Control measures a product against the existence of an attribute or determines whether the product conforms to a standard or a procedure. This is also known as compliance checking
Purpose of QC – to identify defects and ensure that they are corrected so that defect-free products will be produced
QC is related to product and hence is responsibility of worker
Eg. Software testing.
What is Software Testing?
“The process of executing computer software in order to determine whether the results it produces are correct”, Glass ’79
“The process of executing a program with the intent of finding errors”, Myers ’79
“Program testing can be used to show the presence of bugs, but never their absence”, Dijkstra ’72 (A Dutch Scientist).
“The aim is not to discover errors but to provide convincing evidence that there are none, or to show that particular classes of faults are not present”, Hennell ’84
“Testing is the measure of software quality”, Hetzel ’85.
“The process of operating a system or component under
specified conditions, observing or recording the results, and making an
evaluation of some aspect of the system or component.” IEEE/ANSI, 1990.
Testing is a state of mind
“If our goal is to show the absence of errors, we will
find very few of them”
“If our goal is to show the presence of errors, we will
discover a large number of them”.
Myths & Facts about testing
V Model:
Strategies of Testing:
White Box
Black Box.
White Box Testing:
Logic Driven
Parts of software is tested which can be forgotten in
functional testing
Doesn’t ensure user requirement is been met
The tests may not mimic the real world scenario.
Types of White Box Testing
Statement coverage – executes all statement at least once
Decision coverage- executes each decision direction at
least once.
Black Box:
Data driven
Focus is on specifications
Simulates actual system usage
One can miss logical errors
Possibility of redundant testing
Types of Black Box Testing
Functional Testing
Usability Testing
Volume Testing
Security Testing
Configuration Testing
Compatibility Testing
Installation Testing.
Recovery Testing
UI Testing
Performance Testing
Load Testing
Stress Testing
Acceptance Testing
Regression Testing
System Testing.
Functional Testing:
Functionality testing examines the extent to which your
hardware, software, Web site, or internal application meets expected functional
requirements. Focused approach to functionality testing includes verifying that
an application or Web site conforms to specifications and correctly performs
all required functions.
Usability Testing
Usability testing is a means for measuring how well people
can actually use something (such as a web page, a computer interface, a
document, or a device) for its intended purpose.
Security Testing
Security testing is concerned with checking that the
system and its data are protected from accidental or malicious damage. The
system must be secure against unanticipated as well as anticipated attacks.
Security testing may be carried out by inviting people to try to penetrate the
system through security loopholes.
Configuration Testing
Checks how the product works on different hardware and
when combined with different third party software.
Compatibility Testing
Compatibility testing examines whether your hardware,
software, Web site, or internal application works as expected on the wide range
of components and systems available in the homes and offices of your end users.
Installation Testing
Testing concerned with the installation procedures for the
system.
Recovery Testing
Confirms that the application under test recovers from
expected or unexpected events without loss of data or functionality. Events can
include shortage of disk space, unexpected loss of communication, or power out
conditions.
UI Testing
Validating user interface of the application against UI
specifications.
Performance Testing
Performance testing is testing that is performed to
determine how fast some aspect of a system performs under a particular
workload.
Load Testing:
The testing of a system that attempts to cause failures
involving how the performance of a system varies under normal conditions of
utilization (e.g., as the load increases and becomes heavy). Load testing can
identify failures involving variation of load in WAN segments or against
increasing database size.
Stress Testing:
Stress testing is subjecting a system to an unreasonable
load while denying it the resources (e.g., RAM, disc, interrupts,etc.) needed
to process that load. The idea is to stress a system to the breaking
point in order to find bugs that will make that break potentially harmful
The system is not expected to process the overload without
adequate resources, but to behave (e.g., fail) in a decent manner (e.g., not
corrupting or losing data).
Volume Testing
Volume Tests are often most appropriate to Messaging,
Batch and Conversion processing type situations. In a Volume Test, there
is often no such measure as Response time. Instead, there is usually a
concept of Throughput
Testing where the system is subjected to large volumes of
data.
Acceptance Testing
Testing conducted to enable a user/customer to determine
whether to accept a software product. Normally performed to validate the
software meets a set of agreed acceptance criteria.
Regression Testing:
This technique assures that the change will not cause
adverse effects on parts of the application/system that were not supposed to
change
System Testing
Testing the system as a whole to validate that it meets
its specification and the objectives of its users.
Other Types:
Smoke/Sanity Testing
Alpha Testing
Beta Testing.
Smoke/Sanity Testing
Brief test of major functional elements of a piece of
software to determine if its basically operational.
Alpha Testing
Testing of a software product or system conducted at the
developer’s
site by the customer.
Beta Testing:
Testing conducted at one or more customer sites by the
end-user of a delivered software product or system before the general release
of the application.
Test Management Tools:
The tool which are used to manage test-cases (creating,
Modifying, Storing Testcases for execution ) are known as Test Management
tools. They can be either open source or licensed tools. For Eg: Test Director
& Mercury Quality
Center (MQC) are Licensed
tool(Need to buy license) while Test Link is an open source tool (Free to use)
Defect Tracking tools:
The tool which are used to tracking defects or bugs are
known as defect tracking tools. They are used to Manage the bugs or issues
reported during testing. User can track the status (resolved or not, open or
close etc) of the bug reported during testing.)
QA engineers are required to log the issues found during testing & bug-id is assigned using which the issue is tracked. Defect tracking tool can be open-source or licensed. For eg: Bugzilla is open source-tool & Jira, MQC etc are licensed tool (MQC is test Management tool & also defect tracking tool is integrated into it.) Some defect tracking tool support their integration with Test Management tool. Eg: Bugzilla into Testlink etc.
QA engineers are required to log the issues found during testing & bug-id is assigned using which the issue is tracked. Defect tracking tool can be open-source or licensed. For eg: Bugzilla is open source-tool & Jira, MQC etc are licensed tool (MQC is test Management tool & also defect tracking tool is integrated into it.) Some defect tracking tool support their integration with Test Management tool. Eg: Bugzilla into Testlink etc.
Automation tools:
Automation tools are used for Automation testing. The test
script can be created either by writing script or by using the record and play
back functionality. These tools are used to perform regression testing when the
application becomes stable to save time, resources and repetitive work. These
can also be used in Performance testing, Load & Stress testing. (Creating a
number of virtual user and monitoring the performance of the application when
all the user login at the same time.) Automation tool can be either freeware
(open-source tools) or licensed. Few tools which are widely used for regression
are QTP, Winrunner (both licensed). For load & Performance testing Load
Runner, QTP and Jmeter (opensource) can be used. For unit testing Junit is
used.
Got any query??? comments are welcome....
Thank You!!!