Exploring the use of call stack depth limits to reduce regression testing costs

Regression testing is performed after existing source code has been modified to verify that no new faults have been introduced by the changes. Test case selection can be used to reduce the effort of regression testing by selecting a smaller subset of the test suite for later execution. Several crit...

Full description

Bibliographic Details
Main Authors: Bogren, Patrik, Kristola, Isak
Format: Others
Language:English
Published: Mittuniversitetet, Institutionen för data- och systemvetenskap 2021
Subjects:
Online Access:http://urn.kb.se/resolve?urn=urn:nbn:se:miun:diva-43166
id ndltd-UPSALLA1-oai-DiVA.org-miun-43166
record_format oai_dc
spelling ndltd-UPSALLA1-oai-DiVA.org-miun-431662021-09-28T05:23:38ZExploring the use of call stack depth limits to reduce regression testing costsengBogren, PatrikKristola, IsakMittuniversitetet, Institutionen för data- och systemvetenskap2021Regression TestingTest Case SelectionCode CoverageDynamic Program AnalysisExecution MatrixSoftware EngineeringProgramvaruteknik Regression testing is performed after existing source code has been modified to verify that no new faults have been introduced by the changes. Test case selection can be used to reduce the effort of regression testing by selecting a smaller subset of the test suite for later execution. Several criteria and objectives can be used as constraints that should be satisfied by the selection process. One common criteria is function coverage, which can be represented by a coverage matrix that maps test cases to methods under test. The process of generating and evaluating these matrices can be very time consuming for large matrices since their complexity increases exponentially with the number of tests included. To the best of our knowledge, no techniques for reducing execution matrix size have been proposed. This thesis develops a matrix-reduction technique based on analysis of call stack data. It studies the effects of limiting the call stack depth in terms of coverage accuracy, matrix size, and generation costs. Further, it uses a tool that can instrument Java projects using Java’s instrumentation API to collect coverage information on open-source Java projects for varying depth limits of the call stack. Our results show that the stack depth limit can be significantly reduced while retaining high coverage and that matrix size can be decreased by up to 50%. The metric we used to indicate the difficulty of splitting up the matrix closely resembled the curve for coverage. However, we did not see any significant differences in execution time for lower depth limits.   Student thesisinfo:eu-repo/semantics/bachelorThesistexthttp://urn.kb.se/resolve?urn=urn:nbn:se:miun:diva-43166application/pdfinfo:eu-repo/semantics/openAccess
collection NDLTD
language English
format Others
sources NDLTD
topic Regression Testing
Test Case Selection
Code Coverage
Dynamic Program Analysis
Execution Matrix
Software Engineering
Programvaruteknik
spellingShingle Regression Testing
Test Case Selection
Code Coverage
Dynamic Program Analysis
Execution Matrix
Software Engineering
Programvaruteknik
Bogren, Patrik
Kristola, Isak
Exploring the use of call stack depth limits to reduce regression testing costs
description Regression testing is performed after existing source code has been modified to verify that no new faults have been introduced by the changes. Test case selection can be used to reduce the effort of regression testing by selecting a smaller subset of the test suite for later execution. Several criteria and objectives can be used as constraints that should be satisfied by the selection process. One common criteria is function coverage, which can be represented by a coverage matrix that maps test cases to methods under test. The process of generating and evaluating these matrices can be very time consuming for large matrices since their complexity increases exponentially with the number of tests included. To the best of our knowledge, no techniques for reducing execution matrix size have been proposed. This thesis develops a matrix-reduction technique based on analysis of call stack data. It studies the effects of limiting the call stack depth in terms of coverage accuracy, matrix size, and generation costs. Further, it uses a tool that can instrument Java projects using Java’s instrumentation API to collect coverage information on open-source Java projects for varying depth limits of the call stack. Our results show that the stack depth limit can be significantly reduced while retaining high coverage and that matrix size can be decreased by up to 50%. The metric we used to indicate the difficulty of splitting up the matrix closely resembled the curve for coverage. However, we did not see any significant differences in execution time for lower depth limits.  
author Bogren, Patrik
Kristola, Isak
author_facet Bogren, Patrik
Kristola, Isak
author_sort Bogren, Patrik
title Exploring the use of call stack depth limits to reduce regression testing costs
title_short Exploring the use of call stack depth limits to reduce regression testing costs
title_full Exploring the use of call stack depth limits to reduce regression testing costs
title_fullStr Exploring the use of call stack depth limits to reduce regression testing costs
title_full_unstemmed Exploring the use of call stack depth limits to reduce regression testing costs
title_sort exploring the use of call stack depth limits to reduce regression testing costs
publisher Mittuniversitetet, Institutionen för data- och systemvetenskap
publishDate 2021
url http://urn.kb.se/resolve?urn=urn:nbn:se:miun:diva-43166
work_keys_str_mv AT bogrenpatrik exploringtheuseofcallstackdepthlimitstoreduceregressiontestingcosts
AT kristolaisak exploringtheuseofcallstackdepthlimitstoreduceregressiontestingcosts
_version_ 1719485112727371776