TestMiner Exposes How Different Languages Handle Software Testing
New tool reveals unique testing patterns across Python, Java, Go, and Rust projects.
TestMiner, a new open-source tool from researchers at UFMG and the University of Sheffield, provides a deep dive into how software projects on GitHub approach testing. Unlike simple code coverage tools, TestMiner examines the entire testing ecosystem: where tests live, how they evolve across releases, which dependencies are test-related, and overall test statistics. The tool was motivated by the observation that testing practices vary dramatically across programming languages—Python and Java projects tend to place tests in separate folders, while Go and Rust often co-locate tests with source code. This makes it hard for developers to quickly understand a project’s testing culture.
In a study conducted with 50 undergraduate students in a software testing course, participants used TestMiner to explore real-world repositories. They successfully identified testing patterns such as test organization strategies, changes in test count over time, and the use of mocking frameworks. Students provided positive feedback, highlighting the tool’s ability to surface edge-case testing and test fixture usage. TestMiner is available on GitHub with a screencast walkthrough. For developers onboarding to new projects or teams auditing their own testing practices, TestMiner offers a systematic way to visualize and compare testing approaches across large codebases.
- TestMiner reveals test location patterns: dedicated folders in Python/Java vs. co-location in Go/Rust.
- Provides per-release metrics showing how test coverage and test counts evolve over time.
- Helps identify testing dependencies and practices like mocking and edge-case testing in real GitHub repos.
Why It Matters
Developers can now quickly audit testing practices across any GitHub project, improving code quality and onboarding.