Your SlideShare is downloading. ×
Filmstrip testing
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Filmstrip testing

679

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
679
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Testing with Filmstrips Tony Clark School of Computing Thames Valley University [email_address] http://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 Filmstrip Specification Filmstrip Engine Report Use Case Model
  • 23. Demo
  • 24. Review
    • Adding snapshot patterns.
    • Controlling choices.
    • Integration with OMG testing profile.
    • Correspondence with UML behaviour.

×