Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Aggiunge Mutation al capitolo sul testing #215

Merged
merged 12 commits into from
May 4, 2024
13 changes: 13 additions & 0 deletions docs/it/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,19 @@ Feature: Google Searching
Then results for "panda" are shown
```

### Mutation Testing

Il mutation testing è una metodologia di test per valutare l'attuale test suite. Partendo dal codice, si creano diverse versioni diverse, ognuna delle quali introduce una mutazione, piccola a piacere. Queste versioni mutate vengono chiamati _mutanti_. L'obiettivo del mutation testing è di verificare se la test suite identifica la mutazione: se un mutante non viene rilevato da un test, viene considerato _vivo_ e i test a riguardo vengono considerati non sufficienti per quella mutazione. Se un mutante viene rilevato da un test, viene considerato _morto_ e i test a riguardo vengono considerati sufficienti per quel mutante.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

Applicando la formula `mutation score = (mutanti morti / mutanti totali) * 100`, possiamo ottenere una percentuale di mutanti morti, che ci permette di capire quanto il nostro codice sia realmente testato.

Le mutazioni possono essere effettuate su vari aspetti del proprio software:

- Operazioni (cambiare un "-" con un "+")
- Comparazioni (cambiare un "==" con un "!=")
- Istruzioni (eliminare delle righe di codice)
- Valori (cambiare il _return_ di una funzione)

Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
## Test Coverage

La test coverage è una metrica che indica la percentuale di codice sorgente che viene eseguita (_coperta_) durante l'esecuzione dei test. Questa metrica è molto importante, in quanto permette di capire quanto il codice sorgente è stato testato. Solitamente si cerca di raggiungere una test coverage del 100%, ma questo non è sempre possibile, oltre che non necessario. Una test coverage del 100% non garantisce che il codice sorgente sia privo di bug, esattamente come non lo garantisce una coverage del 50%. Come in moltissimi altri aspetti della programmazione, la parola _dipende_ assume un significato molto importante.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
Expand Down