{"title":"源代码中软件缺陷的实际仿真","authors":"Gonçalo Pereira, R. Barbosa, H. Madeira","doi":"10.1109/EDCC.2016.19","DOIUrl":null,"url":null,"abstract":"Software fault injection is a fundamental technique to evaluate the behavior of systems in presence of software defects. However, in spite of the considerable number of software fault injection proposals, the lack of readily available and practical tools persists as the most serious limitation to the generalized use of software fault injection. This paper describes a fault injection tool designed to simplify the software fault injection process. The tool modifies the source code of target programs by altering the abstract syntax tree and producing software patches automatically. Several key challenges were addressed in the development of the tool. Firstly, we formally describe the software fault injection operators, which has been neglected in previous proposals. Secondly, we propose a comprehensive test suite to verify the correctness of software fault injectors. Thirdly, we improve the performance of the fault injection process by compiling only the file in which a defect is injected and linking/installing that file. Finally, we examine the implications of dealing with macros, and the limitations that source code macros impose on software fault injection. The results of injecting software faults into the Apache web server, as an example of possible target, show how these challenges have been addressed.","PeriodicalId":166039,"journal":{"name":"2016 12th European Dependable Computing Conference (EDCC)","volume":"248 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2016-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"4","resultStr":"{\"title\":\"Practical Emulation of Software Defects in Source Code\",\"authors\":\"Gonçalo Pereira, R. Barbosa, H. Madeira\",\"doi\":\"10.1109/EDCC.2016.19\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Software fault injection is a fundamental technique to evaluate the behavior of systems in presence of software defects. However, in spite of the considerable number of software fault injection proposals, the lack of readily available and practical tools persists as the most serious limitation to the generalized use of software fault injection. This paper describes a fault injection tool designed to simplify the software fault injection process. The tool modifies the source code of target programs by altering the abstract syntax tree and producing software patches automatically. Several key challenges were addressed in the development of the tool. Firstly, we formally describe the software fault injection operators, which has been neglected in previous proposals. Secondly, we propose a comprehensive test suite to verify the correctness of software fault injectors. Thirdly, we improve the performance of the fault injection process by compiling only the file in which a defect is injected and linking/installing that file. Finally, we examine the implications of dealing with macros, and the limitations that source code macros impose on software fault injection. The results of injecting software faults into the Apache web server, as an example of possible target, show how these challenges have been addressed.\",\"PeriodicalId\":166039,\"journal\":{\"name\":\"2016 12th European Dependable Computing Conference (EDCC)\",\"volume\":\"248 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2016-09-01\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"4\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"2016 12th European Dependable Computing Conference (EDCC)\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1109/EDCC.2016.19\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"2016 12th European Dependable Computing Conference (EDCC)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/EDCC.2016.19","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Practical Emulation of Software Defects in Source Code
Software fault injection is a fundamental technique to evaluate the behavior of systems in presence of software defects. However, in spite of the considerable number of software fault injection proposals, the lack of readily available and practical tools persists as the most serious limitation to the generalized use of software fault injection. This paper describes a fault injection tool designed to simplify the software fault injection process. The tool modifies the source code of target programs by altering the abstract syntax tree and producing software patches automatically. Several key challenges were addressed in the development of the tool. Firstly, we formally describe the software fault injection operators, which has been neglected in previous proposals. Secondly, we propose a comprehensive test suite to verify the correctness of software fault injectors. Thirdly, we improve the performance of the fault injection process by compiling only the file in which a defect is injected and linking/installing that file. Finally, we examine the implications of dealing with macros, and the limitations that source code macros impose on software fault injection. The results of injecting software faults into the Apache web server, as an example of possible target, show how these challenges have been addressed.