Today’s Agenda  HW 3 Due, HW 4 Out  Quick Review  Finish Race Analysis  Reachability Testing Advanced Topics in Software Engineering 1.

Slides:



Advertisements
Similar presentations
Partial Order Reduction: Main Idea
Advertisements

1 Chao Wang, Yu Yang*, Aarti Gupta, and Ganesh Gopalakrishnan* NEC Laboratories America, Princeton, NJ * University of Utah, Salt Lake City, UT Dynamic.
1 Concurrency: Deadlock and Starvation Chapter 6.
Automatic Verification Book: Chapter 6. What is verification? Traditionally, verification means proof of correctness automatic: model checking deductive:
1 Finite Constraint Domains. 2 u Constraint satisfaction problems (CSP) u A backtracking solver u Node and arc consistency u Bounds consistency u Generalized.
D u k e S y s t e m s Time, clocks, and consistency and the JMM Jeff Chase Duke University.
Mutual Exclusion By Shiran Mizrahi. Critical Section class Counter { private int value = 1; //counter starts at one public Counter(int c) { //constructor.
Chapter 6: Process Synchronization
Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9 th Edition Chapter 5: Process Synchronization.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Chapter 6: Process Synchronization.
Process Synchronization. Module 6: Process Synchronization Background The Critical-Section Problem Peterson’s Solution Synchronization Hardware Semaphores.
Testing Concurrent/Distributed Systems Review of Final CEN 5076 Class 14 – 12/05.
Iterative Context Bounding for Systematic Testing of Multithreaded Programs Madan Musuvathi Shaz Qadeer Microsoft Research.
Train DEPOT PROBLEM USING PERMUTATION GRAPHS
Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1.
CS 582 / CMPE 481 Distributed Systems
What we will cover…  Distributed Coordination 1-1.
Ordering and Consistent Cuts Presented By Biswanath Panda.
CMPT 431 Dr. Alexandra Fedorova Lecture VIII: Time And Global Clocks.
VBA Modules, Functions, Variables, and Constants
CPSC 668Set 16: Distributed Shared Memory1 CPSC 668 Distributed Algorithms and Systems Fall 2006 Prof. Jennifer Welch.
CPSC 322, Lecture 12Slide 1 CSPs: Search and Arc Consistency Computer Science cpsc322, Lecture 12 (Textbook Chpt ) January, 29, 2010.
Concurrency CS 510: Programming Languages David Walker.
1 Concurrency: Deadlock and Starvation Chapter 6.
Testing an individual module
Recursion Chapter 7. Chapter 7: Recursion2 Chapter Objectives To understand how to think recursively To learn how to trace a recursive method To learn.
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing) © Naik & Tripathy 1 Software Testing and Quality Assurance Theory and Practice.
1/25 Pointer Logic Changki PSWLAB Pointer Logic Daniel Kroening and Ofer Strichman Decision Procedure.
272: Software Engineering Fall 2012 Instructor: Tevfik Bultan Lecture 4: SMT-based Bounded Model Checking of Concurrent Software.
Operating Systems CSE 411 CPU Management Oct Lecture 13 Instructor: Bhuvan Urgaonkar.
Zvi Kohavi and Niraj K. Jha 1 Memory, Definiteness, and Information Losslessness of Finite Automata.
1 VeriSoft A Tool for the Automatic Analysis of Concurrent Reactive Software Represents By Miller Ofer.
Recursion Chapter 7. Chapter Objectives  To understand how to think recursively  To learn how to trace a recursive method  To learn how to write recursive.
Concurrency: Mutual Exclusion and Synchronization Chapter 5.
Foundations of Software Testing Chapter 5: Test Selection, Minimization, and Prioritization for Regression Testing Last update: September 3, 2007 These.
CS4231 Parallel and Distributed Algorithms AY 2006/2007 Semester 2 Lecture 3 (26/01/2006) Instructor: Haifeng YU.
CS6133 Software Specification and Verification
On Reducing the Global State Graph for Verification of Distributed Computations Vijay K. Garg, Arindam Chakraborty Parallel and Distributed Systems Laboratory.
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
Week 10Complexity of Algorithms1 Hard Computational Problems Some computational problems are hard Despite a numerous attempts we do not know any efficient.
Operating Systems Distributed Coordination. Topics –Event Ordering –Mutual Exclusion –Atomicity –Concurrency Control Topics –Event Ordering –Mutual Exclusion.
Presenter: Long Ma Advisor: Dr. Zhang 4.5 DISTRIBUTED MUTUAL EXCLUSION.
Advanced Topics in Software Engineering Marjan Sirjani Tehran University Faculty of Engineering ECE Department Tehran,
Today’s Agenda  Reminder: HW #1 Due next class  Quick Review  Input Space Partitioning Software Testing and Maintenance 1.
Efficient Techniques for Software Testing Jeff Lei April 13, 2007.
Today’s Agenda  HW #2 Out  Replay Semaphore and Lock  Advanced Locking Advanced Topics in Software Engineering 1.
CSCI1600: Embedded and Real Time Software Lecture 11: Modeling IV: Concurrency Steven Reiss, Fall 2015.
13-1 Chapter 13 Concurrency Topics Introduction Introduction to Subprogram-Level Concurrency Semaphores Monitors Message Passing Java Threads C# Threads.
Advanced Topics in Software Engineering1 Today’s Agenda  HW #1  Quick Review  Finish The CS Problem  Replay Shared Variables.
Chapter 13 Backtracking Introduction The 3-coloring problem
Software Systems Verification and Validation Laboratory Assignment 4 Model checking Assignment date: Lab 4 Delivery date: Lab 4, 5.
1 Chapter 11 Global Properties (Distributed Termination)
Agenda  Quick Review  Finish Introduction  Java Threads.
Reachability Testing of Concurrent Programs1 Reachability Testing of Concurrent Programs Richard Carver, GMU Yu Lei, UTA.
Chapter 6 Synchronization Dr. Yingwu Zhu. The Problem with Concurrent Execution Concurrent processes (& threads) often access shared data and resources.
CSPs: Search and Arc Consistency Computer Science cpsc322, Lecture 12
Control Flow Testing Handouts
Handouts Software Testing and Quality Assurance Theory and Practice Chapter 4 Control Flow Testing
Operating systems Deadlocks.
CSPs: Search and Arc Consistency Computer Science cpsc322, Lecture 12
Outline of the Chapter Basic Idea Outline of Control Flow Testing
Software Development Cycle
CSPs: Search and Arc Consistency Computer Science cpsc322, Lecture 12
Objective of This Course
Operating systems Deadlocks.
Reachability testing for concurrent programs
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Semaphores Chapter 6.
Concurrency: Mutual Exclusion and Process Synchronization
Presentation transcript:

Today’s Agenda  HW 3 Due, HW 4 Out  Quick Review  Finish Race Analysis  Reachability Testing Advanced Topics in Software Engineering 1

Quick Review  What is data race? What is general race? Advanced Topics in Software Engineering 2

Advanced Topics in Software Engineering 3 Reachability Testing  Introduction  A General Execution Model  Computing Race Variants  A RT Algorithm  Empirical Results  Conclusion

Advanced Topics in Software Engineering 4 Concurrent Programs  Contain a set of cooperative threads/processes  multithreaded programs - threads synchronize by accessing shared memory  distributed programs – threads synchronize by exchanging messages  Pervasive in modern software development  better resource utilization  increased computing efficiency  provide simple solutions to certain problems  Notoriously difficult to test due to their non- deterministic behavior  Multiple executions of the same program with the same input may display different behaviors

Advanced Topics in Software Engineering 5 Testing Strategies  Non-deterministic testing - execute the same program with the same input for multiple times:  easy, but inefficient, and some errors cannot be detected  Deterministic testing - select a set of test sequences and then force them to be exercised:  can detect more subtle errors, but requires additional effort for test sequence selection and runtime control  State exploration – explore the state space in a systematic manner  suffers the well-known state explosion problem  state representation is difficult for programs written in a full-fledged programming language

Advanced Topics in Software Engineering 6 Reachability Testing  Combines non-deterministic and deterministic testing  Generating test sequences dynamically, without constructing any static model  Dealing with partial orders directly, and thus no redundant interleavings!  Can also be considered as a state exploration technique  Exercising every possible synchronization sequence of a program with a given input

Advanced Topics in Software Engineering 7 The RT Process 1. Execute a program P with input I non- deterministically to collect a trace Q 2. Identify the race conditions in Q and compute its race variants 3. For each variant, conduct a prefix-based test run to collect a new trace Q ’ 4. Repeat 2, 3, and 4 for each newly collected trace Q ’.

Advanced Topics in Software Engineering 8 Assumptions  For a concurrent program P with a given input X, the RT process will exercise every partially-ordered SYN-sequence of P with X exactly once, under the following assumptions:  P is closed  Concurrency is the only source of non-determinism  A test driver is used to make every test run terminate  RT can be applied to the commonly used synchronization constructs, including message passing, semaphores and monitors.

Advanced Topics in Software Engineering 9 Example

Advanced Topics in Software Engineering 10 Reachability Testing  Introduction  A General Execution Model  Computing Race Variants  A RT Algorithm  Empirical Results  Conclusion

Advanced Topics in Software Engineering 11 Event Types  Message-passing  When a thread T performs a send (receive) operation, a send (receive) event occurs on T  Semaphore  When a thread T calls a P or V operation on a semaphore s, a call event occurs on T  When a P or V operation is completed, a semaphore completion event occurs on s  SU Monitor  When a thread T calls a method of monitor M, a monitor call event occurs on T.  When T eventually enters the monitor, a monitor entry event occurs on M  SC Monitor  A monitor call event occurs on a thread T when it calls a monitor method or tries to re-enter the monitor  A monitor entry event occurs when T eventually enters the monitor

Advanced Topics in Software Engineering 12 SYN-sequence  A pair of sending and receiving events that are synchronized with each other  Sending event: Send or call event  Receiving event: Receive, completion, or entry event  Let Q be a SYN-sequence exercised by a concurrent execution. Q can be defined as a tuple (Q1, Q2, …, Qn, Y):  Qi: the totally-ordered sequence of events that occurred on a thread or a synchronization object  Y: the set of synchronization pairs  The outcome of a concurrent execution is determined by the program text, the input, and the SYN-sequence exercised by the execution.

Advanced Topics in Software Engineering 13 SYN-sequence Equality  Two SYN-sequences Q and Q ’ are equal, denoted as Q = Q ’, if there exists a one-to-one mapping m from the events in Q to those in Q ’ that preserves the synchronization relation,  That is, is a synchronization pair in Q ’ if and only if is a synchronization pair in Q.

Advanced Topics in Software Engineering 14 Event Descriptor (1)  Sending event: (Sender, Destination, Operation, Index)  Sender: the sending thread  Destination: the destination thread or synchronization object  Operation: the type of the operation performed (P, V, send, etc),  Index: the event index  Receiving event: (Receiver, OpenList, index)  Receiver: the receiving thread or object  OpenList: a field to be defined later that assists in identifying race conditions  index: the event index

Advanced Topics in Software Engineering 15 Event Descriptor (2) Synchronization constructSenderDestinationOperationindex asynchronous message passingsending thread IDPort IDsendevent index synchronous message passingsending thread IDPort IDsendevent index semaphorescalling thread IDsemaphore IDP or Vevent index monitorscalling thread IDmonitor IDmethod nameevent index Synchronization constructReceiverOpenListindex asynchronous message passingreceiving thread IDthe port of revent index synchronous message passingreceiving thread IDopen ports (including r’s port)event index semaphoressemaphore ID operations (P and/or V) that could be completed at r event index monitorsmonitor IDall of the monitor’s methodsevent index Event descriptor for sending event Event descriptor for receiving event

Advanced Topics in Software Engineering 16 Example – Asynchronous Message-Passing

Advanced Topics in Software Engineering 17 Example – Synchronous Message-Passing

Advanced Topics in Software Engineering 18 Example – Semaphore

Advanced Topics in Software Engineering 19 Example - Monitor

Advanced Topics in Software Engineering 20 Reachability Testing  Introduction  A General Execution Model  Computing Race Variants  A RT Algorithm  Empirical Results  Conclusion

Advanced Topics in Software Engineering 21 Timestamp Assignment  Recall that vector timestamps can be used to determine the happened-before relation.  Notations:  T.v : the vector clock maintained by a thread T.  T.v[i] : the ith element in T.v  e.ts : the vector timestamp of an event e.

Advanced Topics in Software Engineering 22 Timestamp – Syn. Comm.  When a thread Ti executes a blocking send event s: (a) Ti.v[i] = Ti.v[i] + 1; (b) s.ts = Ti.v.  When a thread Tj executes a receive event r that receives the message sent by s: (a)Tj.v[j] = Tj.v[j] + 1; (b) Tj.v = max(Tj.v, s.ts); and (c) r.ts = Tj.v. Thread Tj also sends Tj.v back to thread Ti  When thread Ti receives Tj.v: Ti.v = max(Ti.v, Tj.v).

Advanced Topics in Software Engineering 23 Timestamp – Semaphore/Monitor  When a thread Ti executes a sending event s: (a) Ti.v[i] = Ti.v[i] + 1; (b) s.ts = Ti.v;  When a receiving event r that is synchronized with a sending event s occurs on a synchronization object O: (a) O.v = max(O.v, s.ts); (b) r.ts = O.v.  Semaphore: When a thread Ti finishes executing a P() or V() operation on semaphore O: Ti.v = max(Ti.v, O.v). SU monitor: When a thread Ti finishes executing a method of monitor O: T.v = max(T.v, O.v). SC monitor: When a thread Ti finishes executing a method of monitor O, or when Ti is signaled while waiting on a condition variable of O: Ti.v = max(Ti.v, O.v).

Advanced Topics in Software Engineering 24 Happened-before Relation  For a sending or receiving event e, let e.tid be the (integer) thread ID of the thread that executes e.  If event e is a completion event on a semaphore or an entry event on a monitor, then e.tid is the thread ID of the thread that executes the sending partner of e.)  Let e1 and e2 be two events in Q. Then, e1  e2 if and only if  is a synchronization pair; or  e1.ts[e1.tid]  e2.ts[e1.tid] and e1.ts[e2.tid] < e2.ts[e2.tid].

Advanced Topics in Software Engineering 25 Control Structure  The control-structure c-struct(e, Q) of event e contains all the events, as well as the synchronizations between them, that could possibly control whether or not event e is executed.  Empty if e is the first event exercised by a thread;  Otherwise, the prefix of Q that contains the event f that T exercised immediately before e and all the events that happened before f, including the synchronizations between these events.

Advanced Topics in Software Engineering 26 Event Equality  Let CP be a concurrent program. Let Q and Q ’ be two SYN- sequences of a concurrent program CP with input X.  An event e in Q is equal to an event e ’ in Q ’, denoted as e = e ’, if c-struct(e, Q) = c-struct(e ’, Q ’ ).

Advanced Topics in Software Engineering 27 Lead Race  Let s be a sending event and r be a receiving event in an execution such that is a synchronization pair. Let s ’ be another sending event in the execution.  There exists a lead race between s ’ and s with respect to r if s ’ and r can be synchronized with each other during another execution in which all the events that happen before s ’ or r in Q are replayed.

Advanced Topics in Software Engineering 28 Race Set  Let s be a sending event and r be a receiving event such that is a synchronization pair. The race set race_set(r) is the set of sending events in Q that have a race with s with respect to r.  A sending event s is in the race set of a receiving event r in Q if:  s is open at r  r does not happen before s  if is a synchronization pair, r happens before r ’  if a sending event s ’ has the same source and destination as s but happens before s, there exists a receiving event r ’ such that is a synchronization pair and r ’ happens before r.

Advanced Topics in Software Engineering 29 Race Variant  Let Q be a SYN-sequence. A race variant V of Q is another SYN-sequence that satisfies the following conditions:  There exists at least one receiving event r in both Q and V such that send(r, Q) ≠ send(r, V).  Let r be a receiving event in Q and V. If send(r, Q) ≠ send(r, V), then send(r, V) must be in race_set(r, Q).  Let e be a sending or receiving event in Q. Then, e is not in V if and only if there exists a receiving event r in Q such that r  c-struct(e) and send(r, Q) ≠ send(r, V).

Advanced Topics in Software Engineering 30 Race Table  In a race table, each column represents a receiving event whose race set is non-empty, and each row represents a unique, partially-ordered race variant of Q.  Let r be a receiving event represented by one of the columns and V be a race variant represented by one of the rows. The value v in the row for V and the column for r indicates how r in sequence Q is changed to create variant V:  v = -1 indicates that r is removed from V.  v = 0 indicates that no new sending partner is specified for r in V.  v > 0 indicates that in V, the sending partner of r is changed to the v-th event in race_set(r, Q), where the sending events in race_set(r, Q) are arranged in an arbitrary order and the index of the first event in race_set(r, Q) is 1.

Advanced Topics in Software Engineering 31 Race Table - Example T1 T2T3T4 s1 r1 s2 r2 s5 r3 s3 r5 T5 s4 r4 {s2} {s4, s5} {s5} {} r1r3r T1 T2T3T4 s1 r1 s2 r2 s5 r3 s3 T5 s4 r4 v1 T1 T2T3T4 s1s2 r1 r3 s3 T5 s4 v5

Advanced Topics in Software Engineering 32 A Naïve Algorithm (1)  Let (r1, r2, …, rn) be the heading of the race table, which consists of the receiving events whose race sets are non-empty, arranged in an arbitrary order.  Let domain(ri) be the set of values that can appear in the column with heading ri.  If the size of the race set for ri is denoted as |race_set(ri)|, then the set of values in domain(ri) is {-1, 0, 1,…,|race_set(ri)|}.

Advanced Topics in Software Engineering 33 A Naïve Algorithm (2)  Generates the set T of tuples that represent all the possible combinations of changes  T = domain(r1)  domain(r2)  …  domain(rn).  A tuple t  T to the race table if t passes a validity check  There is at least one value t[i], 1  i  n, such that t[i]> 0.  t[i] = -1, 1  i  n, if and only if there exists an index j, where 1  j  n and j  i, such that t[j] > 0 and rj  c- struct(ri)  If t[i] > 0, there does not exist an index j, 1  j  n, such that t[j] > 0 and rj  c-struct(s), where s is the t[i]th sending event in race_set(ri),

Advanced Topics in Software Engineering 34 Algorithm Construct-Race-Table 1. initialize table = (heading, rows) to be an empty race table; 2. R = {r  Q | |race_set(r)| > 0}; 3. let heading = (r1, r2,..., r|R|} be a topological order of R w.r.t the happened-before relation; 4. D = {d1, d2,..., d|R|}, where di = |race_set(ri)|; 5. let t be an array of length |R| and initialize t with all 0s; 6. while (true) { 7. find the largest index i such that t[i] < di and t[i] != -1; 8. if (such an index i does not exist) 9. break; 10. t[i]++; 11. if (t[i] == 1) // just changed t[i] from 0 to for (i < j  |R|) 13. if (t[j]  -1 and ri  c-struct(rj)) 14. t[j] = -1; 15. for (i < j  |R|) 16. if (t[j] == dj) { 17. t[j] = 0; // just changed t[j] from dj to for (j < k  |R|) 19. if (t[k] == -1 and rj  c-struct(rk) and there is no index l, 1  l 0 and rl  c-struct(rk)) 20. t[k] = 0; 21. } // end if 22. let s be the t[i]th sending event in race_set(ri); 23. if (there does not exist an index j, 1  j  |R|, such that t[j] > 0 and rj  c-struct(s)) 24. add t to rows; 25.} // end while 26. return table; }

Advanced Topics in Software Engineering 35 Reachability Testing  Introduction  A General Execution Model  Computing Race Variants  A RT Algorithm  Empirical Results  Conclusion

Advanced Topics in Software Engineering 36 S/V Graph  All the possible SYN-sequence of a program with a given input can be organized into a S/V graph  Each node n is labeled by a SYN-sequence, denoted by seq(n).  An edge from node n to node n ’ is labeled by a variant, var(e) of node n, indicating that seq(n ’ ) can be collected from a prefix-based test run with var(e).  Theorem: Let CP be a concurrent program. Let G be the S/V-graph of CP with input X. Then, G is strongly connected.  Thus, reachability testing can start with a SYN-sequence collected from non-deterministic testing.

Advanced Topics in Software Engineering 37 A Graph-Theoretic Perspective  The goal of RT is to construct a spanning tree of the S/V-graph of a concurrent program with a given input.  Existing RT algorithms must save the test history to avoid generating the same node for more than once. How to generate a spanning tree without saving the test history?

Advanced Topics in Software Engineering 38 Example – S/V Graph

Advanced Topics in Software Engineering 39 Main Idea  Two path constraints are identified such that given two arbitrary nodes n and n ’ in G, there is exactly one acyclic path from n to n ’ that satisfies these constraints  A spanning tree can be constructed by enforcing these constraints, i.e., by only generating paths that satisfy these constraints.

Advanced Topics in Software Engineering 40 Path Constraints  Constraint 1: An edge can change the outcome of a race only if such change reconciles a difference between the source node and the target node.  Constraint 2: Each edge must reconcile all the differences that can be reconciled between the source node and the target node.

Advanced Topics in Software Engineering 41 Algorithm Reachability-Test ALGORITHM Reachability-Testing (CP: a concurrent program; X: an input of CP) { 1. let variants be an empty set; 2. collect a SYN-sequence Q 0 by executing CP with input X non- deterministically; 3. let V 0 be the special empty variant that contains no events 4. variants = GenerateVariants(Q, V 0 ) 5. while (variants is not empty) { 6. withdraw a variant V from variants; 7. collect a SYN-sequence Q by conducting a modified prefix-based test run with V; 8. variants = variants  GenerateVariants(Q, V); }

Advanced Topics in Software Engineering 42 Function GenerateVariants FUNCTION GenerateVariants (SYN-sequence Q, Variant V) { // sequence Q was collected during prefix-based testing with variant V // prune “ old ” sending events 1. for each receiving event r in V (and thus in Q too) 2. race_set(r, Q) = race_set(r, Q) - race_set(r, V) // generate a subset of the race variants of Q 3. Use algorithm Construct-Race-Table to construct a race table with statement 2 in the algorithm replaced with the following statement R = {r  Q | |race_set(r)| > 0 and r.color = white} 4. Derive a list variants(Q) of race variants, one variant from each row of the race table // set the colors of the receiving events in the variants of Q 5. for (each variant V' in variants (Q)) { 6. for (each receiving event r in V' whose sending partner was explicitly changed) { 7. r.color = black; 8. for (each receiving event r' that happens before r in V') { 9. r'.color = black; 10.} 11. } 12. } 13. return variants (Q); }

Advanced Topics in Software Engineering 43 Reachability Testing  Introduction  A General Execution Model  Computing Race Variants  A RT Algorithm  Empirical Results  Conclusion

Advanced Topics in Software Engineering 44 Subject Programs  BB: A solution to the bounded-buffer problem where the buffer is protected using either a selective wait, semaphores, an SU monitor, or an SC monitor.  RW: A solution to the readers and writers problem using a selective wait, semaphores, an SU monitor, or an SC monitor.  DP: A solution that uses an SU monitor to solve the dining philosophers problem  DME: A solution to the distributed mutual exclusion problem.

Advanced Topics in Software Engineering 45 Empirical Results ProgramSeqsProgramSeqsProgramSeqs BB-select144RW-select768DP-monitorSU (3P)30 BB-semaphore324RW-semaphore21744DP-monitorSU (4P)624 BB-monitorSU720RW-monitorSU13320DP-monitorSU (5P)19330 BB-monitorSC12096RW-monitorSC61716DME4032

Advanced Topics in Software Engineering 46 Comparison to VeriSoft (1)  VeriSoft is a state exploration-based tool developed by Bell Lab  Uses partial order reduction to avoid exercising redundant interleavings  VeriSoft is very similar to RichTest in terms that it is stateless, i.e., it explores the state space by exercising all possible synchronization sequences.

Advanced Topics in Software Engineering 47 Dinning Philosophers

Advanced Topics in Software Engineering 48 Reachability Testing  Introduction  A General Model  Computing Race Variants  A RT Algorithm  Empirical Results  Conclusion

Advanced Topics in Software Engineering 49 Conclusion  RT generates test sequences dynamically, which is more scalable than many model-based approaches. Our latest tool has almost constant memory requirements.  Compared to JPF and VeriSoft, which try to reduce the chances of generating redundant interleavings, RT deals with partial orders directly.  While most tools for concurrent programs testing rely on access to the thread scheduler and are thus platform dependent, our RT tool is platform independent.

Advanced Topics in Software Engineering 50 Future Work  Test oracle – automatically evaluate test runs against properties specified in some logic formalism  Coverage-based RT - use coverage measures to selectively exercise a subset of the SYN- sequences  Model extraction – use RT to extract a complete model of the synchronization/communication behavior of a program  Real-time testing – add explicit time into the RT framework