Change location of nomenclature docs
This commit is contained in:
parent
0303f647d5
commit
e9e4ffbca2
2 changed files with 87 additions and 83 deletions
88
README.md
88
README.md
|
@ -17,6 +17,11 @@ Mutant supports ruby >= 2.5, MRI only.
|
|||
Mutant uses a pure Ruby [parser](https://github.com/whitequark/parser) and an [unparser](https://github.com/mbj/unparser)
|
||||
to do its magic.
|
||||
|
||||
Topics
|
||||
------
|
||||
|
||||
* [Nomenclature](/docs/nomenclature.md)
|
||||
|
||||
Sponsoring
|
||||
----------
|
||||
|
||||
|
@ -33,89 +38,6 @@ Additionally, the following features where sponsored by organizations:
|
|||
If your organization is interested in sponsoring a feature, general maintainership or bugfixes, contact
|
||||
[Markus Schirp](mailto:mbj@schirp-dso.com).
|
||||
|
||||
Nomenclature
|
||||
------------
|
||||
|
||||
The following explains several nouns you may experience in mutant's documentation.
|
||||
It's a good idea to familiarize yourself before moving on.
|
||||
|
||||
### AST
|
||||
|
||||
Acronym for [Abstract Syntax Tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree)
|
||||
and the level of abstraction mutant operates on.
|
||||
|
||||
### Subject
|
||||
|
||||
An addressable piece of code to be targeted for mutation testing.
|
||||
|
||||
Mutant currently supports the following subjects:
|
||||
|
||||
* Instance methods
|
||||
* Singleton (class) methods
|
||||
|
||||
Other subjects (constants, class bodies for DSLs, ...) are possible but aren't
|
||||
implemented in the OSS version.
|
||||
|
||||
### Mutation operator
|
||||
|
||||
A transformation applied to the AST of a subject. Mutant knows the following high level operator
|
||||
classes:
|
||||
|
||||
* Semantic Reduction
|
||||
* Orthogonal Replacement
|
||||
* [Noop](#neutral-noop-tests)
|
||||
|
||||
An exhaustive list can be found in the [mutant-meta](https://github.com/mbj/mutant/tree/master/meta)
|
||||
subdirectory of the source.
|
||||
|
||||
### Mutation
|
||||
|
||||
The result of applying a mutation operator to the AST of a subject. A mutation represents a
|
||||
hypothesis that ideally gets falsified by the tests.
|
||||
|
||||
### Insertion
|
||||
|
||||
The process of inserting a mutation into the runtime environment.
|
||||
Mutant currently supports insertion via dynamically created monkeypatches.
|
||||
|
||||
Other insertion strategies (such as "boot time") are possible but aren't implemented
|
||||
in the OSS version.
|
||||
|
||||
### Isolation
|
||||
|
||||
The attempt to isolate the (side) effects of killing a mutation via an integration
|
||||
to prevent a mutation leaking into adjacent concurrent, or future mutations.
|
||||
|
||||
Examples of sources for leaks are
|
||||
|
||||
* Global variable writes
|
||||
* Thread local writes
|
||||
* DB State
|
||||
* File system
|
||||
|
||||
Natively, mutant offers fork isolation. This works for any state within the executing
|
||||
Ruby process. For all state reachable via IO, it's the test author's responsibility to
|
||||
provide proper isolation.
|
||||
|
||||
### Integration
|
||||
|
||||
The method used to determine if a specific inserted mutation is covered by tests.
|
||||
|
||||
Currently mutant supports integrations for:
|
||||
|
||||
* rspec (https://rubygems.org/gems/mutant-rspec)
|
||||
* minitest (https://rubygems.org/gems/mutant-minitest)
|
||||
|
||||
### Report
|
||||
|
||||
Mutant currently provides two different reporters:
|
||||
|
||||
* Progress (printed during mutation testing).
|
||||
* Summary (printed at the end of a finished analysis run)
|
||||
|
||||
A reporter producing a machine readable report does not exist in the OSS version
|
||||
at the time of writing this documentation.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
|
|
82
docs/nomenclature.md
Normal file
82
docs/nomenclature.md
Normal file
|
@ -0,0 +1,82 @@
|
|||
Nomenclature
|
||||
============
|
||||
|
||||
The following explains several nouns you may experience in mutant's documentation.
|
||||
It's a good idea to familiarize yourself before moving on.
|
||||
|
||||
## AST
|
||||
|
||||
Acronym for [Abstract Syntax Tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree)
|
||||
and the level of abstraction mutant operates on.
|
||||
|
||||
## Subject
|
||||
|
||||
An addressable piece of code to be targeted for mutation testing.
|
||||
|
||||
Mutant currently supports the following subjects:
|
||||
|
||||
* Instance methods
|
||||
* Singleton (class) methods
|
||||
|
||||
Other subjects (constants, class bodies for DSLs, ...) are possible but aren't
|
||||
implemented in the OSS version.
|
||||
|
||||
## Mutation operator
|
||||
|
||||
A transformation applied to the AST of a subject. Mutant knows the following high level operator
|
||||
classes:
|
||||
|
||||
* Semantic Reduction
|
||||
* Orthogonal Replacement
|
||||
* [Noop](#neutral-noop-tests)
|
||||
|
||||
An exhaustive list can be found in the [mutant-meta](https://github.com/mbj/mutant/tree/master/meta)
|
||||
subdirectory of the source.
|
||||
|
||||
## Mutation
|
||||
|
||||
The result of applying a mutation operator to the AST of a subject. A mutation represents a
|
||||
hypothesis that ideally gets falsified by the tests.
|
||||
|
||||
## Insertion
|
||||
|
||||
The process of inserting a mutation into the runtime environment.
|
||||
Mutant currently supports insertion via dynamically created monkeypatches.
|
||||
|
||||
Other insertion strategies (such as "boot time") are possible but aren't implemented
|
||||
in the OSS version.
|
||||
|
||||
## Isolation
|
||||
|
||||
The attempt to isolate the (side) effects of killing a mutation via an integration
|
||||
to prevent a mutation leaking into adjacent concurrent, or future mutations.
|
||||
|
||||
Examples of sources for leaks are
|
||||
|
||||
* Global variable writes
|
||||
* Thread local writes
|
||||
* DB State
|
||||
* File system
|
||||
|
||||
Natively, mutant offers fork isolation. This works for any state within the executing
|
||||
Ruby process. For all state reachable via IO, it's the test author's responsibility to
|
||||
provide proper isolation.
|
||||
|
||||
## Integration
|
||||
|
||||
The method used to determine if a specific inserted mutation is covered by tests.
|
||||
|
||||
Currently mutant supports integrations for:
|
||||
|
||||
* rspec (https://rubygems.org/gems/mutant-rspec)
|
||||
* minitest (https://rubygems.org/gems/mutant-minitest)
|
||||
|
||||
## Report
|
||||
|
||||
Mutant currently provides two different reporters:
|
||||
|
||||
* Progress (printed during mutation testing).
|
||||
* Summary (printed at the end of a finished analysis run)
|
||||
|
||||
A reporter producing a machine readable report does not exist in the OSS version
|
||||
at the time of writing this documentation.
|
Loading…
Add table
Reference in a new issue