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.
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 ratings0% 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.
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 ...