for an infection to occur, mutation delta 1, it should be that the
value of A must be different from the value of B. At this point I get
lost
Il libro di testo in questione sembra voler dire che se B == A, cambiando minVal = A
in minVal = B
in realtà non muta nulla nello stato del programma, perché la mutazione sarebbe equivalente all'originale.
Come dici tu: "la condizione di infezione nei test di mutazione appare quando c'è un cambiamento nello stato di un programma." - quando la mutazione è uguale all'originale, ad esempio quando si modifica una variabile in una uguale altra variabile, non si è verificata alcuna alterazione dello stato effettivo .
What is the real meaning of infection in mutation testing?
Il test di infezione è essenzialmente un test della tua suite di test.
Eseguendo test di infezione, si eseguono i test di unità contro una versione leggermente mutata del codice che presumibilmente verifica. Se il codice mutato supera i test, potresti avere alcuni test fragili nella tua suite: a quanto pare i tuoi test passano anche quando il codice non fa ciò che è previsto che faccia!
Un semplice esempio di test di infezione sarebbe questo test di esempio:
assert(!3.isGreaterThan(3));
Implementato in questo modo:
return this > input;
Questo esempio estremamente semplificato produrrebbe una copertura del 100% del codice in termini di linee eseguite durante il processo di test.
Un framework per test di mutazione, tuttavia, noterebbe rapidamente che anche il seguente passaggio avrebbe:
return this < input;
La mutazione, che ha completamente cambiato l'intenzione del metodo in questione, supera il test. Pertanto, il test non fallisce quando le intenzioni e le aspettative del codice non vengono soddisfatte.
È importante notare che solo le mutazioni che effettivamente cambiano l'intento del codice sono mutazioni "reali": una mutazione che vedrebbe passare i test quando il cambiamento del codice nel seguente non è infetto:
return input < this;
Modifica: probabilmente è importante notare che nell'esempio da manuale, delta 1, 2, 3, 4, 5 e 6 sono ciascuno una mutazione separata per conto proprio.
Dato l'esempio, quando si esegue una suite di test delle infezioni, i test verranno eseguiti 6 volte.