180 likes | 372 Views
BAiT: Adaptive Test Case Execution in Practice. Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam. Agenda. Introduction The Toolset for BAiT An Exemplary Case: The ATM Structure of BAiT Conclusion. Introduction. BAiT: Behavior Adaptation in Testing
E N D
BAiT: Adaptive Test Case Executionin Practice Jens R. Calamé Centrum voor Wiskunde en Informatica, Amsterdam
Agenda • Introduction • The Toolset for BAiT • An Exemplary Case: The ATM • Structure of BAiT • Conclusion DWFTT 2007, Enschede
Introduction • BAiT: Behavior Adaptation in Testing • Toolset to generate test cases and test oracles as well as execute tests on nondeterministicsystems with data DWFTT 2007, Enschede
Agenda • Introduction • The Toolset for BAiT • An Exemplary Case: The ATM • Structure of BAiT • Conclusion DWFTT 2007, Enschede
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 DWFTT 2007, Enschede
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 DWFTT 2007, Enschede
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 DWFTT 2007, Enschede
Agenda • Introduction • The Toolset for BAiT • An Exemplary Case: The ATM • Structure of BAiT • Conclusion DWFTT 2007, Enschede
An Exemplary Case: The ATM ATM specification (partially) ATM test purpose (completely) DWFTT 2007, Enschede
!getPin(1234) ?pinCorrect !initBalance(1000) ?retFifty(2) ?retFifty(1) ?retTwenty(2) ?retTen(1) !initPin(1234) An ATM Test Case !getAmount(100) ? Photos: Wikipedia and ECB DWFTT 2007, Enschede
An ATM Test Case (2) 1. Precalculation of possible test trace 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),emitBankNotes May 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),emitBankNotes May 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 OK May 25, 2007 3:06:26 PM nl.cwi.sen2.bait.RunTest executeTest INFO: Expected: retFifty(2), received: retFifty(1) -> Trace failed, trying alternative. 2. Iterative data selection 3. Stepwise execution of the trace… …until the IUT deviates from the precalculated trace. DWFTT 2007, Enschede
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), emitBankNotes May 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),emitBankNotes May 25, 2007 3:06:27 PM nl.cwi.sen2.bait.RunTest executeTest INFO: The test case ended with verdict PASS. 4. Pruning not yet executed part of test trace. 5. Appending received system output to trace. 6. Solve test trace with pending system output; assign verdict or calculate new trace. DWFTT 2007, Enschede
Agenda • Introduction • The Toolset for BAiT • An Exemplary Case: The ATM • Structure of BAiT • Conclusion DWFTT 2007, Enschede
Structure of BAiT: The Tools • BAiT: Behavior Adaptation in Testing • Toolset to generate test cases and test oracles as well as execute tests on nondeterministicsystems with data DWFTT 2007, Enschede
Structure of BAiT: Execution Part • Variable class: Codec of data to constraint solver, data instantiator and IUT • Data instantiation algorithm(s) Test Oracle Data Mapping Constraint Solver Data Mapping Impl. Under Test BAiT Execution Core Impl. Under Test Data Selection Constraint Solver Trace Selection Behavior Mapping Constraint Solver Behavior Mapping Impl. Under Test Test Case(s) • 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) DWFTT 2007, Enschede
Agenda • Introduction • The Toolset for BAiT • An Exemplary Case: The ATM • Structure of BAiT • Conclusion DWFTT 2007, Enschede
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 frameworkfor other settings • Extension of frameworkto structured datatypes • Case Study:Mozilla FirefoxCSS subsystem DWFTT 2007, Enschede
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, Amsterdam jens.calame@cwi.nl DWFTT 2007, Enschede