iswim for testing

42
1 ISWIM For Testing – A Model Driven Approach Tony Clark [email protected] http://itcentre.tvu.ac.uk/~clark

Upload: clarktony

Post on 14-Jun-2015

219 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Iswim for testing

1

ISWIM For Testing

–A Model Driven

Approach

Tony Clark

[email protected]

http://itcentre.tvu.ac.uk/~clark

Page 2: Iswim for testing

2

Overview

•A Requirement for Constraints:

–Telecomms

–Aerospace

–Business Migration

–Information Systems, SOA

•ISWIM Constraint Representation

•ISWIM for testing

•Conclusion

Page 3: Iswim for testing

3

Modelling with Constraints

Page 4: Iswim for testing

4

Telecomms

Page 5: Iswim for testing

5

Netw

ork

Models

Check configurations based

on properties of devices and

network components.

Page 6: Iswim for testing

6

Aerospace

Message Bus

Integrated Modular Avionics (IMA)

Page 7: Iswim for testing

7

IMA Models

Check configurations

of IMA components

that must satisfy

requirements of

navigation modes.

Page 8: Iswim for testing

8

Payload Configurations

Page 9: Iswim for testing

9

Business Processes

Page 10: Iswim for testing

©Xactium

Ltd

. 2007

10

Restructuring A Company

Restructure

Company

Produce

Plans

Implement

Plans

Produce

BizRep

Develop

Plans

Produce

Restructuring

Plan

Produce

Operating

Plan

Ditch

Unprofitable

Customers

Reorganize

products

Check sequences of company

snapshots –do they satisfy the

business goals?

Page 11: Iswim for testing

©Ltd

. 2007

11

Web Services and SOA

Page 12: Iswim for testing

©Xactium

Ltd

. 2007

12

Information Systems

Page 13: Iswim for testing

13

ISWIM Constraint Representation

Page 14: Iswim for testing

14

Constraints

•W

hat not to

be: O

CL, Java.

•Vis

ual la

nguage (w

hy?), w

ith e

xam

ple

s:

–Sim

ple

sta

te.

–Variable

s.

–And/O

r/N

ot

–Q

uantification

–Pre

dic

ate

s.

Page 15: Iswim for testing

15

Snapshots

•O

bje

cts

, slo

ts a

nd lin

ks.

•C

onte

xt m

ust be g

iven:

–Para

mete

rs

–R

oot obje

ct

–Self in s

tate

machin

e.

–O

bserv

ations in g

oals

.

•C

onju

nction o

f conte

nts

.

•N

egation.

Page 16: Iswim for testing

16

Snapshots as Constraints

not c.business_report.terminal and

c.restructuring_plan.addresses = c.business_report

Page 17: Iswim for testing

17

Sharing via Identifiers

(separation of concerns)

Page 18: Iswim for testing

18

Negation

…but not ...

Page 19: Iswim for testing

19

Unknowns Tied Together

…same as …

Page 20: Iswim for testing

20

Links Over Collections

Page 21: Iswim for testing

21

Universal Quantification

Page 22: Iswim for testing

22

Existential Quantification

Page 23: Iswim for testing

23

Snapshot Checking Machine

Page 24: Iswim for testing

24

Syntax Model

Page 25: Iswim for testing

©Xactium

Ltd

. 2007

25

An Execution Machine

Page 26: Iswim for testing

26

Machine Transitions

Page 27: Iswim for testing

27

Auxiliary Machine Defs

Page 28: Iswim for testing

28

An Im

ple

menta

tion –

ISW

IM for M

odel D

riven T

esting

Page 29: Iswim for testing

29

Testing Architecture

Program

Testing

Engine

Interface

(XML)

Test

Cases

(XML)

Test

Reports

(XM

L)

Program

Display

Test

Reports

(HTML)

Display

Test Cases

(HTML)

Model

(XMF-Mosaic)

Test cas

es includ

e:

•Static Sce

narios

•Dyn

amic Sce

narios

•Inv

ariants

•Pr

e/P

ost Con

ditions

•State

Mac

hines

C

B

A

DE

F

G

H

I

Page 30: Iswim for testing

A sales system keeps info on customers, accounts and their orders.

Customer ids (CID) are unique, but custotheir mer information may be distributed.

30

Page 31: Iswim for testing

31

Model Browser

A model is constructed that shows the

structure and behaviour of the

application.

The model could be extracted from

an implementation or could be

constructed by hand or could be

constructed from another modelling

tool.

The example shows the classes

extracted from a Java application.

Page 32: Iswim for testing

32

Test Specification

Each class may have:

•Static scenarios defining typical

configurations of instances. These may

be positive and negative examples.

•Invariants defining conditions that

must hold true at all times.

Each operation may have specifications

defining:

•Precondition defining an expectation of

the method.

•Postcondition defining a corresponding

guarantee if the precondition is satisfied.

Page 33: Iswim for testing

33

Static Scenarios

A static scenario defines a collection of

objects that conforms to the model.

The tool will support the construction of

the scenarios by completing slots and

links where possible.

Types of values can be checked by the

tool.

The scenario represents an

implementation independent definition of

application data.

It might represent a correct, or an illegal,

configuration.

The scenario can be exported in XML and

recreated as implementation data.

SomeContacts

Page 34: Iswim for testing

34

Example Invariant

For any sales system,

With a contacts database,

For each known person p,

It is not the case,

That the customer id value is

EMPTY.

NoEmptyCID

Page 35: Iswim for testing

35

Another Invariant

For any sales system,

With a contacts

database,

For each known

person p1,

With an id x,

It is not the case that,

There is a known

person p2,

With the id x,

Where p1 and p2 are

different people.

AllCIDsUnique

Page 36: Iswim for testing

36

addContact(String id,String info)

Pre-condition

Post-condition

Page 37: Iswim for testing

37

placeOrder(String id,int items)

post-condition

Page 38: Iswim for testing

©Xactium

Ltd

. 2007

38

Export as XML

Page 39: Iswim for testing

publicclassSalesSystem {

ContactsDB contactsDB= newContactsDB();

OrderSystem orderSystem= newOrderSystem();

publicvoidaddContact(String CID,String info) {

JTest test = JTest.startCall("test/SalesSystem","addContact",this,CID,info);

if(legal(CID)) contactsDB.addContact(CID,info);

test.endCall(null);

} publicvoidplaceOrder(String CID,intamount) {

JTest test = JTest.startCall("test/SalesSystem","placeOrder",this,CID,amount);

orderSystem.placeOrder(CID,amount);

test.endCall(null);

}}

39

Modify Source (or use class loader)

Page 40: Iswim for testing

40

A Test Harness

public

staticvoidmain(String[] args) {

SalesSystem sales =

(SalesSystem)JTest.build("test/SalesSystem", "SomeContacts");

JTest.startRecording("C:/testResults.xml");

JTest.checkInv("test/SalesSystem", sales);

sales.addContact("PERSON1","Fred is a sales manager.");

System.out.println();

sales.placeOrder("PERSON1",10);

JTest.stopRecording();

}

Page 41: Iswim for testing

©Xactium

Ltd

. 2007

41

Test Results

Page 42: Iswim for testing

42

Conclusion

•Constraints occur everywhere in modelling

•Constraints can be expressed as snapshots

(ISWIM).

•Constraints can be executed in various

ways to suit the solution.

•ISWIM-constraints can be implemented as

a tool for model driven testing.