Top Banner
BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam
18

BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

Mar 30, 2015

Download

Documents

Alisha Walker
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

BAiT: Adaptive Test Case Execution

in Practice

Jens R. CalaméCentrum voor Wiskunde en Informatica,

Amsterdam

Page 2: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 2

Agenda

1. Introduction2. The Toolset for BAiT3. An Exemplary Case: The ATM4. Structure of BAiT5. Conclusion

Page 3: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 3

Introduction

• BAiT: Behavior Adaptation in Testing• Toolset to generate test cases and test oracles as well as

execute tests on nondeterministic systems with data

Page 4: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 4

Agenda

1. Introduction2. The Toolset for BAiT3. An Exemplary Case: The ATM4. Structure of BAiT5. Conclusion

Page 5: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 5

BAiT: Test Case & Oracle Generation

• Test generation with TGV (enumerative approach)

• Chaotic data abstraction for input and output parameters of events

• Test oracle generation for Eclipse Prolog constraint solver in order to select test data

• Automatic generation of variable names for the test case

Page 6: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 6

BAiT: Test Proxy Generation

• Test Proxy for Java-based SUTs

• Instantiation of test object within test proxy

• Procedure-basedbidirectional communication (publisher-subscriber pattern)

• Mapping of datatypes from specification language to target platform

Page 7: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 7

BAiT: Test Execution

• Test execution of pre-calculated test trace (behavior and data)

• Adaptation to the IUT's reactions, rather than immediate assignment of verdict

• BAiT framework provides adapters for user-defined– trace selection and– test data selection

algorithms

Page 8: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 8

Agenda

1. Introduction2. The Toolset for BAiT3. An Exemplary Case: The ATM4. Structure of BAiT5. Conclusion

Page 9: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 9

An Exemplary Case: The ATM

ATM specification (partially) ATM test purpose (completely)

Page 10: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 10

An ATM Test Case

Photos: Wikipedia and ECB

!getPin(1234)

?pinCorrect

!getAmount(100)

!initBalance(1000)

?retFifty(2)

?retFifty(1)

?retTwenty(2)

?retTen(1)

?

!initPin(1234)

Page 11: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 11

An ATM Test Case (2)

May 25, 2007 3:06:19 PM nl.cwi.sen2.bait.steps.TraceImpl merge

FINE: Pruning planned test trace.May 25, 2007 3:06:19 PM nl.cwi.sen2.bait.RunTest findTrace

FINER: Examining: [init],initPin(Pin),getPin(PinUser),pinCorrect, initBalance(Bal),getAmount(Amt),[tau],retFifty(Fif),emitBankNotesMay 25, 2007 3:06:19 PM nl.cwi.sen2.bait.steps.TraceImpl solve

FINEST: init(G1),initPin(G1,G2,lparam(nat(Pin))),[...][Pin in {[-Infinity .. Infinity]} => 1234]May 25, 2007 3:06:21 PM nl.cwi.sen2.bait.steps.TraceImpl solve

FINEST: init(G1),initPin(G1,G2,lparam(nat(1234))),[...][...]May 25, 2007 3:06:26 PM nl.cwi.sen2.bait.RunTest executeTest

INFO: Trying: [init],initPin(1234),getPin(1234),pinCorrect, initBalance(1000),getAmount(100),[tau],retFifty(2),emitBankNotesMay 25, 2007 3:06:26 PM nl.cwi.sen2.bait.RunTest executeTest

FINE: initPin(1234) -> OK[...]May 25, 2007 3:06:26 PM nl.cwi.sen2.bait.RunTest executeTest

FINE: retFifty(2) -> NOT OKMay 25, 2007 3:06:26 PM nl.cwi.sen2.bait.RunTest executeTest

INFO: Expected: retFifty(2), received: retFifty(1) -> Trace failed, trying alternative.

1. Precalculation of possible test trace

2. Iterative data selection

3. Stepwise execution of the trace…

…until the IUT deviates from the precalculated trace.

Page 12: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 12

An ATM Test Case (3)May 25, 2007 3:06:26 PM nl.cwi.sen2.bait.RunTest executeTest

INFO: Trace deviated; executed so far: [init],initPin(1234),getPin(1234),pinCorrect,initBalance(1000), getAmount(100),[tau],retFifty(1),retTwenty(2),retTen(1), emitBankNotesMay 25, 2007 3:06:26 PM nl.cwi.sen2.bait.steps.TraceImpl merge

FINE: Pruning planned test trace.May 25, 2007 3:06:26 PM nl.cwi.sen2.bait.steps.TraceImpl merge

FINE: Adding retFifty(1) to trace stub.[...]May 25, 2007 3:06:26 PM nl.cwi.sen2.bait.steps.TraceImpl merge

FINE: Adding emitBankNotes to trace stub.May 25, 2007 3:06:27 PM nl.cwi.sen2.bait.RunTest executeTest

INFO: Test finished; executed: [init],initPin(5),getPin(5), pinCorrect,initBalance(1000),getAmount(100),[tau],retFifty(1), retTwenty(2),retTen(1),emitBankNotesMay 25, 2007 3:06:27 PM nl.cwi.sen2.bait.RunTest executeTest

INFO: The test case ended with verdict PASS.

5. Appending received system output to trace.

6. Solve test trace with pending system output;

assign verdict or calculate new trace.

4. Pruning not yet executed part of test trace.

Page 13: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 13

Agenda

1. Introduction2. The Toolset for BAiT3. An Exemplary Case: The ATM4. Structure of BAiT5. Conclusion

Page 14: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 14

Structure of BAiT: The Tools

• BAiT: Behavior Adaptation in Testing• Toolset to generate test cases and test oracles as well as

execute tests on nondeterministic systems with data

Page 15: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 15

Structure of BAiT: Execution Part

BAiTExecution Core

Behavior MappingConstraint Solver

Behavior MappingImpl. Under Test

Data MappingConstraint Solver

Data MappingImpl. Under Test

Impl.UnderTest

ConstraintSolver

Trace Selection

Data Selection

•Trace class: trace execution management•Step class: communication with IUT•Trace selection from complete test graph (IOLTS with all possible test cases for a given test purpose)

Test Oracle

Test Case(s)

•Variable class: Codec of data to constraint solver, data instantiator and IUT•Data instantiation algorithm(s)

Page 16: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 16

Agenda

1. Introduction2. The Toolset for BAiT3. An Exemplary Case: The ATM4. Structure of BAiT5. Conclusion

Page 17: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 17

Conclusion

• Behavior Adaptation in Testing helps finding more reliable verdicts in testing non-deterministic systems

• A prototypical framework for BAiT has been developed procedure-based setting with atomic data

• Further work:– Extension of framework

for other settings– Extension of framework

to structured datatypes– Case Study:

Mozilla FirefoxCSS subsystem

Page 18: BAiT: Adaptive Test Case Execution in Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam.

13-09-2007 DWFTT 2007, Enschede 18

Further Information

Background information• Calamé, Jens R.; Ioustinova, Natalia; Pol, Jaco van de; Sidorova, Natalia; Data

Abstraction and Constraint Solving for Conformance Testing (APSEC 2005).• Calamé, Jens R.; Ioustinova, Natalia; Pol, Jaco van de; Towards Automatic Generation

of Parameterized Test Cases from Abstractions. Technical Report, 2006.

The toolset/framework itself• Calamé, Jens R.; Adaptive Test Case Execution in Practice. Technical Report, 2007.• Calamé, Jens R.; The Internals of Adaptive Test Case Execution. Technical Report,

to appear.

All downloadable from www.calame.de/works,published.bib,date,.html

Contact:Jens R. Calamé

CWI, [email protected]