Upload
clarktony
View
699
Download
0
Tags:
Embed Size (px)
Citation preview
1
Testing with Filmstrips
Tony ClarkSchool of Computing
Thames Valley University
[email protected]://itcentre.tvu.ac.uk/~clark/
2
Overview
• Model Driven Testing• Testing with Filmstrips• Two new features: filmstrips and snapshots• A Case Study• Filmstrips as Extended Use Cases• An Approach to Language Design• Defining the Extension: syntax and semantics• Practical Experimentation: demo• Review and further work
3
Model Driven Testing• Model the system.• Generate tests from models.• Can:
– Test the model.– Test the implementation.
• Most existing work uses behaviour models:– State machines– Collaboration diagrams– Sequence diagrams
4
Testing with Filmstrips
5
Features: Snapshots and Filmstrips• Snapshots are system state descriptions.• Snapshot patterns denote sets of state descriptions.
(Model Based Functional Testing using Pattern Directed Filmstrips. Tony Clark. AST 09, ICSE 09.)
• Filmstrip patterns are sequences of snapshot patterns.
• This talk about filmstrips and filmstrip patterns.
• EOPPEs (http://www.ansa.co.uk/ANSATech/93/Primary/10100002.pdf)
6
A Case Study
7
Basic Use Cases
8
UML Meta Model for Use Cases
9
Proposed Extension
10
Extended Use Case Model
11
An Approach to DSL Design
12
Filmstrip Semantic Domain
context Filmstrip inv: steps = children->iterate(c s = Seq{} | s + c.steps)
context Filmstrip inv: steps->asBag = merged->iterate(c s = Seq{} | s + c.steps)->asBag
13
Basic Semantic Mapping
context BasicSatisfaction inv: spec.inv->forAll(c | filmstrip.steps->forAll(s | c.satisfiedBy(s.before,env) and c.satisfiedBy(s.after,env)))
context BasicSatisfaction inv: spec.pre->forAll(c | c.satisfiedBy(filmstrip.steps->first.before,env)) and spec.post->forAll(c | c.satisfiedBy(filmstrip.steps->last.before,env))
14
Sequenced Behaviour
context SeqSatisfaction inv: filmstrip.children = children.filmstrip and children.spec = spec.children
15
Alternative Behaviour
context AltSatisfaction inv: children->exists(r | r.filmstrip = filmstrip)
16
Parallel Behaviour
context ParSatisfaction inv: children->filmstrip = filmstrip.merged and par.children = children.spec
17
Behaviour Repetition
context StarSatisfaction inv: filmstrip.children->forAll(c | c = basicSatisfaction.filmstrip)
18
Practical Issues
• Generating Sequences
• Language Design
• System Architecture
• Demo
19
Generating Sequences
F ::= Filmstrip Specs
F then F
| F or F
| F par F
| F*
| epsilon
| O
O ::= Operation Specs
20
Sequences[| f then g |] = { p + q | p in [| f |], q in [| g |] }
[| f or g |] = [| f |] union [| g |]
[| f par g |] = { p + q + p’ + q’ |
r in [| f |],
s in [| g |],
(p,p’) in split(r),
(q,q’) in split(s) }
split(s) = { (take(s,i),drop(s,i)) | i in 0..len(s) }
[| f* |] = [| epsilon or (f then f*) |]
[| epsilon |] = { [] }
[| o |] = { [o] }
21
A Language for Testing Java@Filmstrip(hotel.BookingSystem,"C:/project") name = {"hotel1","hotel2"} address = {"Leeds"}in seq op hotelId = addHotel(name,address ,3,100.0)
pre not self.getHotels()->exists(hotel | hotel.getName() = hotelName)
post self.getHotels()->exists(hotel | hotel.getName() = hotelName and hotel.getAddress() = hotelAddress and hotel.getRooms()->size = 3) end ... more filmstrip...do ... action ...end
22
Connecting to Java
Java Application
FilmstripSpecification
FilmstripEngine
Report
Use CaseModel
Demo
23
Review
• Adding snapshot patterns.
• Controlling choices.
• Integration with OMG testing profile.
• Correspondence with UML behaviour.
24