Efficient Code-based Software Product Line Regression Testing

효율적인 소프트웨어 제품라인 회귀시험을 위한 자동화된 코드 기반 시험 방법

  • Received : 2020.09.13
  • Accepted : 2020.11.02
  • Published : 2020.11.30

Abstract

Software product line development is a development paradigm that efficiently develops a product family by avoiding redundant development based on separation of the common part and the variable part of the product family. In software product line development, the source code that is used to produce a product family is called a product line code base, and when the product line code base is changed and the products of the product family are affected by the change, the activity of testing the affected products is called a product line regression testing. For product line regression testing, instead of conducting regression testing individually on each product of the product family, a more efficient regression testing would be possible if unnecessary testing that are irrelevant to the change can be avoided. This paper introduces SRTS, which is an automated method to efficiently perform software product line regression testing. SRTS divides the product line code base and test cases based on commonality and variability. Then SRTS identifies and selects the test cases affected by the change. Finally, it reduces unnecessary testing by rerunning only the selected test cases.

소프트웨어 제품라인 개발은 제품군의 개발을 위하여 공통적인 부분과 가변적인 부분을 분리 개발함으로써 중복개발을 피하여 효율적으로 제품군을 개발하는 개발 패러다임이다. 소프트웨어 제품라인 개발에서 제품군을 생성하기 위해 사용되는 소스코드를 제품라인 코드 베이스라고 부르고, 제품라인 코드 베이스가 변경되어 제품군의 제품들이 영향을 받을 때 영향 받은 제품들을 시험하는 활동을 제품라인 회귀시험이라고 한다. 이 때 제품군의 각 제품을 개별적으로 시험하는 대신, 변경과 무관한 시험을 파악하여 피할 수 있다면 효율적인 제품라인 회귀시험이 가능해 질 것이다. 본 논문은 이런 방법으로 소프트웨어 제품라인 회귀시험을 효율적으로 수행하는 자동화된 방법인 SRTS를 소개한다. 이 방법은, 먼저 제품라인 코드 베이스와 시험 항목을 공통성과 가변성을 기반으로 나누고 변경에 영향을 받는 시험 항목을 식별하여 선택한 후, 선택된 시험 항목만을 재실행함으로써 불필요한 시험을 줄인다.

Keywords

References

  1. Yoo, S., Harman, M., 2012. Regression testing minimization, selection and prioritization: a survey. Software Testing, Verification and Reliability. 22 (2), 67-120. https://doi.org/10.1002/stv.430
  2. Chittimalli, P. K., & Harrold, M. J., 2009. Recomputing coverage information to assist regression testing. IEEE Transactions on Software Engineering, 35(4), 452-469. https://doi.org/10.1109/TSE.2009.4
  3. Neto, P.A.d.M.S., do Carmo Machado, I., Cavalcanti, Y.C., de Almeida, E.S., Garcia, V.C., de Lemos Meira, S.R., 2010. A regression testing approach for software product lines architectures. In: Proceedings of the Fourth Brazilian Symposium on Software Components, Architectures and Reuse (SBCARS), pp. 41-50.
  4. Lity, S., Nieke, M., Thüm, T., & Schaefer, I., 2019. Retest test selection for product-line regression testing of variants and versions of variants. Journal of Systems and Software, 147, 46-63. https://doi.org/10.1016/j.jss.2018.09.090
  5. Jung, P., Kang, S., & Lee, J., 2019. Automated code-based test selection for software product line regression testing. Journal of Systems and Software, 158, 110419. https://doi.org/10.1016/j.jss.2019.110419
  6. Gligoric, M., Eloussi, L., Marinov, D., 2015. Practical regression test selection with dynamic file dependencies. In: Proceedings of the International Symposium on Software Testing and Analysis, pp. 211-222.
  7. SPL2go. Available online: http://spl2go.cs.ovgu.de/ (accessed on September 2020).
  8. Fraser, G., Arcuri, A., 2011. EvoSuite: automatic test suite generation for object-oriented software. Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering, pp. 416-419.
  9. PIT. Available online: http://pitest.org/ (accessed on September 2020).
  10. Rothermel, G., Harrold, M.J., 1996. Analyzing regression test selection techniques. IEEE Transactions on Software Engineering. 22 (8), 529-551. https://doi.org/10.1109/32.536955