作者: Pallavi Joshi , Koushik Sen
DOI:
关键词:
摘要: Today's software systems often have poor reliability. In addition to losses of billions, defects are responsible for a number serious injuries and deaths in transportation accidents, medical treatments, defense operations. The situation is getting worse with concurrency distributed computing becoming integral parts many real-world systems. non-determinism concurrent the unreliability hardware environment which they operate can result that hard find understand. In this thesis, we developed tools techniques augment testing enable it quickly reproduce important bugs Our based on following two key ideas: (i) use program analysis increase coverage by predicting could occurred "nearby" executions, (ii) provide programming abstractions testers easily express their insights guide towards those executions more likely exhibit or help achieve objectives without having any knowledge about underlying process. built found large (e.g. Jigsaw web server, JDK, JGroups, Hadoop File System). first part describe how predict confirm did not show up during but shown had under consideration executed different thread schedules. This improves testing, helps corner-case unlikely be discovered traditional testing. We predictive classes like deadlocks, hangs, typestate errors second investigate improve efficiency cloud letting interesting them. For example, tester might want test erroneous her objectives. frameworks intuition investigated programmable context large-scale