CIS 375 SOFTWARE ENGINEERING
UNIVERSITY OF MICHIGAN-DEARBORN
DR. BRUCE MAXIM, INSTRUCTOR
Date: 11/10/97
Week 10
REAL TIME DESIGN:
- Response time:
- Context switching.
- Interrupt latency (time & overhead to switch tasks).
- Data transfer rates.
- Concepts:
- Interrupt handling.
- Real time databases.
- Real time operating systems.
- Real time languages.
- Task synchronization.
- Analysis & design:
- Mathematical tools:
- Network analysis.
- Queuing theory.
- Graph theory.
- Models (Markov math models).
- Simulation & modeling:
- Ability to create activity charts.
- Ability to create module charts.
- Ability to create state charts.
Date: 11/12/97
Week 10
TESTING:
DEFECTIVE SOFTWARE:
CAUSES OF ERRORS:
- Specification may be wrong.
- Specification may be a physical impossibility.
- Faulty program design.
- Program incorrect.
TYPES OF ERRORS:
- Algorithmic error.
- Computation & precision error.
- Documentation error.
- Capacity error or boundary error.
- Timing and coordination error.
- Throughput or performance error.
- Recovery error.
- Hardware & system software error.
- Standards & procedure errors.
- Reason for testing id to prove the existence of an error,
and then deal with it.
- Has to be an egoless process - if programmers were evaluated
by errors, each program would not have errors.
STAGES OF TESTING:
- Module or unit testing.
- Integration testing,
- Function testing.
- Performance testing.
- Acceptance testing.
- Installation testing.
TYPES OF TESTING:
WHICH TO USE:
- Maximum # of logic paths - determine if open
testing is possible.
- Nature of input data.
- Amount of computation involved.
- Complexity of algorithms.
UNIT TESTING:
- Program reviews.
- Formal verification.
- Testing the program itself.
TESTING PROGRAM LOGIC:
- Statement testing.
- Branch testing (decision points tested).
- Path testing (every path at least once).
STRATEGIES TO GENERATE TEST DATA:
BLACK BOX:
Every possible combination or permutation of
inputs.
WHITE BOX:
Partition input data into classes:
- Every possible input belongs to one of the classes.
- No input belongs to more than one class.
- Any point is representative.
BASIS PATH TESTING:
- Draw flow graph for program code.
- Determine cyclametric complexity of graph.
- Determine the basis set for linearly independent
path.
- Prepare test data to force the execution of linearly
independent path.
CONTROL STRUCTURE TESTING:
- Condition testing.
- E1 < E2, E1 = E2,
E1 > E2, - if / case / etc.
- Data flow testing.
- Scope / visibility - conflicts
- Loop testing.
- a) Equivalence partitioning.
- input ranges.
- (1 valid class & 2 invalid classes)
- input values.
- (1 valid class & 2 invalid classes)
- Set membership
- (1 valid class & 1 invalid class)
- Boolean
- (1 valid class & 1 invalid class)
- b) Boundary testing.
FUNCTION TESTING:
Thread testing (set of actions associated with
particular module functions)
if A then B if A then not B
COMPARISON TESTING:
Several independent versions of the same software
is developed.
Then use black box techniques.
input -> output - means correct
INTEGRATION TESTING:
- Bottom - up testing (test harness).
- Top - down testing (stubs).
- Modified top - down testing - test levels independently.
- Big Bang.
- Sandwich testing.
|
Bottom - Up
|
Top - Down
|
Big Bang
|
Sandwich
|
Integration
|
Early
|
Early
| |
Early
|
Time to get working program
|
Late
|
Early
|
Late
|
Early
|
Drivers
|
Yes
|
No
|
Yes
|
Yes
|
Stub
|
No
|
Yes
|
Yes
|
Yes
|
Parallelism
|
Medium
|
Low
|
High
|
Medium
|
Test specification
|
Easy
|
Hard
|
Easy
|
Medium
|
Product control seq.
|
Easy
|
Hard
|
Easy
|
Hard
|