Abstract Testing of Software Systems

Tonislav Troev

Abstract


This paper introduces the concept of abstract testing and examines its potential to address the combinatorial complexity inherent in modern software systems. Conventional testing approaches often fall short when managing complex scenarios with numerous components and dependencies. The proposed methodology offers a sustainable foundation for building more robust and maintainable test infrastructures that can scale efficiently and adapt to evolving requirements. A working implementation for .NET, the TryAtSoftware.CleanTests framework, demonstrates the approach in practice, generating more than 70,000 distinct test cases in a production project while achieving higher code coverage than the preceding testing practices.

Keywords


software testing; quality assurance; combinatorics; abstraction

Full Text:

PDF

References


R. C. Martin, “Design principles and design patterns,” tech. rep., Object Mentor, 2000.

G. J. Myers, C. Sandler, and T. Badgett, The Art of Software Testing. Hoboken, NJ, USA: John Wiley & Sons, 3 ed., 2011.

M. Fowler and M. Foemmel, “Continuous integration.” https://martinfowler.com/articles/continuousIntegration.html, 2006.

TryAtSoftware, “TryAtSoftware.CleanTests: A modern framework for execution and generation of automated tests in .NET.” https://github.com/TryAtSoftware/CleanTests, 2022.

B. Wilson and J. Newkirk, “xUnit.net: A free, open source, community-focused unit testing tool for the .NET framework.” https://xunit.net, 2007.

TryAtSoftware, “TryAtSoftware.Randomizer: A library for simplifying the generation of random values in .NET.” https://github.com/TryAtSoftware/Randomizer, 2021.

TryAtSoftware, “TryAtSoftware.Equalizer: A library for asserting the semantic equality between two values in .NET.” https://github.com/TryAtSoftware/Equalizer, 2021.




DOI: http://dx.doi.org/10.5281/zenodo.21525860

Refbacks

  • There are currently no refbacks.
We use cookies.