filmstrip testing

Post on 14-Jun-2015

701 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Testing with Filmstrips

Tony ClarkSchool of Computing

Thames Valley University

tony.clark@tvu.ac.ukhttp://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

top related