Mutation testing aims to evaluate the fault detection capability of a test suite. This evaluation substitutes faults with mutants by transforming program code to be defective. Evidences of the relationship between the detection rates of mutants and real faults have supported the use of mutants. It has also been known that the test suite size was a significant factor affecting the relationship. Our study revealed that the selection of the mutated code was another factor affecting the relationship. We generated mutants by transforming the code modified to fix defects, while the modified code was located at three granularity levels. The experiments conducted on the defects4j dataset demonstrated that the granularity level caused a significant difference in the relationship; the detection rate of mutants was more strongly correlated with and more indicative of the fault detection capability at a fine level than at a coarse level. Moreover, the influence of the test suite size was different at each granularity level. These findings implied a strong correlation between the detection rates of mutants and real faults, independently of test suite size, when the error-prone code was located precisely.
Application Programming Interface (API) usage mining is an approach used to extract the common API usage to help developers get used to the APIs. However, in Android applications, the usage can be hidden or fragmented due to class inheritance. Such hidden or fragmented usages could decrease the coverage and accuracy of the existing API mining approaches. Our method aims to resolve the problem of hidden and fragmented usages through API generalization. This generalized usage is expected to be applicable to every class that inherits a class in the usage. In the experiment, among 442,809 Android API usages, 104,839 usages either were hidden or fragmented. By revealing such usages, the accuracy of the code completion was improved by at most 6.66%. The usage generalization was efficient for extracting API usages in Android applications in which the APIs are used through class inheritance.
Regression testing is an important but costly activity for verifying a programme with the changed code. Regression test selection (RTS) aims to reduce this cost by selecting only the test cases affected by the changes. Among the several ways of selecting such affected test cases, call graphs have been statically constructed to select the test cases at the method-level granularity. However, RTS techniques will reduce the cost of regression testing less than expected unless the call graphs are efficiently one-to-one matched with the test cases. In this study, the authors propose overlap-aware rapid type analysis (ORTA). ORTA is designed to minimise the redundant cost of creating the matched call graphs using rapid type analysis (RTA). The oneto-one matching and ORTA were evaluated on 1487 commits selected from 30 Java projects. RTA-based RTS with the one-toone matching selected 46.90% fewer test cases with 2.76% longer end-to-end time of regression testing than without the oneto-one matching. The time increased with the one-to-one matching was reduced by 22.58% when ORTA substituted for RTA. ORTA achieved the cost reduction while removing 82.77% of the duplicate edges that RTA created on 993 commits.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.
hi@scite.ai
10624 S. Eastern Ave., Ste. A-614
Henderson, NV 89052, USA
Copyright © 2024 scite LLC. All rights reserved.
Made with 💙 for researchers
Part of the Research Solutions Family.