Aptos Labs has introduced the Move Mutation Tester, a tool designed to enhance the quality of unit tests for Move smart contracts.
Key Points:
-
Why is it needed?
Traditional code coverage tests only indicate whether a line of code is executed but do not verify if the tests properly check the intended behavior. -
What is mutation testing?
It introduces faults (mutants) into the source code and runs existing tests against them.- If tests fail due to these faults (killed mutants), it shows they are effective.
- If tests still pass (alive mutants), it indicates blind spots in the test suite.
-
How does the tool work?
- The tool generates mutants within selected modules or functions.
- The
--coverage
flag ensures only covered code is mutated. - Running tests on mutants helps identify weak spots in the test suite.
-
Example Usage:
- Running
move-mutation-test run --coverage
generates a report showing which mutants survived. - If many mutants remain alive, tests need improvement.
- By refining the test suite and rerunning the tool, the number of killed mutants increases, improving test quality.
Mutation testing is a valuable complement to code coverage tools, helping uncover test suite weaknesses and potential bugs. However, 100% mutation testing coverage is not always necessary—its results should be used as guidance for prioritizing test improvements.
- Running
Read more: Mutation Testing For Move: Improve Your Unit Tests | by Aptos Labs | Aptos Labs | Mar, 2025 | Medium