Loading...

Generating Test Cases for Software Dependencies

Shirmast, Amir Reza | 2024

0 Viewed
  1. Type of Document: M.Sc. Thesis
  2. Language: Farsi
  3. Document No: 57618 (19)
  4. University: Sharif University of Technology
  5. Department: Computer Engineering
  6. Advisor(s): Mirian Hosseinabadi, Hassan
  7. Abstract:
  8. Software systems often rely on external libraries and tools for their construction and execution. These dependencies can exist in multiple versions and configurations, posing challenges for software development and maintenance. While a software application may function correctly with a specific version of a dependency, compatibility with other versions is not guaranteed. This lack of compatibility can make updating legacy systems a complex and costly endeavor, as many libraries have versions that are incompatible with one another. Furthermore, failing to update dependency versions can leave software vulnerable to security risks and prevent it from running in newer environments. The sheer number of available dependency versions makes it impractical to test compatibility with every possible combination, leaving developers with limited information about the compatibility of their software with different versions. This thesis examines the challenges associated with software dependencies, including their causes and potential solutions. We first identify and categorize the problems related to software dependencies, exploring the factors that contribute to their occurrence. Next, we propose a methodology for designing test samples using software code to evaluate the compatibility of a software application with different versions of its dependencies. This methodology focuses on two key aspects: ensuring the software's buildability and verifying its correct performance during execution. Furthermore, we present two methods for reducing the number of versions tested, aiming to minimize execution time, maintenance costs, and the use of vulnerable dependencies. To evaluate the practicality of the proposed solution, we implemented and tested two methods for automatic test sample generation: one based on code analysis in Java, and another utilizing runtime values in Python. Additionally, we investigated the impact of limiting dependency versions through the analysis of changelogs and the removal of vulnerable versions, comparing the results of the tested cases with and without these limitations
  9. Keywords:
  10. Continuous Integration (CI) ; Integration Testing ; Dependency Conflict ; Software Dependencies ; Refreshing

 Digital Object List

 Bookmark

No TOC