Scalable techniques for analysing and testing asynchronous software systems
This thesis is about scalable analysis and testing techniques for asynchronous programs. Due to their highly-concurrent nature, the number of states that such programs can reach grows exponentially (in the worst case) with program size, leading to state-space explosion. For this reason, searching th...
Main Author: | |
---|---|
Other Authors: | |
Published: |
Imperial College London
2016
|
Subjects: | |
Online Access: | https://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.718414 |
id |
ndltd-bl.uk-oai-ethos.bl.uk-718414 |
---|---|
record_format |
oai_dc |
spelling |
ndltd-bl.uk-oai-ethos.bl.uk-7184142018-10-09T03:25:03ZScalable techniques for analysing and testing asynchronous software systemsDeligiannis, PantazisDonaldson, Alastair F. ; Cadar, Cristian2016This thesis is about scalable analysis and testing techniques for asynchronous programs. Due to their highly-concurrent nature, the number of states that such programs can reach grows exponentially (in the worst case) with program size, leading to state-space explosion. For this reason, searching the state-space of real-world asynchronous programs to find bugs is computationally expensive, and thus it is important to develop analysis and testing techniques that can scale well. However, techniques typically scale by sacrificing precision. Detecting only true bugs - versus reporting a large number of false alarms - is crucial to increasing the productivity of developers. Alas, finding the fine balance between precision and scalability is a challenging problem. Motivated by this challenge, we focus on developing tools and techniques for analysing and testing two different kinds of real-world asynchronous programs: device drivers and distributed systems. In this thesis we make the following three original contributions: 1. A novel symbolic lockset analysis that can detect all potential data races in a device driver. Our analysis avoids reasoning about thread interleavings and thus scales well. Exploiting the race-freedom guarantees provided by our analysis, we achieve a sound partial-order reduction that significantly accelerates Corral, an industrial-strength bug-finder for concurrent programs. 2. The design and implementation of P#, a new programming language for building, analysing and testing asynchronous programs. The novelty of P# is that it is comes with a static data race analysis and controlled testing infrastructure, which makes a strong move towards building highly-reliable asynchronous programs. 3. A new approach for partially-modelling and testing production-scale asynchronous distributed systems using P#. We report our experience of applying P# on Azure Storage vNext, a cloud storage system developed inside Microsoft, and show how P# managed to detect a subtle liveness bug that had remained unresolved even after months of troubleshooting using conventional testing techniques.005.3Imperial College Londonhttps://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.718414http://hdl.handle.net/10044/1/48042Electronic Thesis or Dissertation |
collection |
NDLTD |
sources |
NDLTD |
topic |
005.3 |
spellingShingle |
005.3 Deligiannis, Pantazis Scalable techniques for analysing and testing asynchronous software systems |
description |
This thesis is about scalable analysis and testing techniques for asynchronous programs. Due to their highly-concurrent nature, the number of states that such programs can reach grows exponentially (in the worst case) with program size, leading to state-space explosion. For this reason, searching the state-space of real-world asynchronous programs to find bugs is computationally expensive, and thus it is important to develop analysis and testing techniques that can scale well. However, techniques typically scale by sacrificing precision. Detecting only true bugs - versus reporting a large number of false alarms - is crucial to increasing the productivity of developers. Alas, finding the fine balance between precision and scalability is a challenging problem. Motivated by this challenge, we focus on developing tools and techniques for analysing and testing two different kinds of real-world asynchronous programs: device drivers and distributed systems. In this thesis we make the following three original contributions: 1. A novel symbolic lockset analysis that can detect all potential data races in a device driver. Our analysis avoids reasoning about thread interleavings and thus scales well. Exploiting the race-freedom guarantees provided by our analysis, we achieve a sound partial-order reduction that significantly accelerates Corral, an industrial-strength bug-finder for concurrent programs. 2. The design and implementation of P#, a new programming language for building, analysing and testing asynchronous programs. The novelty of P# is that it is comes with a static data race analysis and controlled testing infrastructure, which makes a strong move towards building highly-reliable asynchronous programs. 3. A new approach for partially-modelling and testing production-scale asynchronous distributed systems using P#. We report our experience of applying P# on Azure Storage vNext, a cloud storage system developed inside Microsoft, and show how P# managed to detect a subtle liveness bug that had remained unresolved even after months of troubleshooting using conventional testing techniques. |
author2 |
Donaldson, Alastair F. ; Cadar, Cristian |
author_facet |
Donaldson, Alastair F. ; Cadar, Cristian Deligiannis, Pantazis |
author |
Deligiannis, Pantazis |
author_sort |
Deligiannis, Pantazis |
title |
Scalable techniques for analysing and testing asynchronous software systems |
title_short |
Scalable techniques for analysing and testing asynchronous software systems |
title_full |
Scalable techniques for analysing and testing asynchronous software systems |
title_fullStr |
Scalable techniques for analysing and testing asynchronous software systems |
title_full_unstemmed |
Scalable techniques for analysing and testing asynchronous software systems |
title_sort |
scalable techniques for analysing and testing asynchronous software systems |
publisher |
Imperial College London |
publishDate |
2016 |
url |
https://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.718414 |
work_keys_str_mv |
AT deligiannispantazis scalabletechniquesforanalysingandtestingasynchronoussoftwaresystems |
_version_ |
1718772309684125696 |