Integration and System Testing - PowerPoint PPT Presentation

1 / 50
About This Presentation
Title:

Integration and System Testing

Description:

Some s taken / derived from work by: Mauro Pezz ... and critical modules testing provide better process visibility, especially in complex systems ... – PowerPoint PPT presentation

Number of Views:86
Avg rating:3.0/5.0
Slides: 51
Provided by: facstaff4
Category:

less

Transcript and Presenter's Notes

Title: Integration and System Testing


1
Integration and System Testing
  • Lecture 6
  • Reading Ch. 17.3-17.4, 21-22

2
What is integration testing?
3
Scaffolding
  • Code produced to support development activities
    (especially testing)
  • Not part of the product as seen by the end user
  • May be temporary (like scaffolding in
    construction of buildings
  • Includes
  • Test harnesses, drivers, and stubs

4
Scaffolding
  • Test driver A main program for running tests
  • May be produced before a real main program
  • Provides more control than the real main
    program
  • To drive program under test through test cases
  • Test stubs Substitutes for called functions /
    methods / objects
  • related terms dummy, fake, mock objects, test
    double
  • Test harness Substitutes for other parts of the
    deployed environment
  • Ex Software simulation of a hardware device

5
Integration Faults
  • Integration faults from Perry and Evangelist in
    1985 study
  • Construction These are interface faults endemic
    to languages that physically separate the
    interface specification from the implementation
    code.
  • Inadequate functionality These are faults caused
    by the fact that some part of the system assumed,
    perhaps implicitly, a certain level of
    functionality not provided by another part of the
    system.
  • Disagreements on functionality These are faults
    caused, most likely, by a dispute over the proper
    location of some functional capability in the
    software.
  • Changes in functionality A change in the
    functional capability of some unit was made in
    response to a changing need.
  • Added functionality A completely new functional
    capability was recognized and requested as a
    system modification.
  • Misuse of interface These are faults arising
    from a misunderstanding of the required interface
    among separate units.
  • Data structure alteration Either the size of a
    data structure was inadequate or it failed to
    contain a sufficient number of information fields.

6
Integration Faults
  • Inadequate error processing Errors were either
    not detected or not handled properly.
  • Additions to error processing Changes in other
    units dictated changes in the handling of errors.
  • Inadequate postprocessing These faults reflected
    a general failure to free the computational
    workspace of information no longer required.
  • Inadequate interface support The actual
    functionality supplied was inadequate to support
    the specified capabilities of the interface.
  • Initialization/value errors A failure to
    initialize or assign an appropriate value to a
    data structure caused these faults.
  • Violation of data constraints A specified
    relationship among data items was not supported
    by the implementation.
  • Timing/performance problems These faults were
    caused by inadequate synchronization among
    communicating processes.
  • Coordination of changes Someone failed to
    communicate modifications to one software unit to
    those responsible for other units that depend on
    the first.

7
Integration Testing
  • How would you test for some of these faults?

8
Maybe youve heard ...
  • Yes, I implemented ?module A?, but I didnt test
    it thoroughly yet.
  • It will be tested along with ?module B? when
    thats ready.

9
Translation...
  • I didnt think at all about the strategy for
    testing. I didnt design ?module A? for
    testability.
  • I didnt think about the best order to build and
    test modules ?A? and ?B?.
  • Yes, I implemented ?module A?, but I didnt test
    it thoroughly yet.
  • It will be tested along with ?module B? when
    thats ready.

10
Integration Plan Test Plan
  • Integration test plan drives and is driven by the
    project build plan
  • A key feature of the system architecture and
    project plan

System Architecture
...
...
Build Plan
Test Plan
...
11
Big Bang Testing
  • Test only after integrating all modules
  • Advantages
  • Disadvantages

12
Integration Testing Strategy
  • Structural orientation modules constructed
    integrated and tested based on a hierarchical
    project structure
  • Top-down
  • Bottom-up
  • Sandwich
  • Functional orientation modules integrated
    according to application characteristics or
    features
  • Threads
  • Critical modules

13
Top down .
Working from the top level (in terms of use or
include relation) toward the bottom. No drivers
required if program tested from top-level
interface (e.g. GUI, CLI, web app, etc.)
14
Top down ..
Write stubs of called or used modules at each
step in construction
15
Top down ...
As modules replace stubs, more functionality is
testable
16
Top down ... complete
... until the program is complete, and all
functionality can be tested
17
Bottom Up .
Starting at the leaves of the uses hierarchy,
we never need stubs
18
Bottom Up ..
... but we must construct drivers for each module
(as in unit testing) ...
19
Bottom Up ...
... an intermediate module replaces a driver, and
needs its own driver ...
20
Bottom Up ....
21
Bottom Up .....
... so we may have several working subsystems ...
22
Bottom Up (complete)
... that are eventually integrated into a single
system.
23
Sandwich .
Working from the extremes (top and bottom) toward
center, we may use fewer drivers and stubs
24
Sandwich ..
Sandwich integration is flexible and adaptable,
but complex to plan
25
Thread ...
A thread is a portion of several modules that
together provide a user-visible program feature.
26
Thread ...
Integrating one thread, then another, etc., we
maximize visibility for the user
27
Thread ...
As in sandwich integration testing, we can
minimize stubs and drivers, but the integration
plan may be complex
28
Critical Modules
  • Strategy Start with riskiest modules
  • Risk assessment is necessary first step
  • May include technical risks (is X feasible?),
    process risks (is schedule for X realistic?),
    other risks
  • May resemble thread or sandwich process in
    tactics for flexible build order
  • Constructing parts of one module to test
    functionality in another
  • Key point is risk-oriented process
  • Integration testing as a risk-reduction activity,
    designed to deliver any bad news as early as
    possible

29
Choosing a Testing Strategy
  • Functional strategies require more planning
  • Structural strategies (bottom up, top down,
    sandwich) are simpler
  • But thread and critical modules testing provide
    better process visibility, especially in complex
    systems
  • Possible to combine
  • Top-down, bottom-up, or sandwich are reasonable
    for relatively small components and subsystems
  • Combinations of thread and critical modules
    integration testing are often preferred for
    larger subsystems

30
Components
  • Component Reusable unit of deployment
  • Deployed and integrated multiple times
  • Integrated by different teams (usually)
  • Component producer is distinct from component
    user
  • Behavior characterized by an interface or
    contract
  • Components are different than an object
  • Use persistent storage instead of local state
  • May be accessed by assorted communication
    mechanism, not just methods
  • Often larger grain than objects
  • Example A complete database system may be a
    component

31
Component Interface Contracts
  • Application programming interface (API) is
    distinct from implementation
  • Interface includes everything that must be known
    to use the component
  • More than just method signatures, exceptions, etc
  • May include non-functional characteristics like
    performance, capacity, security
  • May include dependence on other components

32
Challenges in Testing Components
  • The component builders challenge
  • The component users challenge

33
Testing a Component Producer View
  • First Thorough unit and subsystem testing
  • Functional testing based on API
  • Second Thorough acceptance testing
  • Based on scenarios of expected use
  • Includes stress and capacity testing
  • Find and document the limits of applicability
  • Rule of thumb Reusable component requires at
    least twice the effort (often more) in design,
    implementation, and testing as a subsystem
    constructed for a single use.

34
Testing a Component User View
  • Not primarily to find faults in the component
  • Major question Is the component suitable for
    this application?
  • Primary risk is not fitting the application
    context
  • Unanticipated dependence or interactions with
    environment
  • Performance or capacity limits
  • Missing functionality, misunderstood API
  • Risk high when using component for first time
  • Reducing risk Trial integration early
  • Often worthwhile to build driver to test model
    scenarios, long before actual integration

35
DISCUSSION QUESTIONS
36
Whole System Testing Overview
37
System Testing
  • Key characteristics of system testing
  • Comprehensive (whole system, whole spec)
  • Based on specification of observable behavior
  • Verification against a requirements specification
  • Not validation
  • Not opinion
  • Independent of design and implementation
  • Avoid repeating errors in system test design

38
Incremental System Testing
  • System tests are often used to measure progress
  • System test suite covers all features and
    scenarios of use
  • As project progresses, the system passes more and
    more system tests
  • Assumes a threaded incremental build plan
  • Features exposed at top level as they are
    developed

39
Global Properties
  • Some system properties are inherently global
  • Performance
  • Latency
  • Reliability
  • Early and incremental testing is still necessary
  • only provides estimates
  • A major focus of system testing
  • The only opportunity to verify global properties
    against actual system specifications
  • Especially to find unanticipated effects
  • an unexpected performance bottleneck

40
Context-Dependent Properties
  • Some properties depend on the system context and
    use
  • Examples
  • Performance properties depend on environment and
    configuration
  • Privacy depends both on system and how it is used
  • Medical records system must protect against
    unauthorized use, and authorization must be
    provided only as needed
  • Security depends on threat profiles
  • Threats change!
  • Testing is just one part of the approach

41
Operational Properties
  • Some properties (especially properties related to
    performance) are parameterized by use ...
  • requests per second, size of database, ...
  • Extensive stress testing is required
  • varying parameters within an operational envelope
  • need to "push" the envelope and beyond
  • Goal A well-understood model of how the property
    varies with the parameter
  • How sensitive is the property to the parameter?
  • Where is the edge of the envelope?
  • What can we expect when the envelope is exceeded?

42
Stress Testing
  • Requires extensive simulation of the execution
    environment
  • Systematic variation
  • What happens when we push the parameters?
  • What if the number of users or requests is 10
    times more, or 1000 times more?
  • Often requires more resources (human and machine)
    than typical test cases
  • Separate from regular feature tests
  • Run less often, with more manual control
  • Diagnose deviations from expectation
  • Which may include difficult debugging of latent
    faults!

43
Acceptance TestingStatistical Measures
  • Acceptance Testing Answering the question
    "Should the product in the current state be
    released?"
  • Uses quantitative dependability goals
  • Reliability
  • Availability
  • Mean time to failure
  • ...
  • Requires valid statistical samples from an
    operational profile
  • Fundamentally different from systematic testing
  • Systematic testing biased towards where faults
    may lie
  • Dependability unbiased samples of operational
    behavior

44
Acceptance TestingProcess-based Measures
  • Less rigorous than statistical testing
  • Based on similarity with prior projects
  • Alpha testing Real users, controlled
    environment
  • Beta testing Real users, real (uncontrolled)
    environment
  • May statistically sample users rather than uses
  • Expected history of bug reports

45
Usability
  • A usable product
  • is quickly learned
  • allows users to work efficiently
  • is pleasant to use
  • Objective criteria
  • Time and number of operations to perform a task
  • Frequency of user error
  • blame user errors on the product!
  • Usability rests ultimately on testing with real
    users validation, not verification
  • Overall, subjective satisfaction
  • Preferably in the usability lab by usability
    experts

46
Varieties of Usability Test
  • Exploratory testing
  • Investigate mental model of users
  • Performed early to guide interface design
  • Comparison testing
  • Evaluate options (specific interface design
    choices)
  • Observe (and measure) interactions with
    alternative interaction patterns
  • Usability validation testing
  • Assess overall usability (quantitative and
    qualitative)
  • Includes measurement error rate, time to complete

47
Typical Usability Test Protocol
  • Select representative sample of user groups
  • Typically 3-5 users from each of 1-4 groups
  • Questionnaires verify group membership
  • Ask users to perform a representative sequence of
    tasks
  • Observe without interference (no helping!)
  • The hardest thing for developers is to not help.
    Professional usability testers use one-way
    mirrors.
  • Measure (clicks, eye movement, time, ...) and
    follow up with questionnaire

48
Regression Testing
  • Yesterday it worked, today it doesnt
  • I was fixing X, and accidentally broke Y
  • That bug was fixed, but now its back
  • Tests must be re-run after any change
  • Adding new features
  • Changing, adapting software to new conditions
  • Fixing other bugs
  • Regression testing can be a major cost of
    software maintenance
  • Sometimes much more than making the change

49
Regression Testing Issues
  • Maintaining test suite
  • If I change feature X, how many test cases must
    be revised because they use feature X?
  • Which test cases should be removed or replaced?
    Which test cases should be added?
  • Cost of re-testing
  • Often proportional to product size, not change
    size
  • Big problem if testing requires manual effort
  • Possible problem even for automated testing, when
    the test suite and test execution time grows
    beyond a few hours

50
Test Case Maintenance
  • Some maintenance is inevitable
  • If feature X has changed, test cases for feature
    X will require updating
  • Some maintenance should be avoided
  • Example Trivial changes to user interface or
    file format should not invalidate large numbers
    of test cases
  • Test suites should be modular!
  • Avoid unnecessary dependence
  • Generating concrete test cases from test case
    specifications can help
  • Eliminate obsolete and redundant test cases
  • Not a trivial effort
Write a Comment
User Comments (0)
About PowerShow.com