SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
MTS: Controllable Test Objects
                    Robert V. Binder
2nd International Workshop on End-to-end Test Script Engineering

                           July 16, 2012
                           Minneapolis

                       Copyright © 2012, Robert V. Binder
Overview
•    Testing in Flatland
•    Overview of MTS
•    Lessons Learned
•    Q&A


July 16, 2012        MTS - Controllable Test Objects   2
July 16, 2012   MTS - Controllable Test Objects   3
The xUnit Phenomena
       jUnit



       cppUnit



July 16, 2012        MTS - Controllable Test Objects   4
Incremental Testing Framework          «uses»




                TestRunner   +Contains       TestLog          -Uses         TestObject

                             1        1                       1       1


                                                       0..1

                                                  TestSuite         -Contains    TestCase
                                 -Contains
                                                                    0..1 0..*
                                      0..*




                                                MyTestSuite                     MyTestObject


July 16, 2012                             MTS - Controllable Test Objects                      5
Testing in Flatland
  TestCases          TestSuites                              • Run A
                        A                                         pqrstv
  p             s    p q B C
                                                             • Run B
  q             t        B                                        r s t u
                       r s C
   r            u                                            • Run C
                         C                                        t u
                        t u
July 16, 2012              MTS - Controllable Test Objects                  6
Straight Track




July 16, 2012     MTS - Controllable Test Objects   7
xUnit’s One Track Strategy
• Define and nest groups                  • Obstacle to any rich
• Run any sequence of                       strategy
  groups                                         –    Select, repeat
• No support for group or                        –    Skip, Halt
  member                                         –    Time
       – Repeat                                  –    Broadcast
       – Select                                  –    Synchronize

July 16, 2012           MTS - Controllable Test Objects                8
Composition Isn’t Enough
•    atom == test case                   • How to do ( p | q )
•    ( ) group
•    * quantification                    • How to do (t ( p | q ))*
•    | select (or)

     xUnit is like reg exp without * ? + |
     A formal language without alternation and Kleene star
July 16, 2012            MTS - Controllable Test Objects              9
Composition Isn’t Enough
           Why Repeat?                              Why Select?
•    Iterate over collection                • Respond to environment
•    Iterate over generation                  configuration/conditions
     strategy                               • Skip
•    Performance test over                         – Depends on earlier
     interval                                      – Don’t halt long complex test
                                                     run
•    Capacity test to limits
                                                   – Count failures for reliability
                                                     estimate
July 16, 2012             MTS - Controllable Test Objects                             10
Straight Track




July 16, 2012     MTS - Controllable Test Objects   11
Switching Tracks




July 16, 2012      MTS - Controllable Test Objects   12
MTS ARCHITECTURE AND FEATURES

July 16, 2012   MTS - Controllable Test Objects   13
MTS: Any App, Any Platform
            Console Host                                                          Agent Host

                MTS Console
                                                                                           MTS Test
                                               TEST RUN
                                                                                            Agent
                                               REPORTS




           Agent Host
                                                                                                      MTS Remote
                                                                                                        Agent
                    MTS Test
                     Agent                                                                                           Client
                                                                                                                   Under Test

                                                                                                Client Host Under Test
                               MTS Remote
                                 Agent

                                                                                                                   MTS Remote
                                              Client
                                                                                                                     Agent
                                            Under Test
                                                                             Host Under Test may be
                                                                                                                          Server
                           Client Host Under Test                                  Cell Phone                          Under Test
                                                                                   PDA
                                                                                   Desktop            Server Host Under Test
                                              MTS Remote
                                                Agent
                                                                                   Server
                                                                                   Embedded Processor
                                                              Server               Network Equipment
                                                            Under Test             Access Point
                                                                                   Base Station
                                          Server Host Under Test


July 16, 2012                                            MTS - Controllable Test Objects                                             14
MTS Approach
• Test harness for distributed, end to end
  testing
       – xUnit: composable test objects
       – TTCN: adapters, concurrency, …
       – Tcl: defacto standard for test script automation


July 16, 2012            MTS - Controllable Test Objects    15
About TTCN-3
• Procedural DSL similar              • Well-suited to model-based
  to CORBA IDL                          testing
                                             – Generate TTCN from MSCs,
                                               FSMs, etc.
• Point of Observation                       – Generate impl source from
                                               TTCN
  and Control (adapters)                     – Compile & run impl


• Modular, but not                    • Same test suite can be used
  necessarily composable                on many implementations
July 16, 2012       MTS - Controllable Test Objects                        16
Tcl
• Open source                  iut.set {1}
  interpreter
                               iut.set {$x}

• LISP-ish evaluation          iut.set {[genX{$y}]}

                               iut.set {[eval $codeForX]}


July 16, 2012           MTS - Controllable Test Objects   17
Tcl
• Open source
  interpreter

• LISP-ish evaluation

• Object-oriented
  [incr Tcl]

July 16, 2012           MTS - Controllable Test Objects   18
MTS::TestObject
                                                       MTS::TestObject
                 MTS Framework                   +testObjectHeadline
                                                 +getTestObjectClassName()
                                                 +getTestObjectHeadline()
                                                 +getTestObjectFileName()
    Adapter                                      +getTestObjectDir()
                                                 +getRemoteHostStatus()
+connect()                                       +getTestRunRepeatCount()              YourTestObject
+open()                                          +getTestRunIteration()
                                                 #require()                      MyTestObject
+close()
+test()                                          #setup()
+record()                                        #test()                       +require()
                                PPC 2002         #cleanup()                    +setup()
                          WM5                    #ensure()                     +test()
                                                 #check()                      +cleanup()
                  +getImage()                    #run()                        +ensure()
                                                 #submit()
                      WebService                 #userLogEntry()
                                                 #userLogImage()
                  +getServiceWSDL()              #evaluateCompareFrame()
                  +parseWSDL()                   #replayTestActionSequence()
                  +queryForDictionary()
                  +queryForXML()

 July 16, 2012                             MTS - Controllable Test Objects                       19
TestObject methods
Skip rest of test object when its preconditions aren't met.
                                                                       require
Automatically called when a TestObject is run.
Create starting conditions for a test; allocate necessary resources.    setup

Run tests. The user's implementation is expected to execute test
                                                                         test
actions leading to one or more test verdicts.

Restore pretest conditions; release resources the user test object
                                                                       cleanup
has claimed.
Skip or halt rest of a test run when postconditions aren't met.
                                                                       ensure
Automatically called after cleanup completes.
July 16, 2012                  MTS - Controllable Test Objects             20
Using require
      ::itcl::class aTestCase{
         inherit TestObject

      ::itcl::body aTestCase::require {} {
          if {[getRemoteHostStatus] eq "Connected"} {
              set remoteHostconnection true
          } else {
              userLogEntry "Remote Host not ready, skipping"
              set remoteHostconnection false
          }
          return $remoteHostconnection
      }

      ::itcl::body aTestCase::test {} { … }

July 16, 2012              MTS - Controllable Test Objects     21
Completion Actions
return       Current Test object       Caller Test object        Test objects run stack          Counters
keyword
OK           No effect, Destruct       No effect.                No effect.                      No
             (ensure)                                                                            change.
SKIP         Destruct                  Continue with the         No effect.                      No
                                       next test object.                                         change.
HALT         Destruct                  Immediately exit the Terminate the test run. No
                                       method that called Percolate the HALT to the change.
                                       this test object.    run stack.
EXCP         Capture current Tcl       Immediately exit the Terminate the test run.              Increment
             errorInfo. Destruct the   method that called Percolate the EXCP to all              error
             current test object.      this test object.               test objects in the run   counter.
     July 16, 2012
                                                                       stack.
                                         MTS - Controllable Test Objects                            22
Using ensure and Completion Actions
       ::itcl::class checkDir {inherit TestObject
       ::itcl::body checkDir::require {} { … }
       ::itcl::body checkDir::setup {} { … }
       ::itcl::body checkDir::test {} { … }
       ::itcl::body checkDir::cleanup {} { … }

       ::itcl::body checkDir::ensure {
           set currentDir [pwd]
           if { ! [regexp {mydir} $currentDir]} {
               return SKIP
           } else {
               return OK
           }
       }

July 16, 2012               MTS - Controllable Test Objects   23
MTS run command
run <target> repeat                      • Hardcoded target
<times> <arg list>                              run myTestObject


• “Sources in” target file               • Target name in a variable
  TestObject subclass                           run $anyTestObject
• Runs this TestObject
• Returns control to the                 • Function computes target
                                                run [eval whichTestObject]
  caller
July 16, 2012          MTS - Controllable Test Objects                24
Selection and Repetition in MTS
             How to do ( p | q )                         How to do (t ( p | q ))*

::itcl::body pq::test{} {                       ::itcl::body mySuite::test{reps} {
    if {[rhStatus]} {                               run strategy1 -repeat $reps
        run remoteTest                          }
    } else {
        run localTest                           ::itcl::body strategy1::test{} {
    }                                               run t
}                                                   run pq
                                                }




 July 16, 2012                MTS - Controllable Test Objects                       25
TestObject                        helpers
Start other test objects or create a test suite                   run <target>
Evaluate and log pass/fail conditions                             check <expression>
Time any action during a test run                                 Timer <method>
Object interface for test run as a whole                          testRun <method>
Monitor remote host resource utilization                          rpm <method>
Check the remote host                                             getRHostStatus myHost
Perform data-driven tests                                         submit <args>
Annotate test run reports                                         userLogEntry <args>


 July 16, 2012                  MTS - Controllable Test Objects                         26
IMPLEMENTING
    MODAL CLASS TEST PATTERN
July 16, 2012   MTS - Controllable Test Objects   27
Modal Class Test PatternTwoPlayerGame
                                              T wo Play erG am e ( )
                                      α
TwoPlayerGame                               p1 _S tart ( ) /                                      p2 _S tart ( ) /                                                                            ThreePlayerGame( ) /TwoPlayerGame( )
+TwoPlayerGame()                            s im u lat eV olle y( )
                                                                         G am e S tarte d
                                                                                                  s im u lat eV olle y( )                                                                α
+p1_Start( )
+p1_WinsVolley( )                                                                                                                                                                            p1_Start( ) /                                   p3_Start( )/
-p1_AddPoint( )      p1 _W ins V olle y ( )                                                                       p2 _W ins V olle y ( )                                                     simulateVolley( )                               simulateVolley( )
                     [th is .p 1_ Sc ore ( ) < 20 ] /                                                             [th is .p 2_ Sc ore ( ) < 20 ] /                                                                    Game Started
+p1_IsWinner( )      th is .p 1A ddP oin t( )                                                                     th is .p 2A ddP oin t( )
+p1_IsServer( )      s im u lat eV olle y( )                          p1 _W ins V olle y ( ) /                    s im u lat eV olle y( )
+p1_Points( )                                                         s im u lat eV olle y( )                                                                                                                                p2_Start( ) /
+p2_Start( )                                     P la ye r 1                                          P la ye r 2                                                                                                            simulateVolley( )
+p2_WinsVolley( )                                S erv ed                                             S erv ed                                                                               p1_WinsVolley( ) /
-p2_AddPoint( )                                                       p2 _W ins V olle y ( ) /                                                                                               simulateVolley( )
                                                                      s im u lat eV olle y( )
+p2_IsWinner( )             p1 _W ins V olle y ( )                                                    p2 _W ins V olle y ( )
+p2_IsServer( )             [th is .p 1_ Sc ore ( ) = = 20] /                                         [th is .p 2_ Sc ore ( ) = = 20] /
+p2_Points( )               th is .p 1A ddP oin t( )                                                  th is .p 1A ddP oin t( )                                                                                                 p2_WinsVolley( )
+~( )                                                                                                                                                 p1_WinsVolley( )                                                         [this.p2_Score( ) < 20] /              p3_WinsVolley( )
                                                               P la ye r 1                  P la ye r 2
                                                                                                                                                      [this.p1_Score( ) < 20] /                                                this.p2AddPoint( )                     [this.p3_Score( ) < 20] /
                      p1 _Is W in ner( ) /                     Won                          Won                         p2 _Is W in ner( ) /          this.p1AddPoint( )                                                       simulateVolley( )                      this.p3AddPoint( )
                      retu rn T R UE ;                                                                                  retu rn T R UE ;
                                                                                                                                                      simulateVolley( )                                                                                               simulateVolley( )
                                                                      ~( )             ~( )                                                                                                     p1_WinsVolley( ) /                      p2_WinsVolley( ) /
                                                                                 ω
                                                                                                                                                                                                simulateVolley( )                       simulateVolley( )
                                                                                                                                                                            Player 1                                    Player 2                              Player 3
                                                                                                                                                                            Served                                      Served                                Served
                                                                                                                                                                                                p2_WinsVolley( ) /                      p3_WinsVolley( ) /
                                                                                                                                                                                                simulateVolley( )                       simulateVolley( )
                                                        ThreePlayerGame                                                                              p1_WinsVolley( )                                                                                               p3_WinsVolley( )
                                                                                                                                                     [this.p1_Score( ) == 20] /                                                                                     [this.p3_Score( ) == 20] /
                                      T h ree P la y erG a m e ( ) / T wo P la y erG am e ( )
                                  α                                                                                                                  this.p1AddPoint( )                                                                                             this.p3AddPoint( )
                                                                                                   p 3_ S tart ( ) /                                                                     p3_WinsVolley( ) /
ThreePlayerGame                                                       G a m e S ta rt ed
                                                                                                   s im ulat eV o lley ( )                                                               simulateVolley( )
                                p 3_ W ins V o lle y( ) /                                                                                                                                                                   p2_WinsVolley( )
+ThreePlayerGame()              s im ulat eV o lley ( )                                                                                                                                                                     [this.p2_Score( ) == 20] /
+p3_Start( )                                                                                                   p 3_ W ins V o lle y( )
                                                                                                                                                                                                                            this.p1AddPoint( )
                                                                                                               [t his .p 3_ S co re ( ) < 2 0] /
+p3_WinsVolley( )                                                                                              th is . p3 A dd P oint ( )
                        T w oP lay erG am e ( )
-p3_AddPoint( )                                                                                                s im ulat eV o lley ( )
                                                                  p 1_ W ins V o lle y( ) /
+p3_IsWinner( )                                                   s im ulat eV o lley ( )
+p3_IsServer( )                                                                                     P la y er 3
+p3_Points( )                                                                                       S erv e d
                                                                                                                                                      p1_IsWinner( ) /                             p2_IsWinner( ) /                                                        p3_IsWinner( ) /
+~( )                                                             p 2_ W ins V o lle y( ) /                                                           return TRUE;         Player 1                return TRUE;          Player 2                             Player 3     return TRUE;
                                                                  s im ulat eV o lley ( )
                                                                                                                                                                           Won                                           Won                                  Won
                                                                                                    p 3_ W ins V o lle y( )
                                                                                                    [t his .p 3_ S co re ( ) = = 2 0] /
                                                                                                    th is . p3 A dd P oint ( )                                                                                                 ~( )
                                                                                                                                                                                  ~( )                                                                       ~( )
                                                                                                                                                                                                                           ω
                                                                                        P la y er 3
                                                                                        W on                          p 3_ Is W in ne r( ) /
                                                                                                                      ret urn T R UE ;
                                                                                     ~( )
                                                                             ω




     July 16, 2012                                                                                                    MTS - Controllable Test Objects                                                                                                                           28
Modal Class Test Design
      1    ThreePlayerGame( )
      2    p1_Start( )
                                                                                       8    P layer 2 Served
      3    p2_Start( )
      4    p3_Start( )
                                                                                      11    P layer 3 Served
      5    p1_WinsVolley( )
      6    p1_WinsVolley( )[this.p1_Score( ) < 20]                P layer 1 Served                             17      om ega
                                                                                      *7
      7    p1_WinsVolley( ) [this.p1_Score( ) == 20]                                         P layer 1 W on
                                                                                                               14
      8    p2_WinsVolley( )                                                                                         P layer 1 W on
      9    p2_WinsVolley( ) [this.p2_Score( ) < 20]
                                                                                      *6    P layer 1 Served
      10   p2_WinsVolley( ) [this.p2_Score( ) == 20]
                                                          2                                                                          Sneak path tests
                                                                                     *9     P layer 2 Served

                                                                                                                                     not shown
                                                                                      11    P layer 3 Served
                                   1                          3
                     alpha                Gam eS tarted           P layer 2 Served                             17      om ega
                                                                                     * 10
                                                                                             P layer 2 W on
                                                                                                               15
                                                                                                                    P layer 2 W on
                                                                                                                                     Note iterations
                                                                                       5    P layer 1 Served
                                                          4

                                                                                     * 12   P layer 3 Served
                                                                                                               17      om ega
     11    p3_WinsVolley( )
                                                                                     * 13    P layer 3 W on
                                                                                                               16
     12    p3_WinsVolley( ) [this.p3_Score( ) < 20]
                                                                  P layer 3 Served                                  P layer 3 W on
     13    p3_WinsVolley( ) [this.p3_Score( ) == 20]                                   8
                                                                                            P layer 2 Served
     14    p1_IsWinner( )
     15    p2_IsWinner( )
     16    p3_IsWinner( )                                                              5    P layer 1 Served

     17    ~( )

July 16, 2012                                                 MTS - Controllable Test Objects                                                   29
Implementing Modal Class Design
                    xUnit                                                 MTS
•      TestCase for each transition (20)             •    TestObject for each transition (20)
•      Hand hack TestSuite for each                  • Top level TestObject uses run to
       root to leaf path (17) and one to
       run them all                                    call transition test objects
        – addTest                                           – Iteration trival
        – addTestSuite                               • Parameterized strategies
• How to iterate transitions?                               – N+
• Embed strategy in single large test
                                                            – Markov
  object?
        – Very smelly                                       – Etc.
• Develop code generator that writes                 • Parameterized state spec
  test suites?
    July 16, 2012                  MTS - Controllable Test Objects                        30
1    ThreePlayerGame( )
2    p1_Start( )
                                                                                 8    P layer 2 Served
3    p2_Start( )
4    p3_Start( )
                                                                                11    P layer 3 Served
5    p1_WinsVolley( )
6    p1_WinsVolley( )[this.p1_Score( ) < 20]                P layer 1 Served                             17      om ega
                                                                                *7
7    p1_WinsVolley( ) [this.p1_Score( ) == 20]                                         P layer 1 W on
                                                                                                         14




                                                                                                                                Dude, where’s my object?
8    p2_WinsVolley( )                                                                                         P layer 1 W on
9    p2_WinsVolley( ) [this.p2_Score( ) < 20]
                                                                                *6    P layer 1 Served
10   p2_WinsVolley( ) [this.p2_Score( ) == 20]
                                                    2
                                                                               *9     P layer 2 Served


                                                                                11    P layer 3 Served
                             1                          3
               alpha                Gam eS tarted           P layer 2 Served                             17      om ega
                                                                               * 10
                                                                                       P layer 2 W on
                                                                                                         15
                                                                                                              P layer 2 W on

                                                                                 5    P layer 1 Served
                                                    4

                                                                               * 12   P layer 3 Served




                                                                                                                                     xUnit                                     MTS
                                                                                                         17      om ega
11   p3_WinsVolley( )
                                                                               * 13    P layer 3 W on
                                                                                                         16
12   p3_WinsVolley( ) [this.p3_Score( ) < 20]
                                                            P layer 3 Served                                  P layer 3 W on
13   p3_WinsVolley( ) [this.p3_Score( ) == 20]                                   8
                                                                                      P layer 2 Served
14   p1_IsWinner( )
15   p2_IsWinner( )
16   p3_IsWinner( )                                                              5    P layer 1 Served

17   ~( )




                            1                                 8                               15                                1       6          11                      1     8    15
                            2                                 9                               16                                2       7          12                      2     9    16
                            3                               10                                17                                        8                                  3     10   17
                                                                                                                                 3                 13
                                                                                                                                                                                 11            21
                            4                               11                                18                                                                           4          18
                                                                                                                                 4      9          14
                            5                               12                                19                                                                           5     12   19
                                                                                                                                 5      10         15
                            6                               13                                20                                                                           6     13   20
                                                                                                                                                   16
                            7                               14                                                                                                             7     14

               TestCase objects                                                                                                TestSuite objects                          TestObject objects
                       July 16, 2012                                                                                                    MTS - Controllable Test Objects                        31
Controllable Test Objects
  Design Goal                               TTCN                    xUnit   MTS
  Select, Iterate, any level                  Yes                    No     Yes
  Generate with MBT strategies                Yes                    Yes    Yes
  Logical/Physical separation                 Yes                    No     Yes
  Platform agnostic/robust                    Yes                    ?      Yes
  Channel agnostic/robust                     Yes                    ?      Yes
  Distributed control                         Yes                    No     Yes
  Minimize Test Agent resources               NA                     No     Yes
  Minimize brittleness                        Yes                    No     Yes
  Intuitive interaction                       No                     Yes    Yes
  Composable                                  No                     Yes    Yes

July 16, 2012                     MTS - Controllable Test Objects                 32
MTS hard problem queue
• Protocol to drive remote target host IUT from test host
       –    Bi-directional, lightweight (BEEP ?)
       –    Platform and stack agnostic
       –    Target environment control (remote command line)
       –    Distributed adapter RPC
• Forced reflection to generate adapters
• Logical/physical mapping in generative models
• Scalable asynchronous remote agents
       – Control strategy
       – Provisioning
       – Protocol
July 16, 2012                   MTS - Controllable Test Objects   33
Question Time

                                               Bob Binder

                                               rvbinder@gmail.com

                                               www.robertvbinder.com




July 16, 2012     MTS - Controllable Test Objects                      34

Más contenido relacionado

Destacado

Lessons learned validating 60,000 pages of api documentation
Lessons learned validating 60,000 pages of api documentationLessons learned validating 60,000 pages of api documentation
Lessons learned validating 60,000 pages of api documentationBob Binder
 
Popular Delusions, Crowds, and the Coming Deluge: end of the Oracle?
Popular Delusions, Crowds, and the Coming Deluge: end of the Oracle?Popular Delusions, Crowds, and the Coming Deluge: end of the Oracle?
Popular Delusions, Crowds, and the Coming Deluge: end of the Oracle?Bob Binder
 
Mobile App Assurance: Yesterday, Today, and Tomorrow.
Mobile App Assurance: Yesterday, Today, and Tomorrow.Mobile App Assurance: Yesterday, Today, and Tomorrow.
Mobile App Assurance: Yesterday, Today, and Tomorrow.Bob Binder
 
Model-based Testing: Today And Tomorrow
Model-based Testing: Today And TomorrowModel-based Testing: Today And Tomorrow
Model-based Testing: Today And TomorrowBob Binder
 
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlobHow to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlobBob Binder
 
Software Test Patterns: Successes and Challenges
Software Test Patterns: Successes and ChallengesSoftware Test Patterns: Successes and Challenges
Software Test Patterns: Successes and ChallengesBob Binder
 
Model-based Testing: Taking BDD/ATDD to the Next Level
Model-based Testing: Taking BDD/ATDD to the Next LevelModel-based Testing: Taking BDD/ATDD to the Next Level
Model-based Testing: Taking BDD/ATDD to the Next LevelBob Binder
 
Patterns in Test Automation
Patterns in Test AutomationPatterns in Test Automation
Patterns in Test AutomationAnand Bagmar
 

Destacado (8)

Lessons learned validating 60,000 pages of api documentation
Lessons learned validating 60,000 pages of api documentationLessons learned validating 60,000 pages of api documentation
Lessons learned validating 60,000 pages of api documentation
 
Popular Delusions, Crowds, and the Coming Deluge: end of the Oracle?
Popular Delusions, Crowds, and the Coming Deluge: end of the Oracle?Popular Delusions, Crowds, and the Coming Deluge: end of the Oracle?
Popular Delusions, Crowds, and the Coming Deluge: end of the Oracle?
 
Mobile App Assurance: Yesterday, Today, and Tomorrow.
Mobile App Assurance: Yesterday, Today, and Tomorrow.Mobile App Assurance: Yesterday, Today, and Tomorrow.
Mobile App Assurance: Yesterday, Today, and Tomorrow.
 
Model-based Testing: Today And Tomorrow
Model-based Testing: Today And TomorrowModel-based Testing: Today And Tomorrow
Model-based Testing: Today And Tomorrow
 
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlobHow to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
 
Software Test Patterns: Successes and Challenges
Software Test Patterns: Successes and ChallengesSoftware Test Patterns: Successes and Challenges
Software Test Patterns: Successes and Challenges
 
Model-based Testing: Taking BDD/ATDD to the Next Level
Model-based Testing: Taking BDD/ATDD to the Next LevelModel-based Testing: Taking BDD/ATDD to the Next Level
Model-based Testing: Taking BDD/ATDD to the Next Level
 
Patterns in Test Automation
Patterns in Test AutomationPatterns in Test Automation
Patterns in Test Automation
 

Similar a MTS: Controllable Test Objects

Test Objects -- They Just Work
Test Objects -- They Just WorkTest Objects -- They Just Work
Test Objects -- They Just WorkBob Binder
 
TMPA-2017: Regression Testing with Semiautomatic Test Selection for Auditing ...
TMPA-2017: Regression Testing with Semiautomatic Test Selection for Auditing ...TMPA-2017: Regression Testing with Semiautomatic Test Selection for Auditing ...
TMPA-2017: Regression Testing with Semiautomatic Test Selection for Auditing ...Iosif Itkin
 
San Jose Selenium Meet-up PushToTest TestMaker Presentation
San Jose Selenium Meet-up PushToTest TestMaker PresentationSan Jose Selenium Meet-up PushToTest TestMaker Presentation
San Jose Selenium Meet-up PushToTest TestMaker PresentationClever Moe
 
mVerify Investor Overview
mVerify Investor OverviewmVerify Investor Overview
mVerify Investor OverviewBob Binder
 
JMeter - Performance testing your webapp
JMeter - Performance testing your webappJMeter - Performance testing your webapp
JMeter - Performance testing your webappAmit Solanki
 
Qtp92 Presentation
Qtp92 PresentationQtp92 Presentation
Qtp92 Presentationa34sharm
 
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.Wolfgang Grieskamp
 
Smart debugger
Smart debuggerSmart debugger
Smart debuggerTao He
 
Thomas Kauders - Agile Test Design And Automation of a Life-Critical Medical ...
Thomas Kauders - Agile Test Design And Automation of a Life-Critical Medical ...Thomas Kauders - Agile Test Design And Automation of a Life-Critical Medical ...
Thomas Kauders - Agile Test Design And Automation of a Life-Critical Medical ...TEST Huddle
 
Bibhas automation testing
Bibhas automation testingBibhas automation testing
Bibhas automation testingBibhas Senapati
 
Technical meeting automated testing with vs2010
Technical meeting automated testing with vs2010Technical meeting automated testing with vs2010
Technical meeting automated testing with vs2010Clemens Reijnen
 
Open Source Test Workshop for CIOs, CTOs, Managers
Open Source Test Workshop for CIOs, CTOs, ManagersOpen Source Test Workshop for CIOs, CTOs, Managers
Open Source Test Workshop for CIOs, CTOs, ManagersClever Moe
 
Unit Testing in Java
Unit Testing in JavaUnit Testing in Java
Unit Testing in Javaguy_davis
 
Visual Studio 2010 Testing & Lab Management Tools
Visual Studio 2010 Testing & Lab Management ToolsVisual Studio 2010 Testing & Lab Management Tools
Visual Studio 2010 Testing & Lab Management ToolsAyman El-Hattab
 
Database Unit Testing Made Easy with VSTS
Database Unit Testing Made Easy with VSTSDatabase Unit Testing Made Easy with VSTS
Database Unit Testing Made Easy with VSTSSanil Mhatre
 
Agile Open Source Performance Testing Workshop for Business Managers
Agile Open Source Performance Testing Workshop for Business ManagersAgile Open Source Performance Testing Workshop for Business Managers
Agile Open Source Performance Testing Workshop for Business ManagersClever Moe
 
Bits2010jemison
Bits2010jemisonBits2010jemison
Bits2010jemisonbjemison
 

Similar a MTS: Controllable Test Objects (20)

Test Objects -- They Just Work
Test Objects -- They Just WorkTest Objects -- They Just Work
Test Objects -- They Just Work
 
Test Automation and Keyword-driven testing af Brian Nielsen, CISS/AAU
Test Automation and Keyword-driven testing af Brian Nielsen, CISS/AAUTest Automation and Keyword-driven testing af Brian Nielsen, CISS/AAU
Test Automation and Keyword-driven testing af Brian Nielsen, CISS/AAU
 
Qtp basic
Qtp basicQtp basic
Qtp basic
 
TMPA-2017: Regression Testing with Semiautomatic Test Selection for Auditing ...
TMPA-2017: Regression Testing with Semiautomatic Test Selection for Auditing ...TMPA-2017: Regression Testing with Semiautomatic Test Selection for Auditing ...
TMPA-2017: Regression Testing with Semiautomatic Test Selection for Auditing ...
 
San Jose Selenium Meet-up PushToTest TestMaker Presentation
San Jose Selenium Meet-up PushToTest TestMaker PresentationSan Jose Selenium Meet-up PushToTest TestMaker Presentation
San Jose Selenium Meet-up PushToTest TestMaker Presentation
 
mVerify Investor Overview
mVerify Investor OverviewmVerify Investor Overview
mVerify Investor Overview
 
JMeter - Performance testing your webapp
JMeter - Performance testing your webappJMeter - Performance testing your webapp
JMeter - Performance testing your webapp
 
Qtp92 Presentation
Qtp92 PresentationQtp92 Presentation
Qtp92 Presentation
 
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
 
Smart debugger
Smart debuggerSmart debugger
Smart debugger
 
Thomas Kauders - Agile Test Design And Automation of a Life-Critical Medical ...
Thomas Kauders - Agile Test Design And Automation of a Life-Critical Medical ...Thomas Kauders - Agile Test Design And Automation of a Life-Critical Medical ...
Thomas Kauders - Agile Test Design And Automation of a Life-Critical Medical ...
 
Gatling
GatlingGatling
Gatling
 
Bibhas automation testing
Bibhas automation testingBibhas automation testing
Bibhas automation testing
 
Technical meeting automated testing with vs2010
Technical meeting automated testing with vs2010Technical meeting automated testing with vs2010
Technical meeting automated testing with vs2010
 
Open Source Test Workshop for CIOs, CTOs, Managers
Open Source Test Workshop for CIOs, CTOs, ManagersOpen Source Test Workshop for CIOs, CTOs, Managers
Open Source Test Workshop for CIOs, CTOs, Managers
 
Unit Testing in Java
Unit Testing in JavaUnit Testing in Java
Unit Testing in Java
 
Visual Studio 2010 Testing & Lab Management Tools
Visual Studio 2010 Testing & Lab Management ToolsVisual Studio 2010 Testing & Lab Management Tools
Visual Studio 2010 Testing & Lab Management Tools
 
Database Unit Testing Made Easy with VSTS
Database Unit Testing Made Easy with VSTSDatabase Unit Testing Made Easy with VSTS
Database Unit Testing Made Easy with VSTS
 
Agile Open Source Performance Testing Workshop for Business Managers
Agile Open Source Performance Testing Workshop for Business ManagersAgile Open Source Performance Testing Workshop for Business Managers
Agile Open Source Performance Testing Workshop for Business Managers
 
Bits2010jemison
Bits2010jemisonBits2010jemison
Bits2010jemison
 

Más de Bob Binder

Achieving Very High Reliability for Ubiquitous Information Technology
Achieving Very High Reliability for Ubiquitous Information Technology Achieving Very High Reliability for Ubiquitous Information Technology
Achieving Very High Reliability for Ubiquitous Information Technology Bob Binder
 
The Tester’s Dashboard: Release Decision Support
The Tester’s Dashboard: Release Decision SupportThe Tester’s Dashboard: Release Decision Support
The Tester’s Dashboard: Release Decision SupportBob Binder
 
Performance Testing Mobile and Multi-Tier Applications
Performance Testing Mobile and Multi-Tier ApplicationsPerformance Testing Mobile and Multi-Tier Applications
Performance Testing Mobile and Multi-Tier ApplicationsBob Binder
 
Testing Object-Oriented Systems: Lessons Learned
Testing Object-Oriented Systems: Lessons LearnedTesting Object-Oriented Systems: Lessons Learned
Testing Object-Oriented Systems: Lessons LearnedBob Binder
 
Model-Based Testing: Why, What, How
Model-Based Testing: Why, What, HowModel-Based Testing: Why, What, How
Model-Based Testing: Why, What, HowBob Binder
 
MDD and the Tautology Problem: Discussion Notes.
MDD and the Tautology Problem: Discussion Notes.MDD and the Tautology Problem: Discussion Notes.
MDD and the Tautology Problem: Discussion Notes.Bob Binder
 
Mobile Reliability Challenges
Mobile Reliability ChallengesMobile Reliability Challenges
Mobile Reliability ChallengesBob Binder
 
Experience with a Profile-based Automated Testing Environment
Experience with a Profile-based Automated Testing EnvironmentExperience with a Profile-based Automated Testing Environment
Experience with a Profile-based Automated Testing EnvironmentBob Binder
 
Testability: Factors and Strategy
Testability: Factors and StrategyTestability: Factors and Strategy
Testability: Factors and StrategyBob Binder
 
A Million Users in a Box: The WTS Story
A Million Users in a Box: The WTS StoryA Million Users in a Box: The WTS Story
A Million Users in a Box: The WTS StoryBob Binder
 
ISSRE 2008 Trip Report
ISSRE 2008 Trip ReportISSRE 2008 Trip Report
ISSRE 2008 Trip ReportBob Binder
 
Assurance for Cloud Computing
Assurance for Cloud ComputingAssurance for Cloud Computing
Assurance for Cloud ComputingBob Binder
 
The Advanced Mobile Application Testing Environment: Project Report
The Advanced Mobile Application Testing Environment: Project ReportThe Advanced Mobile Application Testing Environment: Project Report
The Advanced Mobile Application Testing Environment: Project ReportBob Binder
 
Software Testing: Models, Patterns, Tools
Software Testing: Models, Patterns, ToolsSoftware Testing: Models, Patterns, Tools
Software Testing: Models, Patterns, ToolsBob Binder
 
The Tester’s Dashboard: Release Decision Support
The Tester’s Dashboard: Release Decision SupportThe Tester’s Dashboard: Release Decision Support
The Tester’s Dashboard: Release Decision SupportBob Binder
 
Testability: Factors and Strategy
Testability: Factors and StrategyTestability: Factors and Strategy
Testability: Factors and StrategyBob Binder
 

Más de Bob Binder (16)

Achieving Very High Reliability for Ubiquitous Information Technology
Achieving Very High Reliability for Ubiquitous Information Technology Achieving Very High Reliability for Ubiquitous Information Technology
Achieving Very High Reliability for Ubiquitous Information Technology
 
The Tester’s Dashboard: Release Decision Support
The Tester’s Dashboard: Release Decision SupportThe Tester’s Dashboard: Release Decision Support
The Tester’s Dashboard: Release Decision Support
 
Performance Testing Mobile and Multi-Tier Applications
Performance Testing Mobile and Multi-Tier ApplicationsPerformance Testing Mobile and Multi-Tier Applications
Performance Testing Mobile and Multi-Tier Applications
 
Testing Object-Oriented Systems: Lessons Learned
Testing Object-Oriented Systems: Lessons LearnedTesting Object-Oriented Systems: Lessons Learned
Testing Object-Oriented Systems: Lessons Learned
 
Model-Based Testing: Why, What, How
Model-Based Testing: Why, What, HowModel-Based Testing: Why, What, How
Model-Based Testing: Why, What, How
 
MDD and the Tautology Problem: Discussion Notes.
MDD and the Tautology Problem: Discussion Notes.MDD and the Tautology Problem: Discussion Notes.
MDD and the Tautology Problem: Discussion Notes.
 
Mobile Reliability Challenges
Mobile Reliability ChallengesMobile Reliability Challenges
Mobile Reliability Challenges
 
Experience with a Profile-based Automated Testing Environment
Experience with a Profile-based Automated Testing EnvironmentExperience with a Profile-based Automated Testing Environment
Experience with a Profile-based Automated Testing Environment
 
Testability: Factors and Strategy
Testability: Factors and StrategyTestability: Factors and Strategy
Testability: Factors and Strategy
 
A Million Users in a Box: The WTS Story
A Million Users in a Box: The WTS StoryA Million Users in a Box: The WTS Story
A Million Users in a Box: The WTS Story
 
ISSRE 2008 Trip Report
ISSRE 2008 Trip ReportISSRE 2008 Trip Report
ISSRE 2008 Trip Report
 
Assurance for Cloud Computing
Assurance for Cloud ComputingAssurance for Cloud Computing
Assurance for Cloud Computing
 
The Advanced Mobile Application Testing Environment: Project Report
The Advanced Mobile Application Testing Environment: Project ReportThe Advanced Mobile Application Testing Environment: Project Report
The Advanced Mobile Application Testing Environment: Project Report
 
Software Testing: Models, Patterns, Tools
Software Testing: Models, Patterns, ToolsSoftware Testing: Models, Patterns, Tools
Software Testing: Models, Patterns, Tools
 
The Tester’s Dashboard: Release Decision Support
The Tester’s Dashboard: Release Decision SupportThe Tester’s Dashboard: Release Decision Support
The Tester’s Dashboard: Release Decision Support
 
Testability: Factors and Strategy
Testability: Factors and StrategyTestability: Factors and Strategy
Testability: Factors and Strategy
 

Último

Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 

Último (20)

Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 

MTS: Controllable Test Objects

  • 1. MTS: Controllable Test Objects Robert V. Binder 2nd International Workshop on End-to-end Test Script Engineering July 16, 2012 Minneapolis Copyright © 2012, Robert V. Binder
  • 2. Overview • Testing in Flatland • Overview of MTS • Lessons Learned • Q&A July 16, 2012 MTS - Controllable Test Objects 2
  • 3. July 16, 2012 MTS - Controllable Test Objects 3
  • 4. The xUnit Phenomena jUnit cppUnit July 16, 2012 MTS - Controllable Test Objects 4
  • 5. Incremental Testing Framework «uses» TestRunner +Contains TestLog -Uses TestObject 1 1 1 1 0..1 TestSuite -Contains TestCase -Contains 0..1 0..* 0..* MyTestSuite MyTestObject July 16, 2012 MTS - Controllable Test Objects 5
  • 6. Testing in Flatland TestCases TestSuites • Run A A pqrstv p s p q B C • Run B q t B r s t u r s C r u • Run C C t u t u July 16, 2012 MTS - Controllable Test Objects 6
  • 7. Straight Track July 16, 2012 MTS - Controllable Test Objects 7
  • 8. xUnit’s One Track Strategy • Define and nest groups • Obstacle to any rich • Run any sequence of strategy groups – Select, repeat • No support for group or – Skip, Halt member – Time – Repeat – Broadcast – Select – Synchronize July 16, 2012 MTS - Controllable Test Objects 8
  • 9. Composition Isn’t Enough • atom == test case • How to do ( p | q ) • ( ) group • * quantification • How to do (t ( p | q ))* • | select (or) xUnit is like reg exp without * ? + | A formal language without alternation and Kleene star July 16, 2012 MTS - Controllable Test Objects 9
  • 10. Composition Isn’t Enough Why Repeat? Why Select? • Iterate over collection • Respond to environment • Iterate over generation configuration/conditions strategy • Skip • Performance test over – Depends on earlier interval – Don’t halt long complex test run • Capacity test to limits – Count failures for reliability estimate July 16, 2012 MTS - Controllable Test Objects 10
  • 11. Straight Track July 16, 2012 MTS - Controllable Test Objects 11
  • 12. Switching Tracks July 16, 2012 MTS - Controllable Test Objects 12
  • 13. MTS ARCHITECTURE AND FEATURES July 16, 2012 MTS - Controllable Test Objects 13
  • 14. MTS: Any App, Any Platform Console Host Agent Host MTS Console MTS Test TEST RUN Agent REPORTS Agent Host MTS Remote Agent MTS Test Agent Client Under Test Client Host Under Test MTS Remote Agent MTS Remote Client Agent Under Test Host Under Test may be Server Client Host Under Test  Cell Phone Under Test  PDA  Desktop Server Host Under Test MTS Remote Agent  Server  Embedded Processor Server  Network Equipment Under Test  Access Point  Base Station Server Host Under Test July 16, 2012 MTS - Controllable Test Objects 14
  • 15. MTS Approach • Test harness for distributed, end to end testing – xUnit: composable test objects – TTCN: adapters, concurrency, … – Tcl: defacto standard for test script automation July 16, 2012 MTS - Controllable Test Objects 15
  • 16. About TTCN-3 • Procedural DSL similar • Well-suited to model-based to CORBA IDL testing – Generate TTCN from MSCs, FSMs, etc. • Point of Observation – Generate impl source from TTCN and Control (adapters) – Compile & run impl • Modular, but not • Same test suite can be used necessarily composable on many implementations July 16, 2012 MTS - Controllable Test Objects 16
  • 17. Tcl • Open source iut.set {1} interpreter iut.set {$x} • LISP-ish evaluation iut.set {[genX{$y}]} iut.set {[eval $codeForX]} July 16, 2012 MTS - Controllable Test Objects 17
  • 18. Tcl • Open source interpreter • LISP-ish evaluation • Object-oriented [incr Tcl] July 16, 2012 MTS - Controllable Test Objects 18
  • 19. MTS::TestObject MTS::TestObject MTS Framework +testObjectHeadline +getTestObjectClassName() +getTestObjectHeadline() +getTestObjectFileName() Adapter +getTestObjectDir() +getRemoteHostStatus() +connect() +getTestRunRepeatCount() YourTestObject +open() +getTestRunIteration() #require() MyTestObject +close() +test() #setup() +record() #test() +require() PPC 2002 #cleanup() +setup() WM5 #ensure() +test() #check() +cleanup() +getImage() #run() +ensure() #submit() WebService #userLogEntry() #userLogImage() +getServiceWSDL() #evaluateCompareFrame() +parseWSDL() #replayTestActionSequence() +queryForDictionary() +queryForXML() July 16, 2012 MTS - Controllable Test Objects 19
  • 20. TestObject methods Skip rest of test object when its preconditions aren't met. require Automatically called when a TestObject is run. Create starting conditions for a test; allocate necessary resources. setup Run tests. The user's implementation is expected to execute test test actions leading to one or more test verdicts. Restore pretest conditions; release resources the user test object cleanup has claimed. Skip or halt rest of a test run when postconditions aren't met. ensure Automatically called after cleanup completes. July 16, 2012 MTS - Controllable Test Objects 20
  • 21. Using require ::itcl::class aTestCase{ inherit TestObject ::itcl::body aTestCase::require {} { if {[getRemoteHostStatus] eq "Connected"} { set remoteHostconnection true } else { userLogEntry "Remote Host not ready, skipping" set remoteHostconnection false } return $remoteHostconnection } ::itcl::body aTestCase::test {} { … } July 16, 2012 MTS - Controllable Test Objects 21
  • 22. Completion Actions return Current Test object Caller Test object Test objects run stack Counters keyword OK No effect, Destruct No effect. No effect. No (ensure) change. SKIP Destruct Continue with the No effect. No next test object. change. HALT Destruct Immediately exit the Terminate the test run. No method that called Percolate the HALT to the change. this test object. run stack. EXCP Capture current Tcl Immediately exit the Terminate the test run. Increment errorInfo. Destruct the method that called Percolate the EXCP to all error current test object. this test object. test objects in the run counter. July 16, 2012 stack. MTS - Controllable Test Objects 22
  • 23. Using ensure and Completion Actions ::itcl::class checkDir {inherit TestObject ::itcl::body checkDir::require {} { … } ::itcl::body checkDir::setup {} { … } ::itcl::body checkDir::test {} { … } ::itcl::body checkDir::cleanup {} { … } ::itcl::body checkDir::ensure { set currentDir [pwd] if { ! [regexp {mydir} $currentDir]} { return SKIP } else { return OK } } July 16, 2012 MTS - Controllable Test Objects 23
  • 24. MTS run command run <target> repeat • Hardcoded target <times> <arg list> run myTestObject • “Sources in” target file • Target name in a variable TestObject subclass run $anyTestObject • Runs this TestObject • Returns control to the • Function computes target run [eval whichTestObject] caller July 16, 2012 MTS - Controllable Test Objects 24
  • 25. Selection and Repetition in MTS How to do ( p | q ) How to do (t ( p | q ))* ::itcl::body pq::test{} { ::itcl::body mySuite::test{reps} { if {[rhStatus]} { run strategy1 -repeat $reps run remoteTest } } else { run localTest ::itcl::body strategy1::test{} { } run t } run pq } July 16, 2012 MTS - Controllable Test Objects 25
  • 26. TestObject helpers Start other test objects or create a test suite run <target> Evaluate and log pass/fail conditions check <expression> Time any action during a test run Timer <method> Object interface for test run as a whole testRun <method> Monitor remote host resource utilization rpm <method> Check the remote host getRHostStatus myHost Perform data-driven tests submit <args> Annotate test run reports userLogEntry <args> July 16, 2012 MTS - Controllable Test Objects 26
  • 27. IMPLEMENTING MODAL CLASS TEST PATTERN July 16, 2012 MTS - Controllable Test Objects 27
  • 28. Modal Class Test PatternTwoPlayerGame T wo Play erG am e ( ) α TwoPlayerGame p1 _S tart ( ) / p2 _S tart ( ) / ThreePlayerGame( ) /TwoPlayerGame( ) +TwoPlayerGame() s im u lat eV olle y( ) G am e S tarte d s im u lat eV olle y( ) α +p1_Start( ) +p1_WinsVolley( ) p1_Start( ) / p3_Start( )/ -p1_AddPoint( ) p1 _W ins V olle y ( ) p2 _W ins V olle y ( ) simulateVolley( ) simulateVolley( ) [th is .p 1_ Sc ore ( ) < 20 ] / [th is .p 2_ Sc ore ( ) < 20 ] / Game Started +p1_IsWinner( ) th is .p 1A ddP oin t( ) th is .p 2A ddP oin t( ) +p1_IsServer( ) s im u lat eV olle y( ) p1 _W ins V olle y ( ) / s im u lat eV olle y( ) +p1_Points( ) s im u lat eV olle y( ) p2_Start( ) / +p2_Start( ) P la ye r 1 P la ye r 2 simulateVolley( ) +p2_WinsVolley( ) S erv ed S erv ed p1_WinsVolley( ) / -p2_AddPoint( ) p2 _W ins V olle y ( ) / simulateVolley( ) s im u lat eV olle y( ) +p2_IsWinner( ) p1 _W ins V olle y ( ) p2 _W ins V olle y ( ) +p2_IsServer( ) [th is .p 1_ Sc ore ( ) = = 20] / [th is .p 2_ Sc ore ( ) = = 20] / +p2_Points( ) th is .p 1A ddP oin t( ) th is .p 1A ddP oin t( ) p2_WinsVolley( ) +~( ) p1_WinsVolley( ) [this.p2_Score( ) < 20] / p3_WinsVolley( ) P la ye r 1 P la ye r 2 [this.p1_Score( ) < 20] / this.p2AddPoint( ) [this.p3_Score( ) < 20] / p1 _Is W in ner( ) / Won Won p2 _Is W in ner( ) / this.p1AddPoint( ) simulateVolley( ) this.p3AddPoint( ) retu rn T R UE ; retu rn T R UE ; simulateVolley( ) simulateVolley( ) ~( ) ~( ) p1_WinsVolley( ) / p2_WinsVolley( ) / ω simulateVolley( ) simulateVolley( ) Player 1 Player 2 Player 3 Served Served Served p2_WinsVolley( ) / p3_WinsVolley( ) / simulateVolley( ) simulateVolley( ) ThreePlayerGame p1_WinsVolley( ) p3_WinsVolley( ) [this.p1_Score( ) == 20] / [this.p3_Score( ) == 20] / T h ree P la y erG a m e ( ) / T wo P la y erG am e ( ) α this.p1AddPoint( ) this.p3AddPoint( ) p 3_ S tart ( ) / p3_WinsVolley( ) / ThreePlayerGame G a m e S ta rt ed s im ulat eV o lley ( ) simulateVolley( ) p 3_ W ins V o lle y( ) / p2_WinsVolley( ) +ThreePlayerGame() s im ulat eV o lley ( ) [this.p2_Score( ) == 20] / +p3_Start( ) p 3_ W ins V o lle y( ) this.p1AddPoint( ) [t his .p 3_ S co re ( ) < 2 0] / +p3_WinsVolley( ) th is . p3 A dd P oint ( ) T w oP lay erG am e ( ) -p3_AddPoint( ) s im ulat eV o lley ( ) p 1_ W ins V o lle y( ) / +p3_IsWinner( ) s im ulat eV o lley ( ) +p3_IsServer( ) P la y er 3 +p3_Points( ) S erv e d p1_IsWinner( ) / p2_IsWinner( ) / p3_IsWinner( ) / +~( ) p 2_ W ins V o lle y( ) / return TRUE; Player 1 return TRUE; Player 2 Player 3 return TRUE; s im ulat eV o lley ( ) Won Won Won p 3_ W ins V o lle y( ) [t his .p 3_ S co re ( ) = = 2 0] / th is . p3 A dd P oint ( ) ~( ) ~( ) ~( ) ω P la y er 3 W on p 3_ Is W in ne r( ) / ret urn T R UE ; ~( ) ω July 16, 2012 MTS - Controllable Test Objects 28
  • 29. Modal Class Test Design 1 ThreePlayerGame( ) 2 p1_Start( ) 8 P layer 2 Served 3 p2_Start( ) 4 p3_Start( ) 11 P layer 3 Served 5 p1_WinsVolley( ) 6 p1_WinsVolley( )[this.p1_Score( ) < 20] P layer 1 Served 17 om ega *7 7 p1_WinsVolley( ) [this.p1_Score( ) == 20] P layer 1 W on 14 8 p2_WinsVolley( ) P layer 1 W on 9 p2_WinsVolley( ) [this.p2_Score( ) < 20] *6 P layer 1 Served 10 p2_WinsVolley( ) [this.p2_Score( ) == 20] 2 Sneak path tests *9 P layer 2 Served not shown 11 P layer 3 Served 1 3 alpha Gam eS tarted P layer 2 Served 17 om ega * 10 P layer 2 W on 15 P layer 2 W on Note iterations 5 P layer 1 Served 4 * 12 P layer 3 Served 17 om ega 11 p3_WinsVolley( ) * 13 P layer 3 W on 16 12 p3_WinsVolley( ) [this.p3_Score( ) < 20] P layer 3 Served P layer 3 W on 13 p3_WinsVolley( ) [this.p3_Score( ) == 20] 8 P layer 2 Served 14 p1_IsWinner( ) 15 p2_IsWinner( ) 16 p3_IsWinner( ) 5 P layer 1 Served 17 ~( ) July 16, 2012 MTS - Controllable Test Objects 29
  • 30. Implementing Modal Class Design xUnit MTS • TestCase for each transition (20) • TestObject for each transition (20) • Hand hack TestSuite for each • Top level TestObject uses run to root to leaf path (17) and one to run them all call transition test objects – addTest – Iteration trival – addTestSuite • Parameterized strategies • How to iterate transitions? – N+ • Embed strategy in single large test – Markov object? – Very smelly – Etc. • Develop code generator that writes • Parameterized state spec test suites? July 16, 2012 MTS - Controllable Test Objects 30
  • 31. 1 ThreePlayerGame( ) 2 p1_Start( ) 8 P layer 2 Served 3 p2_Start( ) 4 p3_Start( ) 11 P layer 3 Served 5 p1_WinsVolley( ) 6 p1_WinsVolley( )[this.p1_Score( ) < 20] P layer 1 Served 17 om ega *7 7 p1_WinsVolley( ) [this.p1_Score( ) == 20] P layer 1 W on 14 Dude, where’s my object? 8 p2_WinsVolley( ) P layer 1 W on 9 p2_WinsVolley( ) [this.p2_Score( ) < 20] *6 P layer 1 Served 10 p2_WinsVolley( ) [this.p2_Score( ) == 20] 2 *9 P layer 2 Served 11 P layer 3 Served 1 3 alpha Gam eS tarted P layer 2 Served 17 om ega * 10 P layer 2 W on 15 P layer 2 W on 5 P layer 1 Served 4 * 12 P layer 3 Served xUnit MTS 17 om ega 11 p3_WinsVolley( ) * 13 P layer 3 W on 16 12 p3_WinsVolley( ) [this.p3_Score( ) < 20] P layer 3 Served P layer 3 W on 13 p3_WinsVolley( ) [this.p3_Score( ) == 20] 8 P layer 2 Served 14 p1_IsWinner( ) 15 p2_IsWinner( ) 16 p3_IsWinner( ) 5 P layer 1 Served 17 ~( ) 1 8 15 1 6 11 1 8 15 2 9 16 2 7 12 2 9 16 3 10 17 8 3 10 17 3 13 11 21 4 11 18 4 18 4 9 14 5 12 19 5 12 19 5 10 15 6 13 20 6 13 20 16 7 14 7 14 TestCase objects TestSuite objects TestObject objects July 16, 2012 MTS - Controllable Test Objects 31
  • 32. Controllable Test Objects Design Goal TTCN xUnit MTS Select, Iterate, any level Yes No Yes Generate with MBT strategies Yes Yes Yes Logical/Physical separation Yes No Yes Platform agnostic/robust Yes ? Yes Channel agnostic/robust Yes ? Yes Distributed control Yes No Yes Minimize Test Agent resources NA No Yes Minimize brittleness Yes No Yes Intuitive interaction No Yes Yes Composable No Yes Yes July 16, 2012 MTS - Controllable Test Objects 32
  • 33. MTS hard problem queue • Protocol to drive remote target host IUT from test host – Bi-directional, lightweight (BEEP ?) – Platform and stack agnostic – Target environment control (remote command line) – Distributed adapter RPC • Forced reflection to generate adapters • Logical/physical mapping in generative models • Scalable asynchronous remote agents – Control strategy – Provisioning – Protocol July 16, 2012 MTS - Controllable Test Objects 33
  • 34. Question Time Bob Binder rvbinder@gmail.com www.robertvbinder.com July 16, 2012 MTS - Controllable Test Objects 34