120 likes | 205 Views
“ Fast Spec-to-Test” Project. Participants. University of Ottawa Mitel Corporation. Leïla Charfi , Luigi Logrippo & group (with RL Probert & group) School of Information Technology and Engineering University of Ottawa. Objectives. The Problem:
E N D
“Fast Spec-to-Test” Project Participants University of Ottawa Mitel Corporation Leïla Charfi, Luigi Logrippo & group (with RL Probert & group) School of Information Technology and Engineering University of Ottawa
Objectives • The Problem: Obtaining tests that cover the requirements • Automatic functional test generation • by developing automatic test purpose generation from requirements Use Case Maps (UCM) LOTOS • Proposition of a design methodology with automatic test suite generation: • UCM at requirements stage • LOTOS at design & prototyping stage • Automatic LOTOS test purpose generation from UCM • Automatic test suite generation from LOTOS
Design Methodology for Telecommunication Systems Use Case Maps Requirements stage (1) Mapping UCM to LOTOS statements (2) lotos2msc LOTOS specification LOTOS scenarios MSCs Design stage msc2lotos (3) Input for possible SDL specification, ... verification, validation and test suite generation (4) Test suites Implementation stage Test suite execution on Implementation
Use Case Maps (UCM) • Semi-formal notation, used at requirement stage • Visual representation of system’s behavior • Derived from informal requirements or use cases checkIfIdle [Idle] end point [busy] component responsibility or_fork start point stub phoneA phoneB switch checkCalleesStatus offHook dial offHook onHook disconnection Example of map: simple call establishment
LOTOS Language Of Temporal Ordering Specification • Formal Description Technique • Design of telecommunication systems • Validation tools: interactive simulation (step-by-step execution), validation using test conformance on the specification • LOLA • XELUDO • CEASAR • Test generation tools • UCM2LotosTests: LOTOS scenario generation from UCM • TGV: test suite generation from LOTOS scenarios • TorX: test generation and execution of test suites
UCM to LOTOS mapping(1) UCM elements LOTOS elements map, component process stub start-point responsibility action end-point or-fork choice operator [] and-fork parallel composition
UCM2LOTOSTests (1) (2) phoneB switch phoneA offHook checkCalleesStatus checkIfIdle dial [Idle] onHook offHook [busy] disconnection checkCalleesStatus Test generation algorithm generates 2 scenarios phoneA switch phoneA phoneB switch offHook offHook checkIfIdle dial dial checkIfIdle [Idle] [busy] disconnection onHook offHook UCM to LOTOS scenario transformation Process Calle_Idle [ user_to_phone, phone_to_user]: exit Process Calle_Busy[ user_to_phone, phone_to_user] :exit user_to_phone !A !phoneA !offHook; phone_to_user !phoneA !A !dialTone; user_to_phone !A !phoneA !dial !B; phone_to_user !phoneB !B ! ringTone; user_to_phone !B !phoneB ! offHook; ( user_to_phone !A !phoneA !onHook; phone_to_user !phoneB !B !disconnectTone; user_to_phone !B !phoneB !onHook; [] user_to_phone !A !phoneA !onHook; phone_to_user !phoneB !B !disconnectTone; user_to_phone !B !phoneB !onHook) user_to_phone !A !phoneA !offHook; phone_to_user !phoneA !A !dialTone; user_to_phone !A !phoneA !dial !B; phone_to_user !phoneA !A! busyTone; user_to_phone !A !phoneA !onHook; endProc Aim: covering the UCM with test cases endProc
Test Purpose (MSC format) Message Sequence Chart debB userA debA userB offHook dialTone Test purpose: - Abstract description of a subset of the specification - Tests the functional behavior of the specification against its expected behavior dial[B] ring ringTone offHook answer onHook disconnection onHook
TGV Test suite generation with TGV(3) (4) Test suite generated from LOTOS using TGV Test purpose 0 0 user_to_phone !A !offHook; INPUT user_to_phone !B !offHook (INCONCLUSIVE) user_to_phone !A !offHook 2 1 1 phone_to_user !A !dialTone; OUTPUT phone_to_user !A !dialTone user_to_phone !B !offHook (INCONCLUSIVE) 3 4 2 user_to_phone !A !dial !B; INPUT user_to_phone !A !dial !B user_to_phone !B !offHook (INCONCLUSIVE) 5 6 3 phone_to_user !B !ringingOn; OUTPUT phone_to_user !B !ringingOn 7 4 phone_to_user !B !ringBackTone; OUTPUT phone_to_user !B !ringBackTone 8 5 user_to_phone !B !offHook; INPUT user_to_phone !B !offHook 9 6 phone_to_user !A !ringBackToneOff; OUTPUT phone_to_user !A !ringBackToneOff user_to_phone !A !offHook (INCONCLUSIVE) user_to_phone !B !onHook (INCONCLUSIVE) 10 11 7 12 user_to_phone !B !onHook; INPUT user_to_phone !B !onHook user_to_phone !A !onHook; INPUT user_to_phone !A !onHook 13 8 14 11 phone_to_user !A !disconnectTone; OUTPUT phone_to_user !A !disconnectTone phone_to_user !B !disconnectTone; OUTPUT phone_to_user !B !disconnectTone 15 9 16 12 user_to_phone !A !onHook user_to_phone !A !onHook; INPUT(PASS) user_to_phone !B !onHook user_to_phone !B !onHook; INPUT(PASS) 18 10 17
switch? checkIfIdle phone2! idle phone2! busy switch? checkIfIdle phone2! busy switch !indefinedUsr phone2! idle Conformance relation used by TGV I: implementation, S: specification I ioconf S traces(S), O(I after ) O(S after ) S I1 I2 switch? checkForward switch? checkIfIdle phone2! idle phone2! busy I1ioconf S I2 not ioconf S The Implementation can have more inputs The Specification can have more outputs
Success to date and Lessons Learned • Use of UCM to formalize requirements: Automatic test generation with full coverage of the UCM (implying full coverage of the requirements) Easy derivation of a prototype using the UCM to LOTOS mapping
Key Issues • How to design UCMs so as to facilitate requirement documentation and obtention of meaningful test case • Automating as much as possible UCM to LOTOS translation • More experience is needed...