JanusGraph / JanusGraph/janusgraph

Add support for mutation testing

Open
#17 2 comments 0 reactions 0 assignees View on GitHub
area/testing
Dominant language
Java
Stars
5.8k
Forks
1.2k
Avg merge
13h 53m
Merged PRs (30d)
6

Description

Mutation testing can uncover ineffective tests or uncovered conditions without significant manual effort by mutating source code before running the tests and seeing if they still pass.

Per [Wikipedia](https://en.wikipedia.org/wiki/Mutation_testing):

> Mutation testing (or Mutation analysis or Program mutation) is used to design new software tests and evaluate the quality of existing software tests. Mutation testing involves modifying a program in small ways. Each mutated version is called a _mutant_ and tests detect and reject mutants by causing the behavior of the original version to differ from the mutant. This is called _killing_ the mutant. Test suites are measured by the percentage of mutants that they kill. New tests can be designed to kill additional mutants. Mutants are based on well-defined _mutation operators_ that either mimic typical programming errors (such as using the wrong operator or variable name) or force the creation of valuable tests (such as dividing each expression by zero). The purpose is to help the tester develop effective tests or locate weaknesses in the test data used for the program or in sections of the code that are seldom or never accessed during execution. Mutation testing is a form of white-box testing.

There is a list of [mutation testing tools](https://en.wikipedia.org/wiki/Mutation_testing#External_links) at the bottom of that article.

Here are [a few examples](https://github.com/louismrose/java-mutation-examples) of running various mutation testing tools for Java projects.

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the mutation-testing overview in the issue and the linked Java mutation examples, then compare the listed mutation-testing tools with JanusGraph's Java testing setup. Define which tool or integration is intended and what mutant-killing results would count as done; the issue does not name files, tests, or an entry point.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
testing-qa
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.