0% found this document useful (0 votes)
27 views16 pages

Chapter 7 - SQA

This document discusses software testing concepts and activities. It covers the definitions of key terms like faults, errors, failures, and testing techniques like unit testing, integration testing, and system testing. It also describes how to plan testing by starting test case design early and parallelizing test activities to reduce costs and time needed for completion. Managing the testing process is important to maximize fault discovery while minimizing resources.

Uploaded by

Bonsa Mesganaw
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views16 pages

Chapter 7 - SQA

This document discusses software testing concepts and activities. It covers the definitions of key terms like faults, errors, failures, and testing techniques like unit testing, integration testing, and system testing. It also describes how to plan testing by starting test case design early and parallelizing test activities to reduce costs and time needed for completion. Managing the testing process is important to maximize fault discovery while minimizing resources.

Uploaded by

Bonsa Mesganaw
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 16

Software Engineering

Instructor: Mohammed Oumer[M.Sc.]


[email protected]
Samara University
Chapter Seven: SQA
This Chapter Covers:
 An overview of testing
Testing concepts
Testing activities
Managing testing
An Overview of Testing
Testing is the process of finding differences between the
expected behavior specified (required) by system models
and the observed (existing) behavior of the system.

When differences are found, developers identify the defect


causing the observed failure and modify the system to
correct it.
Cont.
Failure (lack of success) is any deviation (divergence) of the
observed behavior from the specified behavior.

An error (mistake) means the system is in a state such that


further processing by the system will lead to a failure, which
causes the system to deviate from its intended (planed)
behavior.

fault, also called defect or bug, is the algorithmic cause of an


error.

The goal of testing is to maximize the number of discovered


faults, which then allows developers to correct them and
increase the reliability of the system.
Testing Concepts
In this section, we present the model elements used during testing.
• A component is a part of the system that can be isolated for testing. A
component can be an object, a group of objects, or one or more
subsystems.

• A fault, also called bug or defect, is a design or coding mistake that


may cause abnormal component behavior.

• An error is a manifestation (display) of a fault during the execution


of the system.

• A failure is a deviation between the specification of a component


and its behavior. A failure is triggered by one or more errors.
Cont.
• A test case is a set of inputs and expected results that
exercises a component with the purpose of causing failures
and detecting faults.

• A test stub is a partial implementation of components on


which the tested component depends. A test driver is a
partial implementation of a component that depends on the
tested component. Test stubs and drivers enable components
to be isolated from the rest of the system for testing.

• A correction is a change to a component. The purpose of a


correction is to repair a fault.
Testing Activities
In this section, we describe the activities of testing. These include:
• Inspecting components, which finds faults in an individual component
through the manual inspection of its source code.

• Unit testing, which finds faults by isolating an individual component


using test stubs and drivers and by exercising the component using a
test case.

• Integration testing, which finds faults by integrating several


components together.

• System testing, which focuses on the complete system, its functional


and nonfunctional requirements, and its target environment.
Cont.
Inspecting components

Inspections find faults in a component by reviewing its


source code in a formal meeting (pre-arranged/planned).

Inspections can be conducted before or after the unit test.

The inspection is conducted by a team


of developers, including the author of the component, a
moderator who facilitates the process, and one or more
reviewers who find faults in the component.
Unit testing
Unit testing focuses on the building blocks of the software
system, that is, objects and subsystems. There are three
motivations behind focusing on components.

First, unit testing reduces the complexity of the overall test


activities, allowing us to focus on smaller units of the
system.

Second, unit testing makes it easier to pinpoint (exact point)


and correct faults, given that few components are involved
in the test.

Third, unit testing allows parallelism in the testing


activities; that is, each component can be tested
independently of one another.
Integration testing
Integration testing detects faults that have not been detected
during unit testing, by focusing on small groups of components.

Two or more components are integrated and tested, and once


tests do not reveal (disclose) any new faults, additional
components are added to the group.

Integration testing strategies several approaches have been


devised (plan) to implement an integration testing strategy:

•big bang testing


•bottom-up testing
•top-down testing
• sandwich testing
System testing
Once components have been integrated, system testing
ensures that the complete system complies with the functional and
nonfunctional requirements of the system. There are several
system testing activities that are performed:

•Functional testing. Test of functional requirements (RAD)


•Performance testing. Test of nonfunctional requirements (SDD)
• Acceptance testing. Usability, functional, and performance tests
performed by the customer in the development environment against
acceptance criteria (from Project Agreement).
System testing
• Installation testing. Usability, functional, and performance
tests performed by the customer in the target environment.

If the system is only installed at a small selected set of


customers it is called a beta test.
Managing testing
In previous sections, we showed how different testing
techniques are used to maximize the number of faults
discovered. In this section, we describe how to manage
testing activities to minimize the resources need. Many
testing activities occur near the end of the project, when
resources are running low and when the delivery pressure
increases.

First, we describe the planning of test activities


Planning testing
Developers can reduce the cost of testing and the elapsed time
necessary for its completion through careful planning. Two key
elements are to start the selection of test cases early and to
parallelize tests.
Managing testing
Developers responsible for testing can design test cases as
soon as the models they validate become stable. Functional
tests can be developed when the use cases are completed.

Unit tests of subsystems can be developed when their


interfaces is defined. Similarly, test stubs and drivers can
be developed when component interfaces are stable.
Developing tests early enables the execution of tests to start
as soon as components become available.

The second key element in shortening testing time is to


parallelize testing activities: All component tests can be
conducted in parallel.
Reading Assignment
Big bang testing and sandwich testing
Bottom-up testing and top-down testing
Thank You ...

You might also like