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

2.Testing Concepts, Issues

For it student.

Uploaded by

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

2.Testing Concepts, Issues

For it student.

Uploaded by

Masood Ahmad
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 41

Department of Computer Science

Testing: Concepts, Issues,


and Techniques
Course : Software Quality Engineering
Instructor: Ahsan Ali [email protected]
Why Testing?
• As studied in the previous class.

• To summarize, testing fulfills two primary purposes:

• To demonstrate quality or proper behavior;


• To detect and fix problems.
Major activities and the generic testing
process
• Test planning and preparation, which set the goals for testing, select
an overall testing strategy, and prepare specific test cases and the
general test procedure.
• Test execution and related activities, which also include related
observation and measurement of product behavior.
• Analysis and follow-up, which include result checking and analysis to
determine if a failure has been observed, and if so, follow-up
activities are initiated and monitored to ensure removal of the
underlying causes, or faults, that led to the observed failures in the
first place.
Generic testing process
Generic testing process
• Many forms of informal testing include just this middle group of
activities related to test execution, with some informal ways to
communicate the results and fix the defects, but without much
planning and preparation.
• However, in all forms of systematic testing, the other two activity
groups, particularly test planning and preparation activities, play a
much more important role in the overall testing process and
activities.
Generic testing process
• Defect prevention may effectively reduce defect injections during
software development,
• resulting in fewer faults to be detected and removed through testing
• reducing the required testing effort and expenditure.
• Formal verification can be used to verify the correctness of some
core functions in a product instead of applying exhaustive testing to
them.
• Fault tolerance and failure containment strategies might be
appropriate for critical systems where the usage environment may
involve many unanticipated events that are hard or impossible to test
during development.
Basic questions about testing
• What artifacts are tested?
• The primary types of objects or software artifacts to be tested are software
programs or code written in different programming languages.
• Program code is the focus of our testing effort and related testing techniques and
activities.
• What to test, and what kind of faults is found?
• Black-box (or functional) testing verifies the correct handling of the external
functions of the software, failures specific to the external functions can be observed,
leading to corresponding faults being detected and removed. The emphasis is on
reducing the chances of encountering functional problems by target customers.
• White-box (or structural) testing verifies the correct implementation of internal
units, structures, and relations among them. The emphasis is on reducing internal
faults so that there is less chance for failures later on no matter what kind of
application environment the software is subjected to.
Basic questions about testing
• When, or at what defect level, to stop testing?
• Coverage based criterion
• Most of the traditional testing techniques use some coverage information as the
stopping criterion,
• higher coverage means higher quality or lower levels of defects.
• Quality is not directly assessed.
• Usage based criterion
• On the other hand, product reliability goals can be used as a more objective criterion to
stop testing.
• ensure that the faults that are most likely to cause problems to customers are detected
and removed, and the reliability of the software reaches certain targets before testing
stops.
Questions about testing techniques
• Many different testing techniques can be applied to perform testing in
different sub-phases, for different types of products, and under different
environments
• What is the underlying model used in a specific testing technique?
• the systematic techniques for software testing are based on some formalized
models, we need to examine the types and characteristics of these models to get a
better understanding of the related techniques
• There are two basic types of models: those based on simple structures such as
checklists and partitions in Chapter 8, and those based on finite-state machines
(FSMs)
Questions about testing techniques
• Are techniques for testing in other domains applicable to software testing?
• Examples include error/fault seeding, mutation, immunization and other techniques
used in physical, biological, social, and other systems and environments

• If multiple testing techniques are available, can they be combined or


integrated for better effectiveness or efficiency?
• Different techniques have their own advantages and disadvantages, different
applicability and effectiveness under different environments. They may share many
common ideas, models, and other artifacts.
• It makes sense to combine or integrate different testing techniques and related
activities to maximize product quality or other objectives while minimizing total cost
or effort.
Questions about test activities and
management
• These questions help us analyze and classify different test activities.
• When can specific test activities be performed?
• Because testing is an execution-based QA activity, a prerequisite to
actual testing is the existence of the implemented software units,
components, or system to be tested, although preparation for
testing can be carried out in earlier phases of software
development.
• As a result, actual testing of large software systems is typically
organized and divided into various sub-phases starting from the
coding phase up to post-release product support.
Questions about test activities and
management
• What is the product type or market segment for the product under
testing?
• Most testing techniques are generic
• Some testing techniques that are particularly applicable or suitable to specific
application domains or specific types of products
FUNCTIONAL VS. STRUCTURAL TESTING:
WHAT TO TEST?
• Functional Testing
• Functional testing focus on the external behavior of a software system or its
various components, while viewing the object to be tested as a black-box

• Structural testing
• structural testing focus on the internal implementation, while viewing the
object to be tested as a white-box that allows us to see the contents inside.
FUNCTIONAL VS. STRUCTURAL TESTING:
WHAT TO TEST?
• Objects and perspectives
• Software programs or code exists in various forms and is written in different
programming languages
• viewed either as individual pieces or as an integrated whole
• different levels of testing corresponding to different views of the code and
different levels of abstraction

• At the most detailed level


• testing of individual statements, decisions, and data items, typically in a small
scale by focusing on an individual program unit or a small component.
FUNCTIONAL VS. STRUCTURAL TESTING:
WHAT TO TEST?
• Intermediate level
• various program elements or program components may be treated as an
interconnected group, and tested accordingly
• done at component, sub-system, or system levels, with the help of some
models to capture the interconnection and other relations among different
elements or components.
• Abstract level
• the whole software systems can be treated as a “black- box”, while we focus
on the functions or input-output relations instead of the internal
implementation.
FUNCTIONAL VS. STRUCTURAL TESTING:
WHAT TO TEST?
• Actual testing for large software systems is typically organized and
divided into various sub-phases starting from the coding phase up to
post-release product support, including
• unit testing,
• component testing,
• integration testing,
• system testing,
• acceptance testing,
• beta testing,
• etc.
Functional or Black Box Testing
• Verifies the correct handling of the external functions provided by the
software, through the observation of the program external behavior
during execution

• input, output, and other observable characteristic


• distinguish between expected and unexpected behavior
• repeated execution to eliminate the possibilities of hardware problems
• the common way through which problems experienced by actual customers
are reported and fixed
Functional or Black Box Testing
• Common form of BBT is the use of specification checklists

• Concrete examples of input to a calculator program might include the specific


numbers entered and the action requested, such as division operation of two
numbers.

• More formalized and systematic BBT can be based on some formal models.

• Models are derived from system requirement or functional specifications


Functional or Black Box Testing
• BBT follows the major test activities of planning, execution, and
follow-up
• The compiler example:
• Planning
• Execution
• Follow up: The testing Oracle Problem

• Information recorded at test execution is used in these follow-up


activities to recreate failure scenarios, to diagnose problems, to locate
failure causes and identify specific faults in software design and code,
and to fix them
Functional or Black Box Testing
• Exit Criterion for BBT

• Traditional functional coverage criteria or reliability criteria for finishing the


testing session.
Structural or White-Box Testing (WBT)
• Structural testing verifies the correct implementation of internal
units, such as program statements, data structures, blocks, etc., and
relations among them
• a glass-box or a transparent- box, where one can see through to view
the internal units and their interconnections

• The simplest form of WBT is statement coverage testing through the


use of various debugging tools, or debuggers, which help us in tracing
through program executions
• problems of omission or design problems cannot be easily detected through
WBT
Structural or White-Box Testing (WBT)
• the tester needs to be very familiar with the code under testing to trace
through its executions
• typically performed by the programmers themselves
• makes defect fixing easy.

• WBT follows the major test activities of planning, execution, and follow-up
• WBT is typically limited to a small scale (due to large implementations)
• For large products, the WBT activities (unit testing) are carried out in the
encompassing framework where most of the planning is subject to the
environment; and the environmental constraints pretty much determine
what can be done (planning phase not so important)
Structural or White-Box Testing (WBT)

• Defect fixing is made easy by the tight connection between program


behavior and program units, and through the dual role played by the
programmers as testers
• The stopping criteria are also relatively simple: Once planned
coverage has been achieved, such as exercising all statements, all
paths, etc., testing can stop
• internal quality measures, such as defect levels, can also be used as a
stopping criterion.
Comparing BBT with WBT
• Perspective:
• The key question which distinguishes BBT and WBT.
• BBT perspective: External Functional Behavior
• WBT perspective: Internal Implementation Testing

• BBT and WBT can also be compared by the way in which they address
the following questions:
• Objects: WBT is generally used to test small objects, such as small software
products or small units of large software products;
• while BBT is generally more suitable for large software systems or substantial
parts of them as a whole.
Comparing BBT with WBT
• Timeline: WBT is used more in early sub-phases of testing for large software
systems, such as unit and component testing,
• while BBT is used more in late sub-phases, such as system and acceptance
testing.

• Defect focus: The emphasis is on reducing the chances of encountering


functional problems by target customers.
• In WBT, the emphasis is on reducing internal faults so that there is less chance
for failures later on no matter what kind of application environment the
software is subjected to.
Comparing BBT with WBT
• Defect detection and fixing: WBT defects are easier to fix than those through
BBT because of the direct connection.
• However, WBT may miss certain types of defects, such as omission and design
problems, which could be detected by BBT.
• In general BBT is effective in detecting and fixing problems of interfaces and
interactions, while WBT is effective for problems localized within a small unit.

• Techniques: Various techniques can be used to build models and generate


test cases to perform systematic BBT or WBT.
• A specific technique is a BBT one if external functions are modeled; while the
same technique can be a WBT one if internal implementations are modeled.
Comparing BBT with WBT
• Tester: BBT is typically performed by dedicated professional testers, and could
also be performed by third-party personnel in a setting of IV&V (independent
verification and validation);
• while WBT is often performed by developers themselves.
COVERAGE-BASED VS. USAGE-BASED
TESTING: WHEN TO STOP TESTING?
• The answer generally depends on the completion of some preplanned
activities, coverage of certain entities, or whether a pre-set goal has
been achieved.

• The question can be refined into two different questions:


• On a small or a local scale, we can ask: “When to stop testing for a specific
test activity?’
• On a global scale, we can ask: “When to stop all the major test activities?” this
question is equivalent to: “When to stop testing and release the product?’
COVERAGE-BASED VS. USAGE-BASED
TESTING: WHEN TO STOP TESTING?
• Without a formal assessment for decision making, decision to stop
testing can usually be made in two general forms:

• Resource-based criteria, where decision is made based on resource


consumptions. The most commonly used such stopping criteria are
• “Stop when you run out of time.”
• “Stop when you run out of money.”
• Irresponsible from Quality perspective but nevertheless employed.
COVERAGE-BASED VS. USAGE-BASED
TESTING: WHEN TO STOP TESTING?
• Activity-based criteria
• “Stop when you complete planned test activities.”
• implicitly assumes the effectiveness of the test activities in ensuring the
quality of the software product.
• assumption could be questionable without strong historical evidence based
on actual data from the project concerned

• Exit criteria based on formal analyses and assessments


• On the global level, the exit from testing is associated with product release,
which determined the level of quality that a customer or a user could expect.
COVERAGE-BASED VS. USAGE-BASED
TESTING: WHEN TO STOP TESTING?
• Coverage of certain components, paths and statements in conjunction with
some formal assessment.

• Many other factors need to be considered before an accurate quality


assessment can be made based on coverage.
• For example, different testing techniques and sub-phases may be effective in detecting
and removing different types of defects, leading to multi- stage reliability growth and
saturation patterns (Horgan and Mathur, 1995)

• coverage information gives us an approximate quality estimate, and can be


used as the exit criterion when actual reliability assessment is unavailable,
such as in the early sub-phases of testing.
Usage-based statistical testing (UBST) and
operational profiles (OPs)
• Actual customer usage of software products can be viewed as a form
of usage-based testing
• Software patches after the product release
• Frequent patches can damage the reputation of the dev org.
• Hence, Beta testing
• if the actual usage, or anticipated usage for a new product, can be
captured and used in testing, product reliability could be most
directly assured
• In usage-based statistical testing (UBST), the overall testing
environment resembles the actual operational environment for the
software product in the field
Usage-based statistical testing (UBST) and
operational profiles (OPs)
• Test cases in the test suite resembles the usage scenarios, sequences,
and patterns of actual software usage by the target customers
• As the massive number of customers and diverse usage patterns
cannot be captured in an exhaustive set of test cases, statistical
sampling is needed.
• actual usage information needs to be captured in various models,
commonly referred to as “operational profiles” or Ops
• Two primary types of usage models or OPs are:
Coverage and coverage-based testing (CBT)
• Traditional testing techniques use various
forms of test coverage as the stopping criteria
• BBT => a checklist of major functions
based on product specifications when BBT is
used
• WBT => a checklist of all the product
components or all the statements
Generic steps and major sub-activities for CBT
model construction and test preparation
• Defining the model: Represented by some graphs, with individual
nodes representing the basic model elements and links representing
the interconnections

• Checking individual model elements to make sure the individual


elements, such as links, nodes, and related properties, have been
tested individually, typically in isolation, prior to testing using the
whole model. This step also represents the self-checking of the
model, to make sure that the model captures what is to be tested.
Generic steps and major sub-activities for CBT
model construction and test preparation
• Defining coverage criteria: Besides covering the basic model
elements above, some other coverage criteria are typically used to
cover the overall execution and interactions. Example
• For partition-based testing, we might want to cover the boundaries in
addition to individual partitions;
• For FSM-based testing, we might want to cover state transition sequences
and execution paths.
• Derive test cases: Once the coverage criteria are defined, we can
design our test cases to achieve them. The test cases need to be
sensitized, that is, with its input values selected to realize specific
tests, anticipated results defined, and ways to check the outcomes
planned ahead of time.
Comparing CBT with UBST
• As mentioned in the start, two questions can be used for the
comparison.
• Perspective: UBST views the objects of testing from a user’s
perspective and focuses on the usage scenarios, sequences, patterns,
and associated frequencies or probabilities; while CBT views the
objects from a developer’s perspective and focuses covering
functional or implementation units and related entities.
• Stopping criteria: UBST use product reliability goals as the exit
criterion; and CBT using coverage goals - surrogates or
approximations of reliability goals - as the exit criterion.
Comparing CBT with UBST
• Other comparison factors include,
• Objects: Although the objects tested may overlap, CBT is generally used to
test and cover small objects,
• small software products
• small units of large software products
• large systems at a high level of abstraction,
• while UBST is generally more suitable for large software systems as a
whole.
• Verification vs. validation: Although both CBT and UBST can be used for
both verification test and validation test, UBST is more likely to be used for
validation test because of their relationship to customers and users.
Comparing CBT with UBST
• Timeline: For large software systems, CBT is often used in early sub-
phases of testing, such as unit and component testing,
• while UBST is often used in late sub-phases of testing, such as system
and acceptance testing.
• Defect detection: In UBST, failures that are more likely to be
experienced by users are also more likely to be observed in testing,
leading to detection and removal of faults for reliability improvement.
• In CBT, failures are more closely related to things tested, which may
lead to effective fault removal but may not be directly linked to
improved reliability due to different exposure ratios for software
faults.
Comparing CBT with UBST
• Testing environment: UBST uses testing environment similar to that
for in-field operation at customer installations; while CBT uses
environment specifically set up for testing.

• Techniques: Various techniques can be used to build models and


generate test cases to perform systematic CBT. When these models
are augmented with usage information (probabilities of checklist
items, partitions, states, and state transitions), they can be used as
models for UBST also.
Comparing CBT with UBST
• Customer and user roles: UBST models are constructed with
extensive customer and user input;
• while CBT models are usually constructed without active customer or
user input. UBST is also more compatible with the customer and user
focus in today’s competitive market.
• Tester: Dedicated professional testers typically perform UBST; while
CBT can be performed by either professional testers or by developers
themselves.

You might also like