Search papers, labs, and topics across Lattice.
This paper introduces a method that utilizes both static and dynamic analysis to enhance test suites by automatically generating unit tests from existing integration tests. This approach addresses the common issue of test suites lacking the recommended pyramid structure, where integration and system tests dominate, leading to inefficiencies in fault localization and longer execution times. Empirical evaluations on twelve open-source Node.js applications demonstrate the method's effectiveness in improving code coverage and test granularity.
Integration tests can be transformed into precise unit tests, significantly boosting test suite efficiency and fault localization.
We propose a method that employs static and dynamic analysis for augmenting a test suite with automatically generated unit tests. The method is most suitable for test suites where the stratification of unit, integration and system tests does not conform to the recommended test pyramid structure: numerous unit tests providing high code coverage and forming the base, fewer integration tests in the middle that verify component collaboration, and far fewer system or UI tests at the top that exercise acceptance or other scenarios of use. Instead, integration and system tests represent the majority of test cases, resulting in coarse-grained tests with limited fault localization and longer execution times. The method leverages integration tests, exercising a component and its dependencies, to generate unit tests that verify component dependencies in isolation. We showcase and empirically evaluate the proposed method in the Node.js platform, although it can be ported and adapted to other languages and platforms. The evaluation is based on a research prototype implemented as a Node.js tool and is conducted in the context of twelve open source JS applications (benchmark projects). Evaluation results support the effectiveness and practicality of our approach.