0% found this document useful (0 votes)
6 views

Ch8.Testing (2)-١

Uploaded by

karamict8
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

Ch8.Testing (2)-١

Uploaded by

karamict8
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 44

Chapter 8 – Software Testing

Chapter 8 Software Testing 1


Program testing

 Testing is intended to show that a program does what it is


intended to do and to discover program defects before it is
put into use.
 When you test software, you execute a program using
artificial data.
 You check the results of the test run for errors, anomalies or
information about the program’s non-functional attributes.
 Can reveal the presence of errors NOT their absence.
 Testing is part of a more general verification and validation
process, which also includes static validation techniques.

Chapter 8 Software Testing 2


Program testing goals

 To demonstrate to the developer and the customer that


the software meets its requirements.
 For custom software, this means that there should be at least
one test for every requirement in the requirements document.
For generic software products, it means that there should be
tests for all of the system features, plus combinations of these
features, that will be incorporated in the product release.
 To discover situations in which the behavior of the
software is incorrect, undesirable or does not conform to
its specification.
 Defect testing is concerned with rooting out undesirable system
behavior such as system crashes, unwanted interactions with
other systems, incorrect computations and data corruption.
Chapter 8 Software Testing 3
Validation and defect testing

 The first goal leads to validation testing


 You expect the system to perform correctly using a given set of
test cases that reflect the system’s expected use.
 The second goal leads to defect testing
 The test cases are designed to expose defects. The test cases
in defect testing can be deliberately obscure and need not reflect
how the system is normally used.

Chapter 8 Software Testing 4


Testing process goals

 Validation testing
 To demonstrate to the developer and the system customer that
the software meets its requirements
 A successful test shows that the system operates as intended.
 Defect testing
 To discover faults or defects in the software where its
behaviour is incorrect or not in conformance with its specification
 A successful test is a test that makes the system perform
incorrectly and so exposes a defect in the system.

Chapter 8 Software Testing 5


An input-output model of program testing

Chapter 8 Software Testing 6


Verification vs validation

Testing is part of a broader process of software verification


and validation (V & V).
 Verification:
"Are we building the product right”.
 The software should conform to its specification.
 Validation:
"Are we building the right product”.
 The software should do what the user really requires.

Chapter 8 Software Testing 7


Inspections and testing

 Software inspections Concerned with analysis of


the static system representation to discover problems
(static verification)
 May be supplement by tool-based document and code
analysis.
 Discussed in Chapter 15.
 Software testing Concerned with exercising and
observing product behaviour (dynamic verification)
 The system is executed with test data and its operational
behaviour is observed.

Chapter 8 Software Testing 8


Inspections and testing

Chapter 8 Software Testing 9


Software inspections

 These involve people examining the source


representation with the aim of discovering anomalies and
defects.
 Inspections not require execution of a system so may be
used before implementation.
 They may be applied to any representation of the system
(requirements, design, configuration data, test data,
etc.).
 They have been shown to be an effective technique for
discovering program errors.

Chapter 8 Software Testing 10


Advantages of inspections

 During testing, errors can mask (hide) other errors.


Because inspection is a static process, you don’t have to
be concerned with interactions between errors.
 Incomplete versions of a system can be inspected
without additional costs. If a program is incomplete, then
you need to develop specialized test harnesses to test
the parts that are available.
 As well as searching for program defects, an inspection
can also consider broader quality attributes of a
program, such as compliance with standards, portability
and maintainability.

Chapter 8 Software Testing 11


Example

 Dynamic Testing:
The first error (i <= numbers.length) will cause
an ArrayIndexOutOfBoundsException.This error masks the second
error (division by zero), as the second error is never reached during
testing if the first error halts the program.
 Static Inspection:
both errors can be identified independently. Since no execution occurs,
errors do not interact, allowing all issues to be detected without one
hiding the other.
Chapter 8 Software Testing 12
Inspections and testing

 Inspections and testing are complementary and not


opposing verification techniques.
 Both should be used during the V & V process.
 Inspections can check conformance with a specification
but not conformance with the customer’s real
requirements.
 Inspections cannot check non-functional
characteristics such as performance, usability, etc.

Chapter 8 Software Testing 13


Stages of testing

 Development testing, where the system is tested


during development to discover bugs and defects.
 Release testing, where a separate testing team test a
complete version of the system before it is released to
users.
 User testing, where users or potential users of a system
test the system in their own environment.

Chapter 8 Software Testing 14


Development testing

Chapter 8 Software Testing 15


Development testing

 Development testing includes all testing activities that


are carried out by the team developing the system.
 Unit testing, where individual program units or object classes are
tested. Unit testing should focus on testing the functionality of
objects or methods.
 Component testing, where several individual units are integrated
to create composite components. Component testing should
focus on testing component interfaces.
 System testing, where some or all of the components in a
system are integrated and the system is tested as a whole.
System testing should focus on testing component interactions.

Chapter 8 Software Testing 16


Unit testing

 Unit testing is the process of testing individual


components in isolation.
 It is a defect testing process.
 Units may be:
 Individual functions or methods within an object
 Object classes with several attributes and methods
 Composite components with defined interfaces used to access
their functionality.

Chapter 8 Software Testing 17


Object class testing

 Complete test coverage of a class involves


 Testing all operations associated with an object
 Setting and interrogating all object attributes
 Exercising the object in all possible states.
 Inheritance makes it more difficult to design object class
tests as the information to be tested is not localised.

Chapter 8 Software Testing 18


The weather station object interface

Chapter 8 Software Testing 19


Weather station testing

 Using a state model, identify sequences of state


transitions to be tested and the event sequences to
cause these transitions
 For example:
 Shutdown -> Running-> Shutdown
 Configuring-> Running-> Testing -> Transmitting -> Running
 Running-> Collecting-> Running-> Summarizing -> Transmitting
-> Running

Chapter 8 Software Testing 20


Automated testing

 Whenever possible, unit testing should be automated so


that tests are run and checked without manual
intervention.
 In automated unit testing, you make use of a test
automation framework (such as JUnit) to write and run
your program tests.
 Unit testing frameworks provide generic test classes that
you extend to create specific test cases. They can then
run all of the tests that you have implemented and
report, often through some GUI, on the success of
otherwise of the tests.

Chapter 8 Software Testing 21


Automated test components

 A setup part, where you initialize the system with the test
case, namely the inputs and expected outputs.
 A call part, where you call the object or method to be
tested.
 An assertion part where you compare the result of the
call with the expected result. If the assertion evaluates to
true, the test has been successful, if false, then it has
failed.

Chapter 8 Software Testing 22


Choosing unit test cases

 The test cases should show that, when used as


expected, the component that you are testing does
what it is supposed to do.
 If there are defects in the component, these should be
revealed by test cases.
 This leads to 2 types of unit test case:
 The first of these should reflect normal operation of a program
and should show that the component works as expected.
 The other kind of test case should be based on testing
experience of where common problems arise. It should use
abnormal inputs to check that these are properly processed and
do not crash the component.
Chapter 8 Software Testing 23
Component testing

 Software components are often composite components


that are made up of several interacting objects.
 For example, in the weather station system, the reconfiguration
component includes objects that deal with each aspect of the
reconfiguration.
 You access the functionality of these objects through the
defined component interface.
 Testing composite components should therefore focus
on showing that the component interface behaves
according to its specification.
 You can assume that unit tests on the individual objects within
the component have been completed.
Chapter 8 Software Testing 24
System testing

 System testing during development involves integrating


components to create a version of the system and then
testing the integrated system.
 The focus in system testing is testing the interactions
between components.
 System testing checks that components are compatible,
interact correctly and transfer the right data at the right
time across their interfaces.
 System testing tests the emergent behaviour of a
system.

Chapter 8 Software Testing 25


System and component testing

 During system testing, reusable components that have


been separately developed and off-the-shelf systems
may be integrated with newly developed components.
The complete system is then tested.
 Components developed by different team members or
sub-teams may be integrated at this stage. System
testing is a collective rather than an individual process.
 In some companies, system testing may involve a separate
testing team with no involvement from designers and
programmers.

Chapter 8 Software Testing 26


Use-case testing

 The use-cases developed to identify system interactions


can be used as a basis for system testing.
 Each use case usually involves several system
components so testing the use case forces these
interactions to occur.
 The sequence diagrams associated with the use case
documents the components and interactions that are
being tested.

Chapter 8 Software Testing 27


Collect weather data sequence chart

Chapter 8 Software Testing 28


Test cases derived from
sequence diagram

 An input of a request for a report should have an


associated acknowledgement. A report should ultimately
be returned from the request.
 You should create summarized data that can be used to check
that the report is correctly organized.
 An input request for a report to WeatherStation results in
a summarized report being generated.
 Can be tested by creating raw data corresponding to the
summary that you have prepared for the test of SatComms and
checking that the WeatherStation object correctly produces this
summary. This raw data is also used to test the WeatherData
object.

Chapter 8 Software Testing 29


Regression testing

 Regression testing is testing the system to check that


changes have not ‘broken’ previously working code.
 In a manual testing process, regression testing is
expensive but, with automated testing, it is simple and
straightforward. All tests are rerun every time a change is
made to the program.
 Tests must run ‘successfully’ before the change is
committed.

Chapter 8 Software Testing 30


Release testing

Chapter 8 Software Testing 31


Release testing

 Release testing is the process of testing a particular


release of a system that is intended for use outside of
the development team. Normally, the system release is
for customers and users.
 The primary goal of it, is to convince the supplier of the
system that it is good enough for use.

Chapter 8 Software Testing 32


Release testing VS System testing

There are two important distinctions between release


testing and system testing during the development process:
 System testing by the development team should focus
on discovering bugs in the system (defect testing).
 A separate team that has not been involved in the
system development should be responsible for release
testing. The objective of release testing is to check that
the system meets its requirements and is good enough
for external use (validation testing).

Chapter 8 Software Testing 33


Requirements-based
testing
 Requirements-based testing is validation rather than
defect testing—you are trying to demonstrate that the
system has properly implemented its requirements.
 For example, consider related requirements for the MHC-PMS (introduced
in Chapter 1), which are concerned with checking for drug allergies:
 Set up a patient record with no known allergies. Prescribe medication for allergies that are
known to exist. Check that a warning message is not issued by the system.
 Set up a patient record with a known allergy. Prescribe the medication to that the patient is
allergic to, and check that the warning is issued by the system.
 Set up a patient record in which allergies to two or more drugs are recorded. Prescribe both
of these drugs separately and check that the correct warning for each drug is issued.
 4. Prescribe two drugs that the patient is allergic to. Check that two warnings are correctly
issued.
 5. Prescribe a drug that issues a warning and overrule that warning. Check that the system
requires the user to provide information explaining why the warning was overruled.

Chapter 8 Software Testing 34


Scenario testing

 Scenario testing is an approach to release testing where


you devise typical scenarios of use and use these to
develop test cases for the system.
 A scenario is a story that describes one way in which the
system might be used.
 Scenarios should be realistic and real system users
should be able to relate to them.

Chapter 8 Software Testing 35


A usage scenario for the Mentcare system

George is a nurse who specializes in mental healthcare. One of his responsibilities is to visit patients
at home to check that their treatment is effective and that they are not suffering from medication
side effects.
On a day for home visits, George logs into the Mentcare system and uses it to print his schedule of
home visits for that day, along with summary information about the patients to be visited. He
requests that the records for these patients be downloaded to his laptop. He is prompted for his key
phrase to encrypt the records on the laptop.
One of the patients that he visits is Jim, who is being treated with medication for depression. Jim
feels that the medication is helping him but believes that it has the side effect of keeping him awake
at night. George looks up Jim’s record and is prompted for his key phrase to decrypt the record. He
checks the drug prescribed and queries its side effects. Sleeplessness is a known side effect so he
notes the problem in Jim’s record and suggests that he visits the clinic to have his medication
changed. Jim agrees so George enters a prompt to call him when he gets back to the clinic to make
an appointment with a physician. George ends the consultation and the system re-encrypts Jim’s
record.
After, finishing his consultations, George returns to the clinic and uploads the records of patients
visited to the database. The system generates a call list for George of those patients who He has to
contact for follow-up information and make clinic appointments.

Chapter 8 Software Testing 36


Features tested by scenario

 Authentication by logging on to the system.


 Downloading and uploading of specified patient records
to a laptop.
 Home visit scheduling.
 Encryption and decryption of patient records on a mobile
device.
 Record retrieval and modification.
 Links with the drugs database that maintains side-effect
information.
 The system for call prompting.
Chapter 8 Software Testing 37
User testing

Chapter 8 Software Testing 38


User testing

 User or customer testing is a stage in the testing process


in which users or customers provide input and advice
on system testing.
 User testing is essential, even when comprehensive
system and release testing have been carried out.
 The reason for this is that influences from the user’s working
environment have a major effect on the reliability, performance,
usability and robustness of a system. These cannot be
replicated in a testing environment.

Chapter 8 Software Testing 39


Types of user testing

 Alpha testing
 Users of the software work with the development team to test
the software at the developer’s site.
 Beta testing
 A release of the software is made available to users to allow
them to experiment and to raise problems that they discover with
the system developers.
 Acceptance testing
 Customers test a system to decide whether or not it is ready to
be accepted from the system developers and deployed in the
customer environment.
 Primarily for custom systems.

Chapter 8 Software Testing 40


The acceptance testing process

Chapter 8 Software Testing 41


Stages in the acceptance testing process

 Define acceptance criteria


 Plan acceptance testing
 Derive acceptance tests
 Run acceptance tests
 Negotiate test results
 Reject/accept system

Chapter 8 Software Testing 42


Agile methods and acceptance testing

 In agile methods, the user/customer is part of the


development team and is responsible for making
decisions on the acceptability of the system.
 Tests are defined by the user/customer and are
integrated with other tests in that they are run
automatically when changes are made.
 There is no separate acceptance testing process.
 Main problem here is whether or not the embedded user
is ‘typical’ and can represent the interests of all system
stakeholders.

Chapter 8 Software Testing 43


Key points

 Testing can only show the presence of errors in a


program. It cannot demonstrate that there are no
remaining faults.
 Development testing is the responsibility of the software
development team. A separate team should be
responsible for testing a system before it is released to
customers.
 Development testing includes unit testing, in which you
test individual objects and methods, component testing
in which you test related groups of objects, and system
testing, in which you test partial or complete systems.

Chapter 8 Software Testing 44

You might also like