Year

2024

Season

Fall

Paper Type

Master's Thesis

College

College of Computing, Engineering & Construction

Degree Name

Master of Science in Computer and Information Sciences (MS)

Department

Computing

NACO controlled Corporate Body

University of North Florida. School of Computing

First Advisor

Dr. Upulee Kanewala

Second Advisor

Dr. Karthikeyan Umapathy

Third Advisor

Dr. Anirban Ghosh

College Dean

Dr. Chip Klostermeyer

Abstract

Scientific software can be broadly defined as software written to aid in conducting scientific research activities. As this software is often written by the scientists themselves, who often learned programming to build that software, some important aspects of software development may get less attention than they would have gotten on enterprise software developed by programmers. One area of development that often gets overlooked in this regard is testing. Thus, in this study, we seek to better understand the testing processes and propose methods to improve the effectiveness of those tests. We begin with examining the software's Continuous Integration/Delivery practices. This is primarily done through GitHub Actions, which can be used to automate testing. Based on this, we examined the GitHub Actions of several scientific software practices of various sizes and scientific domains. Results of our study show that, even among the variety in the software, many aspects of their GitHub Actions Workflows are shared. We then conducted a study to evaluate the fault detection effectiveness of the tests in scientific software. Our results show that there do exist common deficiencies in testing among this scientific software, such as low if-statement branch coverage or low edge case sensitivity and lack of thorough testing of mathematical calculations. These shortcomings can potentially be improved through known testing methods. Finally, Based on our findings, we propose and explore a testing method called metamorphic testing, which makes use of necessary properties of a function that identify relationships between a that function's input and its output. We added metamorphic tests to the software's test suites, and found as much as a 10\% improvement on mutation testing results among some types of mutations. The results imply that the improvements made by metamorphic testing can be even further improved when written by someone with domain knowledge.

Share

COinS