Testowanie mutacyjne – optymalizacja procesu i praktyczne zastosowania - Mnich, Michał (Mutation testing - process optimization and practical applications, 2022)
Rozprawa doktorska dotyczy wybranych zagadnień inżynierii oprogramowania. Celem rozprawy jest zaprezentowanie nowych metod optymalizacji testowania mutacyjnego bądź wykorzystanie ich w popularnych metodykach wytwarzania oprogramowania. Testowanie mutacyjne jest uznawane za jedną z najefektywniejszych metod testowania kodu oprogramowania. Wadą tego podejścia jest duża złożoność czasowa i pamięciowa. Niniejsza rozprawa dotyczy zagadnień optymalizacji procesu mutacyjnego oraz jego zastosowania w procesach inżynierii oprogramowania. W pracy zaproponowano szereg mechanizmów optymalizacyjnych, mających na celu zmniejszenie czasu trwania procesu mutacji kodu. Pierwszy mechanizm dotyczy redukcji liczby mutantów na podstawie analizy zmian w kodzie pomiędzy różnymi wersjami oprogramowania. Drugi wykorzystuje podejście bayesowskie w celu optymalizacji prawdopodobieństwa generacji mutantów z określonej grupy operatorów mutacyjnych tak, aby zredukować liczbę mutantów nie zmniejszając jednocześnie znacząco efektywności procesu analizy mutacyjnej. Model trzeci dotyczy generowania wielu mutantów w jednej kompilacji. Przedstawione zostały tu wyniki teoretyczne oraz eksperymenty weryfikujące, czy przy użyciu modelu następuje poprawa wydajności procesu testowania mutacyjnego. W pracy wprowadzono również wersję metodyki Test-Driven Development wzbogaconej o krok zawierający testowanie mutacyjne. Eksperymentalnie potwierdzono, że stosowanie tak wzbogaconej metodyki przyczynia się do podniesienia jakości kodu.Do przeprowadzania testowania mutacyjnego został wykorzystany model samoadaptacyjnego, rozproszonego, skalowalnego systemu. System ten został zaimplementowany przez autora rozprawy jako klaster obliczeniowy z zaimplementowaną metodą optymalizacji procesu mutacji i testowania. Rozprawa zawiera również opis architektury tego systemu.
Keywords: testowanie mutacyjne; testowanie oprogramowania; Symultanic Automatic Mutation System