Introduction To Software Testing: 1.1 Testing As An Engineering Activity

Download as rtf, pdf, or txt
Download as rtf, pdf, or txt
You are on page 1of 14

4223 - THIRUVALLUVAR COLLEGE OF ENGG. & TECH. Vandavasi.

Page 1
IT2032 –SOFTWARE TESTING – UNIT I
BRANCH : CSE - VII SEM

CHAPTER 1
INTRODUCTION TO SOFTWARE TESTING

1.1 TESTING AS AN ENGINEERING ACTIVITY


Software systems are becoming more challenging to build new methods, techniques and tools
are used to develop software and maintenances. The poor quality software that can cause loss of life
or property. So, high quality software should be produced.
For that, you should provide necessary training and create interest to the software
development team in the areas of software product and process quality. Highly qualified staff ensure
that software products are built on time & Software products are built within budget.

Software products with high quality attributes are:


o Reliability
o Correctness
o The ability to meet all user requirements

Elements of the Engineering Design


 Basic principles
 Processes
 Standards
 Measurements
 Tools
 Methods
 Best practices
 Codes of ethics
 Body of knowledge
 The profession of software engineering is slowly acted as a formal engineering discipline.
 The software development activities are also using the engineering approach as follows:
 The development process is well understood
 Projects are well planned
 Life cycles models are defined and followed
 Standards are in place in process and products
 Measurements are employed to evaluate product and process quality
 Components are reviewed
 Verification and validation process play a key role in producing a quality
server
 Engineers have proper education, training and certification.

Dept. of CSE : Prepared By Asst.Prof.: D.KARTHIKEYAN., M.E., 08-07-13


4223 - THIRUVALLUVAR COLLEGE OF ENGG. & TECH. Vandavasi. Page 2
IT2032 –SOFTWARE TESTING – UNIT I
BRANCH : CSE - VII SEM

 A testing specialist who is trained as an engineer should have knowledge of


test related principles, measurements, standards, plans, tools and methods, and
should learn how to apply them to the testing tasks to be performed.

1.2 ROLE OF PROCESS IN SOFTWARE QUALITY


 The software engineering process is the set of methods, practices, standards, documents,
activities, policies and procedures that software engineers used to develop and maintain a
software system and its associated artifacts such as projects and test plans, design documents,
code and manuals.
 Types of manuals namely
1. user manual
2. troubleshoot manual
3. administration manual
4. Quality factors involved in high quality software products:
1. usability
2. reliability
3. testability
4. maintainability
 Different models are used in software engineering process such as
 CMM
 spice
 TMM

1.3 TESTING AS A PROCESS


 Software development process has includes five sub process namely
1. requirement / analysis process
2. product specification process
3. Design process
4. implementation process
5. testing process : v&v
 The testing process further involves in two processes namely verification and validation.
 The technical aspects of the testing relate to the techniques, method, measurement, and
tools used to ensure that the software under test is as defect free and reliable.
 The testing itself is related to two processes called verification, validation.
Validation: It is the process of evaluate a software system during or at the end of the cycle in
order to determine whether it satisfies the specified requirements.
Meaning: Validation is associated with traditional execution based technique that means
exercising the code with test cases.
Verification: It is process of evaluating a software system to determine whether product of
a given development phase satisfy the condition imposed at the start that phase.

Dept. of CSE : Prepared By Asst.Prof.: D.KARTHIKEYAN., M.E., 08-07-13


4223 - THIRUVALLUVAR COLLEGE OF ENGG. & TECH. Vandavasi. Page 3
IT2032 –SOFTWARE TESTING – UNIT I
BRANCH : CSE - VII SEM

Meaning: Verification is usually associated with activities such as inspection and reviews of
software deliverables.

FIG. Example processes embedded in the software development process

 Software testing: Testing is generally described as a group of procedures carried out to


evaluate source aspects of a piece of software.
Purpose of testing processes: testing has a dual purpose process namely reveal defects and to
evaluate quality attributes of software.
 Debugging: it is the process of locating the fault or defect, repairing the code and retesting
the code

1.4 BASIC DEFINITIONS


Faults (Defects)
A fault (defect) is introduced into the software as the result of an error. It is an anomaly in the
software that may cause it to behave incorrectly, and not according to its specification.

Errors
An error is a mistake, misconception, or misunderstanding on the part of a software developer.

Failures
A failure is the inability of a software system or component to perform its required functions within
specified performance requirements.

Dept. of CSE : Prepared By Asst.Prof.: D.KARTHIKEYAN., M.E., 08-07-13


4223 - THIRUVALLUVAR COLLEGE OF ENGG. & TECH. Vandavasi. Page 4
IT2032 –SOFTWARE TESTING – UNIT I
BRANCH : CSE - VII SEM

Test Cases
The usual approach to detecting defects in a piece of software is for the tester to select a set of input
data and then execute the software with the input data under a particular set of conditions. A test case
in a practical sense is a test-related item which contains the following information:
1. A set of test inputs. These are data items received from an external source by the code
under test. The external source can be hardware, software, or human.
2. Execution conditions. These are conditions required for running the test, for example, a
certain state of a database, or a configuration of a hardware device.
3. Expected outputs. These are the specified results to be produced by the code under test.

Test
A test is a group of related test cases, or a group of related test cases and test procedures.

Test Oracle
A test oracle is a document, or piece of software that allows testers to determine whether a test has
been passed or failed.

Test Bed
A test bed is an environment that contains all the hardware and software needed to test a software
component or a software system.

Software Quality
Two concise definitions for quality are found in the IEEE Standard Glossary of Software
Engineering Terminology:
1. Quality relates to the degree to which a system, system component, or process meets
specified requirements.
2. Quality relates to the degree to which a system, system component, or process meets
customer or user needs, or expectations. In order to determine whether a system, system
component, or process is of high quality we use what are called quality attributes. These are
characteristics that reflect quality. For software artifacts we can measure the degree to which
they possess a given quality attribute with quality metrics.

Quality metrics
A metric is a quantitative measure of the degree to which a system, system component, or process
possesses a given attribute.
There are product and process metrics. A very commonly used example of a software product metric
is software size, usually measured in lines of code (LOC). Two examples of commonly used process
metrics are costs and time required for a given task. Quality metrics are a special kind of metric.

A quality metric is a quantitative measurement of the degree to which an item possesses a given
quality attribute.

Dept. of CSE : Prepared By Asst.Prof.: D.KARTHIKEYAN., M.E., 08-07-13


4223 - THIRUVALLUVAR COLLEGE OF ENGG. & TECH. Vandavasi. Page 5
IT2032 –SOFTWARE TESTING – UNIT I
BRANCH : CSE - VII SEM

Many different quality attributes have been described for software. Some examples of quality
attributes with brief explanations are the following:
correctness—the degree to which the system performs its intended function
reliability—the degree to which the software is expected to perform its required functions
under stated conditions for a stated period of time
usability—relates to the degree of effort needed to learn, operate, prepare input, and interpret
output of the software
integrity—relates to the system’s ability to withstand both intentional and accidental attacks
portability—relates to the ability of the software to be transferred from one environment to
another
maintainability—the effort needed to make changes in the software
interoperability—the effort needed to link or couple one system to another.

Another quality attribute that should be mentioned here is testability. This attribute is of
more interest to developers/testers than to clients. It can be expressed in the following two ways:
1. the amount of effort needed to test the software to ensure it performs needed),
2. the ability of the software to reveal defects under testing conditions (some software is designed in
such a way that defects are well hidden during ordinary testing conditions).
Testers must work with analysts, designers and, developers throughout the software life system to
ensure that testability issues are addressed.

Software Quality Assurance Group


The software quality assurance (SQA) group in an organization has ties to quality issues. The group
serves as the customers’ representative and advocate. Their responsibility is to look after the
customers’ interests.
The software quality assurance (SQA) group is a team of people with the necessary training and
skills to ensure that all necessary actions are taken during the development process so that the
resulting software conforms to established technical requirements.

Reviews
In contrast to dynamic execution-based testing techniques that can be used to detect defects and
evaluate software quality, reviews are a type of static testing technique that can be used to evaluate
the quality of a software artifact such as a requirements document, a test plan, a design document, a
code component. Reviews are also a tool that can be applied to revealing defects in these types of
documents.
Definition: A review is a group meeting whose purpose is to evaluate a software artifact or a set of
software artifacts.

CHAPTER 2
TESTING FUNDAMENDALS

Dept. of CSE : Prepared By Asst.Prof.: D.KARTHIKEYAN., M.E., 08-07-13


4223 - THIRUVALLUVAR COLLEGE OF ENGG. & TECH. Vandavasi. Page 6
IT2032 –SOFTWARE TESTING – UNIT I
BRANCH : CSE - VII SEM

2.1 SOFTWARE TESTING PRINCIPLES


 Testing principles are important to test specialists because they provide the foundation for
developing testing knowledge and acquiring testing skills.
 They also provide guidance for defining testing activities as performed in the practice of a
test specialist, A principle can be defined as;
 A general or fundamental, law, doctrine, or assumption,
 A rule or code for conduct,
 The laws or facts of nature underlying the working of an artificial device.
The principles as stated below only related to execution-based testing.

Principle1: Testing is the process of exercising a software component using a selected set of
tests cases, with the internet.
 Revealing defects, and
 Evaluating quality.
 Software engineers have made great progress in developing methods to prevent and eliminate
defects. However, defects do occur, and they have a negative impact on a software quality.
This principle supports testing as an execution-based activity to detect defects.
 The term defect as used in this and in subsequent principle represents any deviations in the
software that have negative impact on its functionality, performance, reliability, security and
other of its specified quality attributes.

Principle-2:When the test objectives is to detect defects, then a good test case is one that has a
high probability of revealing a yet undetected defects.
 The goal for the test is to prove / disprove the hypothesis that is, determine if the specific
defect is present / absent.
 A tester can justify the expenditure of the resources by careful test design so that principle
two is supported.

Principle-3:Test result should be inspected meticulously.


 Tester need to carefully inspect and interpret test results. Several erroneous and costly
scenarios may occur if care is not taken.
Example:
A failure may be overloaded, and the test may be granted a pass status when in reality the
software has failed the test. Testing may continue based on erroneous test result. The defect may be
revealed at some later stage of testing, but in that case it may be moke costly and difficult to locate
and repair.

Principle-4: A test case must contain the expected output or result.

Dept. of CSE : Prepared By Asst.Prof.: D.KARTHIKEYAN., M.E., 08-07-13


4223 - THIRUVALLUVAR COLLEGE OF ENGG. & TECH. Vandavasi. Page 7
IT2032 –SOFTWARE TESTING – UNIT I
BRANCH : CSE - VII SEM

 The test case is of no value unless there is an explicit statement of the expected outputs or
results.
Example:
A specific variable value must be observed or a certain panel button that must light up.

Principle-5: Test cases should be developed for both valid and invalid input conditions.
 The tester must not assume that the software under test will always be provided with valid
inputs.
 Inputs may be incorrect for several reasons.
Example:
Software users may have misunderstandings, or lack information about the nature of the
inputs. They often make typographical errors even when compute / correct information are available.
Device may also provide invalid inputs due to erroneous conditions and malfunctions.

Principle-6: The probability of the existence of additional defects in a software component is


proportional to the number of defects already defected in that component.
Example:
If there are two components A and B and testers have found 20 defects in A and 3 defects in
B, then the probability of the existence of additional defects in A is higher than B.

Principle-7: Testing should be carried out by a group that is independent of the development
group.
 Tester must realize that
1. Developers have a great deal of pride in their work and
2. On practical level it may be difficult for them to conceptualize where defects could be
found.

Principle-8: Tests must be repeatable and reusable


 This principle calls for experiments in the testing domain to require recording of the exact
condition of the test, any special events that occurred, equipment used, and a careful
accounting of the results.
 This information invaluable to the developers when the code is returned for debugging so
that they can duplicate test conditions.

Principle-9: Testing should be planned.


 Test plan should be developed for each level of testing, and objective for each level should be
described in the associated plan.
 The objectives should be stated as quantitatively as possible plan, with their precisely
specified objectives.

Principle-10: Testing activities should be integrated into the software life cycle.

Dept. of CSE : Prepared By Asst.Prof.: D.KARTHIKEYAN., M.E., 08-07-13


4223 - THIRUVALLUVAR COLLEGE OF ENGG. & TECH. Vandavasi. Page 8
IT2032 –SOFTWARE TESTING – UNIT I
BRANCH : CSE - VII SEM

 It is no longer feasible to postpone testing activities until after the code has been written.
 Test planning activities into the software lifecycle starting as early as in the requirements
analysis phases, and continue on throughout the software lifecycle in parallel with
development activities.

Principle-11: Testing is a creative and challenging task.


Difficult and challenges for the tester includes,
 A tester needs to have comprehensive knowledge of the software engineering discipline.
 A tester needs to have knowledge from both experience and education as to how software is
specified, designed and developed.
 A tester needs to be able to manage many details.
 A tester needs to have knowledge of fault type and where faults of a certain type night occur
in code constructs.
 A tester needs a reason like scientist and propose hypotheses that related to presence of
specific type of defects.
 A tester needs to design and record test procedure for running the tests.
 A tester to plan for testing and allocate the proper resources.
 A tester need to execute the tests and is responsible for recording results.
 A tester need to learn to use tools and keeps abreast of the newest test tool advance.

2.2 TESTERS ROLE IN A SOFTWARE DEVELOPMENT ORGANISATION


 The tester job is to reveal defects, find weak points, inconsistent behavior and circumstances
where the software doesn’t work as expected.
 The main function of a tester is to plan, execute, record and analyze test. They don’t debug
the software.
 When defects are detected during testing, software should be returned to the developers who
locate the defect and repair the code. The tester may cooperate with code developers and also
need to work along with the requirements engineers to ensure that requirements are testable
and to plan for system and acceptance test.
 Test managers were need to cooperate with project managers in order to develop test plan,
and with upper management to provide input for the development and maintenance of
organizational testing standards, policies and goals
 Testers also need to cooperate with software quality assurance staff and software engineering
group members

CHAPTER 3
DEFECT CLASSES AND DEFECT REPOSITORY

Dept. of CSE : Prepared By Asst.Prof.: D.KARTHIKEYAN., M.E., 08-07-13


4223 - THIRUVALLUVAR COLLEGE OF ENGG. & TECH. Vandavasi. Page 9
IT2032 –SOFTWARE TESTING – UNIT I
BRANCH : CSE - VII SEM

3.1 DEFECTS
Origins of Defects
 Defects have determined effects on software users, and software engineers work very hard to
produce high-quality software with a low number of defects.
 But even under the best of development circumstances errors are made, resulting in defects
beings injected in the software during the phase of the software lifecycle.

Defect Sources
Lack of education
Poor communication
Oversight
Transcription
Immature process
Impact of S/W artifacts
Errors
Faults defects
Failures
Impact from user’s view
Poor quality software
User dissatisfaction

Fig: Origins of Defects

 Tester as doctors need to have knowledge about possible defects in order to develop defect
hypotheses, they use the hypotheses to;
 Design test cases
 Design test procedure
 Assemble test sets
 Select the testing levels appropriate for the tests
 Evaluate the results of the test.
 A successful testing experiment will prove the hypothesis is true that is, the hypothesized
defect was present. Then the software can be repaired.

Dept. of CSE : Prepared By Asst.Prof.: D.KARTHIKEYAN., M.E., 08-07-13


4223 - THIRUVALLUVAR COLLEGE OF ENGG. & TECH. Vandavasi. Page
10
IT2032 –SOFTWARE TESTING – UNIT I
BRANCH : CSE - VII SEM

3.2 DEFECT CLASSES, THE DEFECT REPOSITORY, AND TEST DESIGN


 Defect can be classified in many ways. It is important for an organization to adapt a single
classification scheme and apply it to projects.
 No matter which classification scheme is selected, some defects will fit into more than one
class or category.
 Because of this problem, developers, testers, and SQA staff should try to be as consistent as
possible when recording defect data.
 Execution-based testing strategies should be selected that have the strongest possibility of
defecting particular types of defects.

Requirement specification
defect classes

Functional description
Features
Feature Interaction
Interface Description
Defect Repository

Defect classes

Severity

Occurrences

Defect reports/
analysis

Design Defect Classes

Dept. of CSE : Prepared By Asst.Prof.: D.KARTHIKEYAN., M.E., 08-07-13


4223 - THIRUVALLUVAR COLLEGE OF ENGG. & TECH. Vandavasi. Page 11
IT2032 –SOFTWARE TESTING – UNIT I
BRANCH : CSE - VII SEM

Algorithm and processing


Control, logic, & sequence Data
Module interface description
External interface description

Defect reports/ Defect reports/


Coding defect classes
analysis analysis
Algorithm and processing
Control, logic, & sequences
Data flow, module interface
Code documentation
External flow, software

Testing defect classes


Test hardness
Test design
Test procedure

Fig: Defect Classes and Defect Repository

Defect classes
Defect classes are classified into four types namely
1. requirement/specification defect class
2. design defect class
3. coding defect class
4. testing defect class

1. Requirement/Specification Defect Class


Some requirement defects are
1. functional description defects- the overall description of what the product does, and
how it should behave is incorrect, ambiguous, and/or incomplete
2. Feature defects- distinguishing characteristics of a software component or system.

Dept. of CSE : Prepared By Asst.Prof.: D.KARTHIKEYAN., M.E., 08-07-13


4223 - THIRUVALLUVAR COLLEGE OF ENGG. & TECH. Vandavasi. Page
12
IT2032 –SOFTWARE TESTING – UNIT I
BRANCH : CSE - VII SEM

3. Failure interaction defects- these are due to an incorrect description of how the features
should interact.
4. Interface description defects- these occur in the description of how the target software
is to interface with external software, hardware and users.

2. Design defects
Some design defects are
1. Algorithms and processing defects- these occur when the processing steps in the algorithm
as described by the pseudo code are incorrect.
2. Control logic and sequence defects- Control defects occur when logic flow in the pseudo
code is not collect.
3. Data Defects- These are associated with in collect design of data structures.
4. Module Interface Description Defects- This include in correct, missing, and /or inconsistent
defects of parameter types.
5. Functional Description Defects- This includes incorrect missing, and/ or unclear defects of
design elements. These defects are best defected during a design review.
6. External Interface Description defects- these are derived four incorrect design description
for inter faces with COTS components, external software systems, databases, and hardware
devices.

3. Coding Defects
1. Algorithmic and processing Defects- Adding levels of programming detail to design, code-
related algorithmic and processing defects now include unchecked overflow and underflow
conditions , comparing inappropriate data types, converting one data type to another,
incorrect ordering of arithmetic operators , misuse or omission of parenthesis , precision loss
an incorrect use of signs.
2. Control logic and sequence Defects- On the coding level these would include incorrect
expression of case statements incorrect iterations of loops.
3. Typographical Defects- These are syntax errors.
4. Initialization Defects- These occur when initialization statements are omitted or are
incorrect this may occur because of misunderstandings or lack of communication between
programmers and / or programmers and designers, carelessness of the programming
environment.
5. Data Flow Defects- These are certain reasonable operational sequence that data should flow
through.
6. Data Defects- These are indicated by incorrect implementation of data structures.
7. Module Interface Defects- As in the case of module design elements, interface defects in the
code may be due to using incorrect or inconsistent parameter type an incorrect number of
parameters.

Dept. of CSE : Prepared By Asst.Prof.: D.KARTHIKEYAN., M.E., 08-07-13


4223 - THIRUVALLUVAR COLLEGE OF ENGG. & TECH. Vandavasi. Page
13
IT2032 –SOFTWARE TESTING – UNIT I
BRANCH : CSE - VII SEM

8. Code Documentation Defects – When the documentation does not reflect what the
programs actually does, or is in complete or ambiguous, this is called a code documentation
defect.
9. External hardware, software interface defects – These defects arise from problems related
to system called links to database, input/output sequence , memory usage , interrupts and
exception handling , data exchange with hardware , protocols , formats, interfaces with build
files , and fixing sequences.

4. Testing Defects
Defects are not confined to code and it related artifacts. Test plans , tests cases, test hardness
and test procedures can also contain defects . Defect in test plans are best detected using
review techniques.
1. Test hardness Defects
2. Test Case Design and Test Procedure Defects- These would encompass incorrect,
incomplete, missing, inappropriate test cases and test procedures.

3.3 DEVELOPER/TESTER SUPPORT FOR DEVELOPING A DEFECT REPOSITORY


The benefits of developing a defect repository to store defect information. As software
engineers and test specialists we should follow the examples of engineers in other disciplines who
have realized the usefulness of defect data. A requirement for repository development should be a
part of testing and/or debugging policy statements. The defect data is useful for test planning, a
TMM level 2 maturity goals.
It helps you to select applicable testing techniques, design (and reuse) the test cases you
need, and allocate the amount of resources you will need to devote to detecting and removing these
defects. This in turn will allow you to estimate testing schedules and costs. The defect data can
support debugging activities as well.

Dept. of CSE : Prepared By Asst.Prof.: D.KARTHIKEYAN., M.E., 08-07-13


4223 - THIRUVALLUVAR COLLEGE OF ENGG. & TECH. Vandavasi. Page
14
IT2032 –SOFTWARE TESTING – UNIT I
BRANCH : CSE - VII SEM

Figure: Defect Repository

A defect repository can help to support achievement and continuous implementation of


several TMM maturity goals including con trolling and monitoring of test, software quality
evaluation and control, test measurement, and test process improvement.

Dept. of CSE : Prepared By Asst.Prof.: D.KARTHIKEYAN., M.E., 08-07-13

You might also like