A regression testing approach for Lustre/SCADE programs
Trịnh Công Duy, Nguyễn Thanh Bình, Ioannis Parissis · 2015
Software maintenance is an activity which includes enhancements, error corrections, optimization and deletion of existing features. These modifications may cause the system to work incorrectly. Therefore, regression testing becomes necessary. Regression testing is any type of software testing that seeks to uncover new software bugs, or regressions, in existing functional and non-functional areas of a system after changes, such as enhancements, patches or configuration changes, have been made to them. During the software maintenance phase, regression testing is certainly an expensive but necessary activity to make sure the new versions of the system do not "regress". As software evolves, chances are that not only the implementation changes, but that the specification of the system changes too. We argue that guiding regression testing by the system specifications will be more accurate and cost effective. Lustre is a formal synchronous declarative language widely used for modeling and specifying safety critical applications in the fields of avionics, transportation, and energy production. In such applications, the testing activity to ensure correctness of the system plays a crucial role. During the development process, Lustre programs are often upgraded, so regression testing should be performed to detect bugs. In this paper, we present an approach to generate test cases in regression testing of Lustre programs. In this approach, a Lustre program is modeled by an operator network, then we determine the set of paths and compute symbolically the path activation conditions for each version. Test cases for regression are generated by comparing paths between versions. We apply this approach on a case study for regression testing of a Heater Controller System.