SlideShare a Scribd company logo
Mike Bartley, Test and Verification Solutions Ltd. 
Innovations for Testing Parallel Software 
www.eurostarconferences.com 
@esconfs #esconfs
2 
27 October 2010 
Test and Verification Solutions 
Innovations for Testing 
Parallel Software 
Mike Bartley, TVS
3 
3 
27 October 2010 
Agenda 
•Have you noticed that the hardware in changing? 
–The various types of distributed computing 
–The rise of multicore computing 
•Where is this stuff used? 
•Is it important? 
•The problems 
•The challenges for 
–Testing 
–Debug
4 
4 
27 October 2010 
The underlying law of hardware: Moore’s Law 
•Hardware doubles the number of transistors & speed 
–every 18 months 
•Power issues 
–Frequency scaling through process minimisation increases power 
•How to keep increased performance with low power?
5 
5 
27 October 2010 
The hardware response is multiple cores! 
One of the goals of .NET Framework 4 was to make it easier for developers to write parallel programs that target multi-core machines. To achieve that goal, .NET 4 introduces various parallel- programming primitives that abstract away some of the messy details that developers have to deal with when implementing parallel programs from scratch. 
The Intel® Core™ i7 processor delivers best-in- class performance for the most demanding applications. This quad-core processor features 8- way multitasking capability and additional L3 cache.
6 
6 
27 October 2010 
Consider a mobile phone streaming video 
Power considerations 
•Mobile = battery 
•Server = cost + heat Parallelism helps with 
•Mobile = Latency 
•Server = Throughput
7 
7 
27 October 2010 
Supercomputers 
•National Supercomputing Center in Tianjin 
–OS = Linux 
–Main Memory = 229376 GB 
–Processor = Intel EM64T Xeon X56xx 
•186368 of them delivering 4701000 GFlops 
•Supercomputers are used regularly in a number of applications 
–Banking 
–Weather forecasting 
–Drug analysis 
–Modelling
8 
8 
27 October 2010 
The types of distributed computing 
•Distributed CPU and memory 
–Client-server 
–Internet applications 
•Multi-processing 
–Multiprocessing is the use of two or more central processing units (CPUs) within a single computer system 
•Multi-tasking 
–The execution of multiple concurrent software processes in a system as opposed to a single process at any one instant 
•Multi-threading 
–Threads have to share the resources of a single CPU 
•Multicore 
–An integrated circuit which has two or more individual processors (called cores in this sense).
9 
9 
27 October 2010 
From sequential to parallel 
•Execution of a sequential program only depends on the starting state and its inputs. 
•Execution of parallel programs also depends on the interactions between them. 
Shared Memory: 
Communication is based on altering the contents of shared memory locations (Java). 
Usually requires the application of some form of locking (e.g., mutexes, semaphores, or monitors) to coordinate between threads. 
Message Passing: 
Communication is based on exchanging messages (occam, XC). 
The exchange of messages may be carried out asynchronously, or synchronously, i.e. the sender blocks until the message is received.
10 
10 
27 October 2010 
Many Potential Execution Orders 
20 
30 
40 
50 
60 
51 
61 
52 
62 
05 
15 
25 
00 
04 
24 
35 
45 
55 
65 
11 
02 
12 
13 
31 
42 
32 
22 
23 
33 
53 
44 
54 
63 
64 
P1 
P2 
e11 
e12 
e13 
e23 
e22 
e21 
e24 
e14 
e25 
e15 
e16 
03 
14 
34 
01 
10 
21 
41 
43 
7 states 
6 states 
30 states
11 
11 
27 October 2010 
The problems with distributed processing Non-determinism 
•Non-determinism 
–We cannot guarantee the order of execution 
–And this can lead to race conditions 
Code running on core1 
Shared Memory 
Code running on core2
27 October 2010 1122 
static int num = 0; 
thread1 () { 
int val = num; 
num = val + 1; 
} 
thread2 () { 
int val = num; 
num = val + 1; 
} 
Race Condition Examples 
So why don’t we just use “num++”?
13 
13 
27 October 2010 
Another example 
static void transfer(Transfer t) { 
balances[t.fundFrom] -= t.amount; 
balances[t.fundTo] += t.amount; 
} 
•Expected Behavior: 
–Money should pass from one account to another 
•Observed Behavior: 
–Sometimes the amount taken is not equal to the amount received 
•Possible bug: 
–Thread switch in the middle of money transfers 
–Second thread updates “Transfer” or “balances” in parallel 
•So what are the solutions? 
–Locks and mutual exclusion 
Remember these are NOT atomic actions
14 
14 
27 October 2010 
The use of locks 
class mutex{ 
mutex() {//gettheappropriatemutex} 
~mutex() {//release it } 
private: sometype mHandle; 
} 
voidfoo() { 
mutex get; //getthemutex 
… 
if(a) return; //released here 
… 
if(b) throw“oops”; //or here 
… 
return; //or here 
Must remember to release the “mutex”! 
But there are so many possible “exits” from the code 
Locks can cause bugs – especially DEADLOCK!
15 
15 
27 October 2010 
Deadlock example 
Code for Process P 
Code for Process Q 
Lock(M) 
Lock(N) 
Lock(N) 
Lock(M) 
Critical Section 
Critical Section 
Unlock(N) 
Unlock(M) 
Unlock(M) 
Unlock(N)
16 
16 
27 October 2010 
Cause of deadlock 
1.Tasks claim exclusive control of the resources they require ("mutual exclusion“ condition). 
2.Tasks hold resources already allocated to them while waiting for additional resources ("wait for" condition). 
3.Resources cannot be forcibly removed from the tasks holding them until the resources are used to completion ("no preemption" condition). 
4.A circular chain of tasks exists, such that each task holds one or more resources that are being requested by the next task in the chain ("circular wait“ condition).
17 
17 
27 October 2010 
Commonly found bugs 
•An operation is assumed to be atomic but it is actually not. 
•Wrong or no lock 
•Message protocol errors 
–Mismatch between channel ends 
–Missing send or receive 
•Orphaned threads due to abnormally terminating master thread 
Catching these bugs is challenging
18 
18 
27 October 2010 
Finding bugs in parallel SW 
•Research shows that bugs due to parallel code execution represent only ~10% of the bugs 
•But they are the hardest to find 
–If we run the same test twice it is not guaranteed to produce the same result (non-determinism) 
•Heisenbug 
•A disproportionate number are found late or by the customer 
–Require large configurations to test 
–Typically appear only in specific configurations 
–These bugs are the most expensive! 
•We need to have some ways of disturbing the execution 
•We need to know when we are done
19 
19 
27 October 2010 
Heisenbugs 
•A bug that disappears or alters its behavior when one attempts to probe or isolate it 
•Why? 
–Using a debugger alters the execution order and the bug disappears 
–Even adding a print statement changes behaviour! 
•For example 
–Uninitialised variable in a sequential program 
•In C, 9 out of 10 Heisenbugs are from uninitialized auto variables 
–In parallel programs 
•Race conditions and deadlocks are both examples 
•How much time do you currently spend in debug?
20 
20 
27 October 2010 
Disturbing the execution 
Philosophy 
•Modify the program so it is more likely to exhibit bugs (without introducing new bugs – no false alarms) 
•Minimize impact on the testing process (under-the-hood technology) 
•Reuse existing tests 
Techniques to instrument concurrent events 
•Concurrent events are the events whose order determines the result of the program, such as accesses to shared variables, calls to synchronization primitives 
•At every concurrent event, a random-based decision is made whether to cause a context switch – noise injection 
–e.g., using a sleep statement
21 
21 
27 October 2010 
Knowing when we are done 
•What are our current models of test completion? 
–Black box? 
•Requirements coverage 
•Test matrix 
•Use-case coverage 
•All tests written and passing? 
–White box? 
•Code coverage at 90%? or some other random number 
•These will not be enough! 
–Can we ensure no races? 
–Can we ensure no deadlocks? 
•Static analysis will become more important
22 
22 
27 October 2010 
New coverage models 
•For shared memory: 
–Synchronization coverage 
•Make sure that every synchronization primitive was fully exercised 
–Shared variable coverage 
•Make sure shared variables were accessed by more than one thread 
–ConTest from IBM implements these coverage models 
•For message passing: 
–Communication coverage for multi-threaded message passing programs
23 
23 
27 October 2010 
New Coverage Model [Kyriakos Georgiou, K. Eder, TVS, XMOS] 
Criterion 7 IOB SYN-sequence 
Criterion 6 SYN-sequence 
Criterion 3 snd-sequence 
Criterion 5 IO SYN-event 
Criterion 2 
rcv-statement 
Criterion 1 
Channel 
Criterion 4 
SYN-event 
Captures communication infrastructure in a message-passing program 
Fully automatic extraction of coverage tasks up to SYN-events 
User input required for SYN-sequences (tool support, semantics) 
Complements existing code and functional coverage models 
Added value in practice 
Bugs can be captured before even running test cases on the code 
SYN-sequences permit testing protocol compliance
24 
24 
27 October 2010 
Conclusions 
Testing of parallel SW has many challenges: 
•Non-determinism 
•Race conditions, deadlocks, livelocks 
•Heisenbugs 
–How to provoke the 10% of bugs down to parallelism? 
•Making rare events happen more often 
–How to know when you are done? 
•New coverage models
25 
25 
27 October 2010 
Questions 
Mike Bartley 
Test and Verification Solutions 
mike@testandverification.com

More Related Content

What's hot

Synchronization linux
Synchronization linuxSynchronization linux
Synchronization linuxSusant Sahani
 
14 static timing_analysis_5_clock_domain_crossing
14 static timing_analysis_5_clock_domain_crossing14 static timing_analysis_5_clock_domain_crossing
14 static timing_analysis_5_clock_domain_crossing
Usha Mehta
 
Real Time Operating System Concepts
Real Time Operating System ConceptsReal Time Operating System Concepts
Real Time Operating System Concepts
Sanjiv Malik
 
Interface between kernel and user space
Interface between kernel and user spaceInterface between kernel and user space
Interface between kernel and user spaceSusant Sahani
 
TMPA-2017: Technology and Tools for Developing Industrial Software Test Suite...
TMPA-2017: Technology and Tools for Developing Industrial Software Test Suite...TMPA-2017: Technology and Tools for Developing Industrial Software Test Suite...
TMPA-2017: Technology and Tools for Developing Industrial Software Test Suite...
Iosif Itkin
 
Session 1 introduction concurrent programming
Session 1 introduction  concurrent programmingSession 1 introduction  concurrent programming
Session 1 introduction concurrent programming
Eric Verhulst
 
RT linux
RT linuxRT linux
RT linux
SARITHA REDDY
 
Real time Linux
Real time LinuxReal time Linux
Real time Linux
navid ashrafi
 
Process synchronization in operating system
Process synchronization in operating systemProcess synchronization in operating system
Process synchronization in operating system
Ruaha Catholic university
 
Implementation of Election Algorithm of Distributed Systems in Client-Server ...
Implementation of Election Algorithm of Distributed Systems in Client-Server ...Implementation of Election Algorithm of Distributed Systems in Client-Server ...
Implementation of Election Algorithm of Distributed Systems in Client-Server ...
Mushfekur Rahman
 
8. mutual exclusion in Distributed Operating Systems
8. mutual exclusion in Distributed Operating Systems8. mutual exclusion in Distributed Operating Systems
8. mutual exclusion in Distributed Operating Systems
Dr Sandeep Kumar Poonia
 
Real Time Kernels
Real Time KernelsReal Time Kernels
Real Time KernelsArnav Soni
 
12 static timing_analysis_3_clocked_design
12 static timing_analysis_3_clocked_design12 static timing_analysis_3_clocked_design
12 static timing_analysis_3_clocked_design
Usha Mehta
 
Libckpt transparent checkpointing under unix
Libckpt transparent checkpointing under unixLibckpt transparent checkpointing under unix
Libckpt transparent checkpointing under unix
ZongYing Lyu
 
Test scenario simulator
Test scenario simulatorTest scenario simulator
Test scenario simulatorguest4ebcd7b
 
Performance analysis and troubleshooting using DTrace
Performance analysis and troubleshooting using DTracePerformance analysis and troubleshooting using DTrace
Performance analysis and troubleshooting using DTrace
Graeme Jenkinson
 
Vx works RTOS
Vx works RTOSVx works RTOS
Vx works RTOS
Sai Malleswar
 
Real-time soultion
Real-time soultionReal-time soultion
Real-time soultionNylon
 
SCP
SCPSCP

What's hot (20)

Synchronization linux
Synchronization linuxSynchronization linux
Synchronization linux
 
14 static timing_analysis_5_clock_domain_crossing
14 static timing_analysis_5_clock_domain_crossing14 static timing_analysis_5_clock_domain_crossing
14 static timing_analysis_5_clock_domain_crossing
 
Real Time Operating System Concepts
Real Time Operating System ConceptsReal Time Operating System Concepts
Real Time Operating System Concepts
 
Mutual exclusion and sync
Mutual exclusion and syncMutual exclusion and sync
Mutual exclusion and sync
 
Interface between kernel and user space
Interface between kernel and user spaceInterface between kernel and user space
Interface between kernel and user space
 
TMPA-2017: Technology and Tools for Developing Industrial Software Test Suite...
TMPA-2017: Technology and Tools for Developing Industrial Software Test Suite...TMPA-2017: Technology and Tools for Developing Industrial Software Test Suite...
TMPA-2017: Technology and Tools for Developing Industrial Software Test Suite...
 
Session 1 introduction concurrent programming
Session 1 introduction  concurrent programmingSession 1 introduction  concurrent programming
Session 1 introduction concurrent programming
 
RT linux
RT linuxRT linux
RT linux
 
Real time Linux
Real time LinuxReal time Linux
Real time Linux
 
Process synchronization in operating system
Process synchronization in operating systemProcess synchronization in operating system
Process synchronization in operating system
 
Implementation of Election Algorithm of Distributed Systems in Client-Server ...
Implementation of Election Algorithm of Distributed Systems in Client-Server ...Implementation of Election Algorithm of Distributed Systems in Client-Server ...
Implementation of Election Algorithm of Distributed Systems in Client-Server ...
 
8. mutual exclusion in Distributed Operating Systems
8. mutual exclusion in Distributed Operating Systems8. mutual exclusion in Distributed Operating Systems
8. mutual exclusion in Distributed Operating Systems
 
Real Time Kernels
Real Time KernelsReal Time Kernels
Real Time Kernels
 
12 static timing_analysis_3_clocked_design
12 static timing_analysis_3_clocked_design12 static timing_analysis_3_clocked_design
12 static timing_analysis_3_clocked_design
 
Libckpt transparent checkpointing under unix
Libckpt transparent checkpointing under unixLibckpt transparent checkpointing under unix
Libckpt transparent checkpointing under unix
 
Test scenario simulator
Test scenario simulatorTest scenario simulator
Test scenario simulator
 
Performance analysis and troubleshooting using DTrace
Performance analysis and troubleshooting using DTracePerformance analysis and troubleshooting using DTrace
Performance analysis and troubleshooting using DTrace
 
Vx works RTOS
Vx works RTOSVx works RTOS
Vx works RTOS
 
Real-time soultion
Real-time soultionReal-time soultion
Real-time soultion
 
SCP
SCPSCP
SCP
 

Similar to Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012

Real-time Inverted Search in the Cloud Using Lucene and Storm
Real-time Inverted Search in the Cloud Using Lucene and StormReal-time Inverted Search in the Cloud Using Lucene and Storm
Real-time Inverted Search in the Cloud Using Lucene and Storm
lucenerevolution
 
Real-Time Inverted Search NYC ASLUG Oct 2014
Real-Time Inverted Search NYC ASLUG Oct 2014Real-Time Inverted Search NYC ASLUG Oct 2014
Real-Time Inverted Search NYC ASLUG Oct 2014
Bryan Bende
 
MODULE 3 process synchronizationnnn.pptx
MODULE 3 process synchronizationnnn.pptxMODULE 3 process synchronizationnnn.pptx
MODULE 3 process synchronizationnnn.pptx
senthilkumar969017
 
Kubernetes at NU.nl (Kubernetes meetup 2019-09-05)
Kubernetes at NU.nl   (Kubernetes meetup 2019-09-05)Kubernetes at NU.nl   (Kubernetes meetup 2019-09-05)
Kubernetes at NU.nl (Kubernetes meetup 2019-09-05)
Tibo Beijen
 
Tsinghua University: Two Exemplary Applications in China
Tsinghua University: Two Exemplary Applications in ChinaTsinghua University: Two Exemplary Applications in China
Tsinghua University: Two Exemplary Applications in China
DataStax Academy
 
Foundational Design Patterns for Multi-Purpose Applications
Foundational Design Patterns for Multi-Purpose ApplicationsFoundational Design Patterns for Multi-Purpose Applications
Foundational Design Patterns for Multi-Purpose ApplicationsChing-Hwa Yu
 
chap-0 .ppt
chap-0 .pptchap-0 .ppt
chap-0 .ppt
Lookly Sam
 
cs1311lecture25wdl.ppt
cs1311lecture25wdl.pptcs1311lecture25wdl.ppt
cs1311lecture25wdl.ppt
FannyBellows
 
Latest (storage IO) patterns for cloud-native applications
Latest (storage IO) patterns for cloud-native applications Latest (storage IO) patterns for cloud-native applications
Latest (storage IO) patterns for cloud-native applications
OpenEBS
 
VTU 5TH SEM CSE OPERATING SYSTEMS SOLVED PAPERS
VTU 5TH SEM CSE OPERATING SYSTEMS SOLVED PAPERSVTU 5TH SEM CSE OPERATING SYSTEMS SOLVED PAPERS
VTU 5TH SEM CSE OPERATING SYSTEMS SOLVED PAPERS
vtunotesbysree
 
Cost-effective software reliability through autonomic tuning of system resources
Cost-effective software reliability through autonomic tuning of system resourcesCost-effective software reliability through autonomic tuning of system resources
Cost-effective software reliability through autonomic tuning of system resources
Vincenzo De Florio
 
Swimming upstream: OPNFV Doctor project case study
Swimming upstream: OPNFV Doctor project case studySwimming upstream: OPNFV Doctor project case study
Swimming upstream: OPNFV Doctor project case study
OPNFV
 
What’s eating python performance
What’s eating python performanceWhat’s eating python performance
What’s eating python performance
Piotr Przymus
 
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecksKernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Anne Nicolas
 
Architecting for the cloud elasticity security
Architecting for the cloud elasticity securityArchitecting for the cloud elasticity security
Architecting for the cloud elasticity security
Len Bass
 

Similar to Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012 (20)

Real-time Inverted Search in the Cloud Using Lucene and Storm
Real-time Inverted Search in the Cloud Using Lucene and StormReal-time Inverted Search in the Cloud Using Lucene and Storm
Real-time Inverted Search in the Cloud Using Lucene and Storm
 
Introduction to multicore .ppt
Introduction to multicore .pptIntroduction to multicore .ppt
Introduction to multicore .ppt
 
Real-Time Inverted Search NYC ASLUG Oct 2014
Real-Time Inverted Search NYC ASLUG Oct 2014Real-Time Inverted Search NYC ASLUG Oct 2014
Real-Time Inverted Search NYC ASLUG Oct 2014
 
Introduction
IntroductionIntroduction
Introduction
 
MODULE 3 process synchronizationnnn.pptx
MODULE 3 process synchronizationnnn.pptxMODULE 3 process synchronizationnnn.pptx
MODULE 3 process synchronizationnnn.pptx
 
Kubernetes at NU.nl (Kubernetes meetup 2019-09-05)
Kubernetes at NU.nl   (Kubernetes meetup 2019-09-05)Kubernetes at NU.nl   (Kubernetes meetup 2019-09-05)
Kubernetes at NU.nl (Kubernetes meetup 2019-09-05)
 
Tsinghua University: Two Exemplary Applications in China
Tsinghua University: Two Exemplary Applications in ChinaTsinghua University: Two Exemplary Applications in China
Tsinghua University: Two Exemplary Applications in China
 
Foundational Design Patterns for Multi-Purpose Applications
Foundational Design Patterns for Multi-Purpose ApplicationsFoundational Design Patterns for Multi-Purpose Applications
Foundational Design Patterns for Multi-Purpose Applications
 
chap-0 .ppt
chap-0 .pptchap-0 .ppt
chap-0 .ppt
 
cs1311lecture25wdl.ppt
cs1311lecture25wdl.pptcs1311lecture25wdl.ppt
cs1311lecture25wdl.ppt
 
Latest (storage IO) patterns for cloud-native applications
Latest (storage IO) patterns for cloud-native applications Latest (storage IO) patterns for cloud-native applications
Latest (storage IO) patterns for cloud-native applications
 
VTU 5TH SEM CSE OPERATING SYSTEMS SOLVED PAPERS
VTU 5TH SEM CSE OPERATING SYSTEMS SOLVED PAPERSVTU 5TH SEM CSE OPERATING SYSTEMS SOLVED PAPERS
VTU 5TH SEM CSE OPERATING SYSTEMS SOLVED PAPERS
 
Lecture1
Lecture1Lecture1
Lecture1
 
Cost-effective software reliability through autonomic tuning of system resources
Cost-effective software reliability through autonomic tuning of system resourcesCost-effective software reliability through autonomic tuning of system resources
Cost-effective software reliability through autonomic tuning of system resources
 
Swimming upstream: OPNFV Doctor project case study
Swimming upstream: OPNFV Doctor project case studySwimming upstream: OPNFV Doctor project case study
Swimming upstream: OPNFV Doctor project case study
 
data structure
data structuredata structure
data structure
 
Ch3-2
Ch3-2Ch3-2
Ch3-2
 
What’s eating python performance
What’s eating python performanceWhat’s eating python performance
What’s eating python performance
 
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecksKernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecks
 
Architecting for the cloud elasticity security
Architecting for the cloud elasticity securityArchitecting for the cloud elasticity security
Architecting for the cloud elasticity security
 

More from TEST Huddle

Why We Need Diversity in Testing- Accenture
Why We Need Diversity in Testing- AccentureWhy We Need Diversity in Testing- Accenture
Why We Need Diversity in Testing- Accenture
TEST Huddle
 
Keys to continuous testing for faster delivery euro star webinar
Keys to continuous testing for faster delivery euro star webinar Keys to continuous testing for faster delivery euro star webinar
Keys to continuous testing for faster delivery euro star webinar
TEST Huddle
 
Why you Shouldnt Automated But You Will Anyway
Why you Shouldnt Automated But You Will Anyway Why you Shouldnt Automated But You Will Anyway
Why you Shouldnt Automated But You Will Anyway
TEST Huddle
 
Being a Tester in Scrum
Being a Tester in ScrumBeing a Tester in Scrum
Being a Tester in Scrum
TEST Huddle
 
Leveraging Visual Testing with Your Functional Tests
Leveraging Visual Testing with Your Functional TestsLeveraging Visual Testing with Your Functional Tests
Leveraging Visual Testing with Your Functional Tests
TEST Huddle
 
Using Test Trees to get an Overview of Test Work
Using Test Trees to get an Overview of Test WorkUsing Test Trees to get an Overview of Test Work
Using Test Trees to get an Overview of Test Work
TEST Huddle
 
Big Data: The Magic to Attain New Heights
Big Data:  The Magic to Attain New HeightsBig Data:  The Magic to Attain New Heights
Big Data: The Magic to Attain New Heights
TEST Huddle
 
Will Robots Replace Testers?
Will Robots Replace Testers?Will Robots Replace Testers?
Will Robots Replace Testers?
TEST Huddle
 
TDD For The Rest Of Us
TDD For The Rest Of UsTDD For The Rest Of Us
TDD For The Rest Of Us
TEST Huddle
 
Scaling Agile with LeSS (Large Scale Scrum)
Scaling Agile with LeSS (Large Scale Scrum)Scaling Agile with LeSS (Large Scale Scrum)
Scaling Agile with LeSS (Large Scale Scrum)
TEST Huddle
 
Creating Agile Test Strategies for Larger Enterprises
Creating Agile Test Strategies for Larger EnterprisesCreating Agile Test Strategies for Larger Enterprises
Creating Agile Test Strategies for Larger Enterprises
TEST Huddle
 
Is There A Risk?
Is There A Risk?Is There A Risk?
Is There A Risk?
TEST Huddle
 
Are Your Tests Well-Travelled? Thoughts About Test Coverage
Are Your Tests Well-Travelled? Thoughts About Test CoverageAre Your Tests Well-Travelled? Thoughts About Test Coverage
Are Your Tests Well-Travelled? Thoughts About Test Coverage
TEST Huddle
 
Growing a Company Test Community: Roles and Paths for Testers
Growing a Company Test Community: Roles and Paths for TestersGrowing a Company Test Community: Roles and Paths for Testers
Growing a Company Test Community: Roles and Paths for Testers
TEST Huddle
 
Do we need testers on agile teams?
Do we need testers on agile teams?Do we need testers on agile teams?
Do we need testers on agile teams?
TEST Huddle
 
How to use selenium successfully
How to use selenium successfullyHow to use selenium successfully
How to use selenium successfully
TEST Huddle
 
Testers & Teams on the Agile Fluency™ Journey
Testers & Teams on the Agile Fluency™ Journey Testers & Teams on the Agile Fluency™ Journey
Testers & Teams on the Agile Fluency™ Journey
TEST Huddle
 
Practical Test Strategy Using Heuristics
Practical Test Strategy Using HeuristicsPractical Test Strategy Using Heuristics
Practical Test Strategy Using Heuristics
TEST Huddle
 
Thinking Through Your Role
Thinking Through Your RoleThinking Through Your Role
Thinking Through Your Role
TEST Huddle
 
Using Selenium 3 0
Using Selenium 3 0Using Selenium 3 0
Using Selenium 3 0
TEST Huddle
 

More from TEST Huddle (20)

Why We Need Diversity in Testing- Accenture
Why We Need Diversity in Testing- AccentureWhy We Need Diversity in Testing- Accenture
Why We Need Diversity in Testing- Accenture
 
Keys to continuous testing for faster delivery euro star webinar
Keys to continuous testing for faster delivery euro star webinar Keys to continuous testing for faster delivery euro star webinar
Keys to continuous testing for faster delivery euro star webinar
 
Why you Shouldnt Automated But You Will Anyway
Why you Shouldnt Automated But You Will Anyway Why you Shouldnt Automated But You Will Anyway
Why you Shouldnt Automated But You Will Anyway
 
Being a Tester in Scrum
Being a Tester in ScrumBeing a Tester in Scrum
Being a Tester in Scrum
 
Leveraging Visual Testing with Your Functional Tests
Leveraging Visual Testing with Your Functional TestsLeveraging Visual Testing with Your Functional Tests
Leveraging Visual Testing with Your Functional Tests
 
Using Test Trees to get an Overview of Test Work
Using Test Trees to get an Overview of Test WorkUsing Test Trees to get an Overview of Test Work
Using Test Trees to get an Overview of Test Work
 
Big Data: The Magic to Attain New Heights
Big Data:  The Magic to Attain New HeightsBig Data:  The Magic to Attain New Heights
Big Data: The Magic to Attain New Heights
 
Will Robots Replace Testers?
Will Robots Replace Testers?Will Robots Replace Testers?
Will Robots Replace Testers?
 
TDD For The Rest Of Us
TDD For The Rest Of UsTDD For The Rest Of Us
TDD For The Rest Of Us
 
Scaling Agile with LeSS (Large Scale Scrum)
Scaling Agile with LeSS (Large Scale Scrum)Scaling Agile with LeSS (Large Scale Scrum)
Scaling Agile with LeSS (Large Scale Scrum)
 
Creating Agile Test Strategies for Larger Enterprises
Creating Agile Test Strategies for Larger EnterprisesCreating Agile Test Strategies for Larger Enterprises
Creating Agile Test Strategies for Larger Enterprises
 
Is There A Risk?
Is There A Risk?Is There A Risk?
Is There A Risk?
 
Are Your Tests Well-Travelled? Thoughts About Test Coverage
Are Your Tests Well-Travelled? Thoughts About Test CoverageAre Your Tests Well-Travelled? Thoughts About Test Coverage
Are Your Tests Well-Travelled? Thoughts About Test Coverage
 
Growing a Company Test Community: Roles and Paths for Testers
Growing a Company Test Community: Roles and Paths for TestersGrowing a Company Test Community: Roles and Paths for Testers
Growing a Company Test Community: Roles and Paths for Testers
 
Do we need testers on agile teams?
Do we need testers on agile teams?Do we need testers on agile teams?
Do we need testers on agile teams?
 
How to use selenium successfully
How to use selenium successfullyHow to use selenium successfully
How to use selenium successfully
 
Testers & Teams on the Agile Fluency™ Journey
Testers & Teams on the Agile Fluency™ Journey Testers & Teams on the Agile Fluency™ Journey
Testers & Teams on the Agile Fluency™ Journey
 
Practical Test Strategy Using Heuristics
Practical Test Strategy Using HeuristicsPractical Test Strategy Using Heuristics
Practical Test Strategy Using Heuristics
 
Thinking Through Your Role
Thinking Through Your RoleThinking Through Your Role
Thinking Through Your Role
 
Using Selenium 3 0
Using Selenium 3 0Using Selenium 3 0
Using Selenium 3 0
 

Recently uploaded

Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 

Recently uploaded (20)

Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 

Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012

  • 1. Mike Bartley, Test and Verification Solutions Ltd. Innovations for Testing Parallel Software www.eurostarconferences.com @esconfs #esconfs
  • 2. 2 27 October 2010 Test and Verification Solutions Innovations for Testing Parallel Software Mike Bartley, TVS
  • 3. 3 3 27 October 2010 Agenda •Have you noticed that the hardware in changing? –The various types of distributed computing –The rise of multicore computing •Where is this stuff used? •Is it important? •The problems •The challenges for –Testing –Debug
  • 4. 4 4 27 October 2010 The underlying law of hardware: Moore’s Law •Hardware doubles the number of transistors & speed –every 18 months •Power issues –Frequency scaling through process minimisation increases power •How to keep increased performance with low power?
  • 5. 5 5 27 October 2010 The hardware response is multiple cores! One of the goals of .NET Framework 4 was to make it easier for developers to write parallel programs that target multi-core machines. To achieve that goal, .NET 4 introduces various parallel- programming primitives that abstract away some of the messy details that developers have to deal with when implementing parallel programs from scratch. The Intel® Core™ i7 processor delivers best-in- class performance for the most demanding applications. This quad-core processor features 8- way multitasking capability and additional L3 cache.
  • 6. 6 6 27 October 2010 Consider a mobile phone streaming video Power considerations •Mobile = battery •Server = cost + heat Parallelism helps with •Mobile = Latency •Server = Throughput
  • 7. 7 7 27 October 2010 Supercomputers •National Supercomputing Center in Tianjin –OS = Linux –Main Memory = 229376 GB –Processor = Intel EM64T Xeon X56xx •186368 of them delivering 4701000 GFlops •Supercomputers are used regularly in a number of applications –Banking –Weather forecasting –Drug analysis –Modelling
  • 8. 8 8 27 October 2010 The types of distributed computing •Distributed CPU and memory –Client-server –Internet applications •Multi-processing –Multiprocessing is the use of two or more central processing units (CPUs) within a single computer system •Multi-tasking –The execution of multiple concurrent software processes in a system as opposed to a single process at any one instant •Multi-threading –Threads have to share the resources of a single CPU •Multicore –An integrated circuit which has two or more individual processors (called cores in this sense).
  • 9. 9 9 27 October 2010 From sequential to parallel •Execution of a sequential program only depends on the starting state and its inputs. •Execution of parallel programs also depends on the interactions between them. Shared Memory: Communication is based on altering the contents of shared memory locations (Java). Usually requires the application of some form of locking (e.g., mutexes, semaphores, or monitors) to coordinate between threads. Message Passing: Communication is based on exchanging messages (occam, XC). The exchange of messages may be carried out asynchronously, or synchronously, i.e. the sender blocks until the message is received.
  • 10. 10 10 27 October 2010 Many Potential Execution Orders 20 30 40 50 60 51 61 52 62 05 15 25 00 04 24 35 45 55 65 11 02 12 13 31 42 32 22 23 33 53 44 54 63 64 P1 P2 e11 e12 e13 e23 e22 e21 e24 e14 e25 e15 e16 03 14 34 01 10 21 41 43 7 states 6 states 30 states
  • 11. 11 11 27 October 2010 The problems with distributed processing Non-determinism •Non-determinism –We cannot guarantee the order of execution –And this can lead to race conditions Code running on core1 Shared Memory Code running on core2
  • 12. 27 October 2010 1122 static int num = 0; thread1 () { int val = num; num = val + 1; } thread2 () { int val = num; num = val + 1; } Race Condition Examples So why don’t we just use “num++”?
  • 13. 13 13 27 October 2010 Another example static void transfer(Transfer t) { balances[t.fundFrom] -= t.amount; balances[t.fundTo] += t.amount; } •Expected Behavior: –Money should pass from one account to another •Observed Behavior: –Sometimes the amount taken is not equal to the amount received •Possible bug: –Thread switch in the middle of money transfers –Second thread updates “Transfer” or “balances” in parallel •So what are the solutions? –Locks and mutual exclusion Remember these are NOT atomic actions
  • 14. 14 14 27 October 2010 The use of locks class mutex{ mutex() {//gettheappropriatemutex} ~mutex() {//release it } private: sometype mHandle; } voidfoo() { mutex get; //getthemutex … if(a) return; //released here … if(b) throw“oops”; //or here … return; //or here Must remember to release the “mutex”! But there are so many possible “exits” from the code Locks can cause bugs – especially DEADLOCK!
  • 15. 15 15 27 October 2010 Deadlock example Code for Process P Code for Process Q Lock(M) Lock(N) Lock(N) Lock(M) Critical Section Critical Section Unlock(N) Unlock(M) Unlock(M) Unlock(N)
  • 16. 16 16 27 October 2010 Cause of deadlock 1.Tasks claim exclusive control of the resources they require ("mutual exclusion“ condition). 2.Tasks hold resources already allocated to them while waiting for additional resources ("wait for" condition). 3.Resources cannot be forcibly removed from the tasks holding them until the resources are used to completion ("no preemption" condition). 4.A circular chain of tasks exists, such that each task holds one or more resources that are being requested by the next task in the chain ("circular wait“ condition).
  • 17. 17 17 27 October 2010 Commonly found bugs •An operation is assumed to be atomic but it is actually not. •Wrong or no lock •Message protocol errors –Mismatch between channel ends –Missing send or receive •Orphaned threads due to abnormally terminating master thread Catching these bugs is challenging
  • 18. 18 18 27 October 2010 Finding bugs in parallel SW •Research shows that bugs due to parallel code execution represent only ~10% of the bugs •But they are the hardest to find –If we run the same test twice it is not guaranteed to produce the same result (non-determinism) •Heisenbug •A disproportionate number are found late or by the customer –Require large configurations to test –Typically appear only in specific configurations –These bugs are the most expensive! •We need to have some ways of disturbing the execution •We need to know when we are done
  • 19. 19 19 27 October 2010 Heisenbugs •A bug that disappears or alters its behavior when one attempts to probe or isolate it •Why? –Using a debugger alters the execution order and the bug disappears –Even adding a print statement changes behaviour! •For example –Uninitialised variable in a sequential program •In C, 9 out of 10 Heisenbugs are from uninitialized auto variables –In parallel programs •Race conditions and deadlocks are both examples •How much time do you currently spend in debug?
  • 20. 20 20 27 October 2010 Disturbing the execution Philosophy •Modify the program so it is more likely to exhibit bugs (without introducing new bugs – no false alarms) •Minimize impact on the testing process (under-the-hood technology) •Reuse existing tests Techniques to instrument concurrent events •Concurrent events are the events whose order determines the result of the program, such as accesses to shared variables, calls to synchronization primitives •At every concurrent event, a random-based decision is made whether to cause a context switch – noise injection –e.g., using a sleep statement
  • 21. 21 21 27 October 2010 Knowing when we are done •What are our current models of test completion? –Black box? •Requirements coverage •Test matrix •Use-case coverage •All tests written and passing? –White box? •Code coverage at 90%? or some other random number •These will not be enough! –Can we ensure no races? –Can we ensure no deadlocks? •Static analysis will become more important
  • 22. 22 22 27 October 2010 New coverage models •For shared memory: –Synchronization coverage •Make sure that every synchronization primitive was fully exercised –Shared variable coverage •Make sure shared variables were accessed by more than one thread –ConTest from IBM implements these coverage models •For message passing: –Communication coverage for multi-threaded message passing programs
  • 23. 23 23 27 October 2010 New Coverage Model [Kyriakos Georgiou, K. Eder, TVS, XMOS] Criterion 7 IOB SYN-sequence Criterion 6 SYN-sequence Criterion 3 snd-sequence Criterion 5 IO SYN-event Criterion 2 rcv-statement Criterion 1 Channel Criterion 4 SYN-event Captures communication infrastructure in a message-passing program Fully automatic extraction of coverage tasks up to SYN-events User input required for SYN-sequences (tool support, semantics) Complements existing code and functional coverage models Added value in practice Bugs can be captured before even running test cases on the code SYN-sequences permit testing protocol compliance
  • 24. 24 24 27 October 2010 Conclusions Testing of parallel SW has many challenges: •Non-determinism •Race conditions, deadlocks, livelocks •Heisenbugs –How to provoke the 10% of bugs down to parallelism? •Making rare events happen more often –How to know when you are done? •New coverage models
  • 25. 25 25 27 October 2010 Questions Mike Bartley Test and Verification Solutions mike@testandverification.com