用户名: 密码: 验证码:
Assessment of class mutation operators for C with the MuCPP mutation system
详细信息    查看全文
文摘
Context: Mutation testing has been mainly analyzed regarding traditional mutation operators involving structured programming constructs common in mainstream languages, but mutations at the class level have not been assessed to the same extent. This fact is noteworthy in the case of Cpan id="mmlsi6" class="mathmlsrc">pan class="formulatext stixSupport mathImg" data-mathURL="/science?_ob=MathURL&_method=retrieve&_eid=1-s2.0-S0950584916301161&_mathId=si6.gif&_user=111111111&_pii=S0950584916301161&_rdoc=1&_issn=09505849&md5=9cbe5aedb17105bed315a6e5724eff4d" title="Click to view the MathML source">++,pan>pan class="mathContainer hidden">pan class="mathCode">++,pan>pan>pan> despite being one of the most relevant languages including object-oriented features. Objective: This paper provides a complete evaluation of class operators for the Cpan id="mmlsi1" class="mathmlsrc">pan class="formulatext stixSupport mathImg" data-mathURL="/science?_ob=MathURL&_method=retrieve&_eid=1-s2.0-S0950584916301161&_mathId=si1.gif&_user=111111111&_pii=S0950584916301161&_rdoc=1&_issn=09505849&md5=29821373c64be0ff95807e7a16237c78" title="Click to view the MathML source">++pan>pan class="mathContainer hidden">pan class="mathCode">++pan>pan>pan> programming language. MuCPP, a new system devoted to the application of mutation testing to this language, was developed to this end. This mutation system implements class mutation operators in a robust way, dealing with the inherent complexity of the language. Method:MuCPP generates the mutants by traversing the abstract syntax tree of each translation unit with the Clang API, and stores mutants as branches in the Git version control system. The tool is able to detect duplicate mutants, avoid system headers, and drive the compilation process. Then, MuCPP   is used to conduct experiments with several open-source Cpan id="mmlsi1" class="mathmlsrc">pan class="formulatext stixSupport mathImg" data-mathURL="/science?_ob=MathURL&_method=retrieve&_eid=1-s2.0-S0950584916301161&_mathId=si1.gif&_user=111111111&_pii=S0950584916301161&_rdoc=1&_issn=09505849&md5=29821373c64be0ff95807e7a16237c78" title="Click to view the MathML source">++pan>pan class="mathContainer hidden">pan class="mathCode">++pan>pan>pan> programs. Results: The improvement rules listed in this paper to reduce unproductive class mutants have a significant impact in the computational cost of the technique. We also calculate the quantity and distribution of mutants generated with class operators, which generate far fewer mutants than their traditional counterparts. Conclusions: We show that the tests accompanying these programs cannot detect faults related to particular object-oriented features of Cpan id="mmlsi1" class="mathmlsrc">pan class="formulatext stixSupport mathImg" data-mathURL="/science?_ob=MathURL&_method=retrieve&_eid=1-s2.0-S0950584916301161&_mathId=si1.gif&_user=111111111&_pii=S0950584916301161&_rdoc=1&_issn=09505849&md5=29821373c64be0ff95807e7a16237c78" title="Click to view the MathML source">++pan>pan class="mathContainer hidden">pan class="mathCode">++pan>pan>pan>. In order to increase the mutation score, we create new test scenarios to kill the surviving class mutants for all the applications. The results confirm that, while traditional mutation operators are still needed, class operators can complement them and help testers further improve the test suite.

© 2004-2018 中国地质图书馆版权所有 京ICP备05064691号 京公网安备11010802017129号

地址:北京市海淀区学院路29号 邮编:100083

电话:办公室:(+86 10)66554848;文献借阅、咨询服务、科技查新:66554700