18-Life Cycle Based Testing-06-03-2023
18-Life Cycle Based Testing-06-03-2023
how
Preliminary
Design what
how Detailed
Design what
how
Coding
Unit
Testing
Integration
Testing
System
Testing
High Level
Design Requirements
specification
DetailedDesign
Coding
Unit, Integration,
and System Testing
Maintenance
The Waterfall Lifecycle Model
• Earliest lifecycle model
– NATO conference in 1968
– probably “in use” before that
• Very sequential—output of one phase expresses
“what” must be done in the next phase
• Strong emphasis/importance of design
• What-How cycles are natural points for software
technical inspections
• Basis for unit, integration, and system levels of
testing (see V-Model)
• Basis for many spinoff lifecycle models
The V-Model
Requirements System
Specification Testing
Preliminary Integration
Design Testing
Detailed Unit
Design Testing
Coding
Evaluation of the Waterfall Model
• Advantages
– hierarchical structure maps nicely into large projects
– phases have well-defined end products
• (see IBM’s entry and exit criteria)
– Unit level work can be done in parallel, reducing overall
project interval
• Disadvantages
– Extremely long feedback cycle for customer
– Very late synthesis (begins at integration testing)
– Staff limitations may not support the advantage of massive
parallel development at the unit level
– Requires “perfect foresight”, otherwise early faults propagate
Spin-off Models
• Practitioner responses to waterfall limitations
• Iterative Development
• The Spiral Model
• Rapid Prototyping
• Executable Specification
• Agile models
– Scrum
– eXtreme Programming (XP)
– Test-Driven Development
• Two promising hybrids
– Agile Model-Driven Development (AMDD)
– Model-Driven Agile Develoipment (MDAD)
Iterative Development
Build Requirements
Definition what Specification what
Unit
Testing
Integration
Testing
Regression
Testing
Progression
Testing
Iterative Development
• Preserves a single high level design phase
– amortizing design across increments is risky. Early design
decisions may eliminate later design choices
– defines the sequence and content of “builds” (or increments)
• Builds create the need for regression testing
• Preserves the advantages of Waterfall, AND
• Responds to Waterfall defects
– staffing limitations
– late synthesis
– long feedback cycle with customer
The Spiral Model
• Proposed by Barry Boehm in 1988
• Very similar to the Iterative Model
– builds are selected based on risk and feasibility
• Pictured as an expanding spiral superimposed on the
x-y plane (see internet for copyrighted images)
• “Quadrants” correspond to a sequence of build
activities
– determining objectives
– risk analysis
– development and test
– planning next increment
• Single high level design phase is lost (which might be
an inherent risk)
“Perfect Foresight?”
• Waterfall and the iterative variations have no
answer for the customer who does not have a clear,
complete idea of what is needed.
• “Requirements Elicitation” is the process of helping
customers and developers reach a common
understanding of a proposed system.
• Three lifecycle responses...
– Rapid Prototyping
– Executable Specification
– the Agile methods
Rapid Prototyping
Prototype Cycle
what
Prototype Build
Objectives Prototype
Preliminary how
Design what
Exercise
how Detailed Prototype
Design what
how
Coding
Unit
Testing
Integration
Testing
Regression
Testing
Progression
Testing
Rapid Prototyping
• Helps customer identify needs and defects
– “I’ll know what I want when I see it.”
– provides the “does view” that customers appreciate
– ideal to give the “look and feel” of menu-driven systems
– modify prototype per customer feedback
– Sometimes done for feasibility
• Advantages:
– improved and early feedback with customer
– better basis for design
• Keep or dispose?
– once it has served its purpose, the prototype can be
archived.
– possible to use to identify test scenarios
Executable Specification
what
Unit
Testing
Integration
Testing
Regression
Testing
Progression
Testing
Executable Specification
• Very similar to Rapid Prototyping
– early feedback
– “look and feel”
• Best for event-driven systems
• Executable model is the specification
– finite state machine
– StateChart
– some form of Petri Net
• Need an “engine”
– model is executed by the engine
– usually interactively with customer
Evaluation of Executable
Specification
• Intended for “reactive systems” (event-driven)
• Advantages
– early feedback
– automatic generation of system test cases
– can be used for operator training
– support for early analysis
• Disadvantages
– modeling can be difficult
– training may be necessary
– engine can be expensive
Generic Agile Lifecycle
Customer
Expectations
Iteration
Plan
User Story
Integration
Testing
Design
Code
Test
Agile Development
Iteration
Iteration
Plan
Unit Test
eXtreme Programming
• Kent Beck, 1996
• Distinguishing characteristic: pair programming
– one person has the detailed view (and the keyboard)
– partner has the overall view, and acts as a constant
reviewer
– roles can change
• Bottom-up development precludes a single, high
level design phase
– (but that might not be possible with an uncertain
customer anyway)
Test-Driven Development (TDD)
User
Story
No
Fail Yes
Test Case 1 passes. Test Case 2 fails. Now add just enough code so
that Test Case 2 passes.
User Story 2: A year not
divisible by 4 is a
common year
Test Case 1 Input: 2004
Expected Output: True
Test Case 2 Input: 2007
Expected Output: False
Test Cases 1 and 2 pass. Test Case 3 fails. Now add just enough code
so that Test Case 3 passes.
User Story 3: A century year
not divisible by 400 is a
common year
Test Case 1 Input: 2004, Expected Output: True
Test Case 2 Input: 2007, Expected Output: False
Test Case 3 Input: 1900, Expected Output: False
Test Cases 1, 2 and 3 pass. Test case 4 fails. Now add just enough
code so that test case 4 passes.
User Story 4: A century
year divisible by 400
is a leap year
Test Case 1 Input: 2004, Expected Output: True
Test Case 2 Input: 2007, Expected Output: False
Test Case 3 Input: 1900, Expected Output: False
Test Case 4 Input: 2000, Expected Output: True
Standup
Product
Meeting
Backlog
Design
Sprint Sprint
Backlog Definition
Coding
Test
Small Sprint
Release Test
Scrum Team
Scrum team to focus on what happened the
preceding day and what needs to be done in the
new day.
Testing in Scrum occurs in two levels:
Unit Level-at each day
Sprint Definition:
It looks a lot like preliminary design because
this is the point where the Scrum team
identifies the sequence and contents of
individual sprints
Comparison of Model Driven
Development (MDD) and Test
Driven Development (TDD)
• First American’s view of Eagles and Mice
– Eagles have the “big picture”
– Mice focus on the details
– (both views are important!)
1. c1 = (year Mod 4 = 0)
3
2. c2 = (year Mod 100 = 0)
3. c3 = (year Mod 400 = 0) 4
4, isLeap = False
5
6. IsLeap = True
7. Else 8
8. IsLeap = False 9
9. EndIf
End Function
Decision Table Model of isLeap
Conditions r1 r2 r3 r4 r5 r6 r7 r8
Actions
(logically impossible) X X X X
4, isLeap = False
5. If c1 Then
5
6. If c2 Then
7. If c3 Then 6
8. isLeap = True ‘rule r1
9. Else 7
12. Else
13. isLeap = True ‘rule r4 10 13 16
14. End If
15. Else 11
Iteration
Plan Model
Storming
Test-Driven
Development
Model-Driven Agile
Development
• Re-arrangement of AMDD
• Early emphasis on design as one step (thanks, Georg)
• Implementation uses Test-Driven Development
Model-Driven Agile Development
Requirements
Specification
Project
Modeling Iteration
Iteration
“Final” Modeling
Series of
System
Iterations
Testing
Test-Driven
Development
Iteration
Integration