# Visualizer for Mutation Testing (Documentation)
## Introduction to Mutation Testing
Mutation Testing is a type of Software Testing
that is performed to design new software tests
and also evaluate the quality of already existing
software tests. Mutation testing is related to
modification a program in small ways.
It focuses to help the tester develop effective
tests or locate weaknesses in the test data used for the program.
Fault-based testing strategy as it involves creating a fault in the program and it is a type of White Box Testing which is mainly used for Unit Testing.
Fault Coupling:
## Timeline for Report Along with main topics covered
* How and Why to perform mutation Testing?
* What are the advantages of creating a visualiser (Use Cases)?
* Specification for UI of mutant visualiser
* Pre conditions of visualiser -- May 21st
* Use cases solved -- May 21st
* Requirements and general assumptions -- May 21st
* Tools and Resource Accumulation -- May 28th
* Software Design and Architecture -- May 28th-June 5th
* Coding Guidelines -- May 28th-June 5th
## Why to perform mutation Testing?
**Advantages of Mutation Testing:**
Following are the advantages of Mutation Testing:
It is a powerful approach to attain high coverage of the source program.
This testing is capable comprehensively testing the mutant program.
Mutation testing brings a good level of error detection to the software developer.
This method uncovers ambiguities in the source code and has the capacity to detect all the faults in the program.
Customers are benefited from this testing by getting a most reliable and stable system.
**Disadvantages of Mutation Testing:**
On the other side, the following are the disadvantages of Mutant testing:
Mutation testing is extremely costly and time-consuming since there are many mutant programs that need to be generated.
Since its time consuming, it's fair to say that this testing cannot be done without an automation tool.
Each mutation will have the same number of test cases than that of the original program. So, a large number of mutant programs may need to be tested against the original test suite.
As this method involves source code changes, it is not at all applicable for Black Box Testing.
## How to perform mutation Based Testing?
## Preconditions for Visualiser
* Existing Testing Suite
* Identification of various possible mutant variations of base code.
* Enviornment to run JS app
## Use Cases
* Visualising mutants versus code base
* Identifying fault couples
* Identifying high frequency bugs based on mutants and coupling
## Software Design and Architecture
## Relevant Resources
* https://ieeexplore.ieee.org/document/7528958
* https://github.com/cobertura/cobertura#changelog
* https://www.guru99.com/mutation-testing.html#2
* https://github.com/Testura
* https://www.testomatproject.eu/tools/
* https://ieeexplore.ieee.org/abstract/document/4637557
* https://code-defenders.org