11

Click here to load reader

Testing concurrent java programs - Sameer Arora

Embed Size (px)

DESCRIPTION

Session presented at the 6th IndicThreads.com Conference on Java held in Pune, India on 2-3 Dec. 2011. http://Java.IndicThreads.com

Citation preview

Page 1: Testing concurrent java programs - Sameer Arora

1

Sameer Arora

Xebia IT Architects.

Testing Concurrent Java programs

Page 2: Testing concurrent java programs - Sameer Arora

2

AGENDA

What makes Concurrent programs hard to test.

How concurrent application's design drives testability.

Testing asynchronous code - demo.

Testing Blocking operations and Resource Management - demo.

Testing Thread Safety - demo.

Complementary testing approaches.

Questions & Feedback

Page 3: Testing concurrent java programs - Sameer Arora

3

What makes concurrency hard to test

Tests for Concurrent Programs are themselves concurrent programs.

Failures are rare and probabilistic in nature.

Execution is Platform Dependent.

Page 4: Testing concurrent java programs - Sameer Arora

4

Encapsulating concurrent interactions .

Thread Delegation.

Effectively Immutability.

Figuring Single Thread Confinement.

Composition.

Design and Testability

Page 5: Testing concurrent java programs - Sameer Arora

5

Testing Asynchronous Method Calls

Asynchronous Job Signal Demo

Page 6: Testing concurrent java programs - Sameer Arora

6

Testing for Resource Management

Page 7: Testing concurrent java programs - Sameer Arora

7

Bounded Job Queue

Test for Blocking Operations - Demo

Page 8: Testing concurrent java programs - Sameer Arora

8

Testing for Thread Safety

Bounded Job Queue Thread Interleaving Test

Page 9: Testing concurrent java programs - Sameer Arora

9

Complementary Testing Approaches

Injecting Callbacks.

Static code Analysis Tools.

Code Review.

Profilers and Monitoring tools.

Frameworks for Multi-threaded Testing. ConcJunit Awaitility MultiThreadedTC

Page 10: Testing concurrent java programs - Sameer Arora

10

Questions

Questions/Comments/Feedback

Page 11: Testing concurrent java programs - Sameer Arora

11

Thank you