Testowanie mutacyjne, lub mutacja programu, jest techniką testowania białej skrzynki, która pomaga firmom rozwijać szereg nowych kontroli oprogramowania, jednocześnie audytując bieżące procesy projektu. Jest to stosunkowo nowe podejście, które zapewnia, że zarówno deweloperzy jak i testerzy pracują na wysokim poziomie.
Aplikacja jest tylko tak udana lub tak dobra, jak jej własne procedury zapewnienia jakości – co oznacza, że organizacje muszą stosować więcej niż jeden rodzaj technik testowania.
Zdobycie wiedzy na temat badania mutacji mogłoby pomóc zespołom testującym zwiększyć swoje umiejętności i ogólny repertuar – co pozwoliłoby im zwiększyć wiarygodność tych kontroli. Testowanie mutacji jest złożonym i delikatnym procesem, dlatego ważne jest, aby testerzy dokładnie zbadali korzyści, wyzwania i programy stron trzecich, które mogą zagwarantować udane wdrożenie.
W tym artykule przyglądamy się testowaniu mutacji i temu, jak poprawia ono jakość, a także innym kluczowym rozważaniom dla zespołów testujących oprogramowanie.
Czym jest testowanie mutacyjne w testowaniu oprogramowania?
W kontekście oprogramowania, testowanie mutacji oznacza, że zespół zapewnienia jakości celowo wprowadza błędy – lub „mutacje” – do kodu aplikacji, aby zobaczyć, jak reaguje zespół. Celem jest stworzenie błędu i upewnienie się, że zestaw testów jest w stanie zidentyfikować każdą zmianę w aplikacji.
Podczas edycji kodu programu, tester mutacji może przełączyć wyrażenie prawda/fałsz, usunąć oświadczenie lub po prostu zmienić wartość. Błędy te mogą przejawiać się na wiele sposobów podczas innych kontroli oprogramowania; wszystkie z nich są łatwo wykrywalne przez wykwalifikowany i doświadczony zespół testujący.
Same mutacje są często bardzo drobne, co pozwala testerowi, który mutuje kod, obserwować, jak zespół odkrywa te zmiany. Znaczące zmiany byłyby oczywiste nawet przy pobieżnym spojrzeniu – więc drobne błędy są zazwyczaj najlepszym sposobem na upewnienie się, że firma stosuje solidne praktyki testowania.
Technika ta w szczególności analizuje skuteczność przypadków testowych zespołu; dokumentów zawierających informacje o testach. Zespół może również używać oprogramowania automatyzującego innych firm do przeprowadzania tych kontroli, w którym to przypadku testowanie mutacji patrzy na to, jak dobrze ta platforma może wykryć błędy w kodzie programu.
1. Kiedy należy wykonać Badanie mutacji?
Ponieważ celem testowania mutacji jest walidacja i poprawa bieżących kontroli jakości, istotne jest, aby zespoły przeprowadzały je na wczesnym etapie testowania. Oznacza to, że jeśli zestaw testów nie jest w stanie zidentyfikować i „zabić” mutantów, jest wystarczająco dużo czasu, aby dokonać gruntownych zmian w dowolnej skali w procedurach testowych organizacji.
Ponieważ jest to bardzo uniwersalna metoda, testowanie mutacji ma zastosowanie praktycznie do każdego rodzaju oprogramowania, w tym programów internetowych, mobilnych i desktopowych. Najlepiej sprawdza się to na etapie testów jednostkowych – które badają najmniejsze komponenty aplikacji.
2. Kiedy nie trzeba wykonywać Testów Mutacji
Nadal istnieją pewne scenariusze, w których mutacja i ogólne testy white-box nie są odpowiednie dla programu; może to być spowodowane różnymi powodami.
Na przykład, jeśli testerzy mają na celu tylko sprawdzenie za pomocą testów black-box – w takim przypadku zamiast tego skupią się na front-endzie dla tej sesji lub nawet na ogólnym etapie testowania.
Istnieją firmy, które uważają, że testowanie białej skrzynki jest żmudne i czasochłonne, co może spowodować, że pominą ten proces. Silne, dobrze sprawdzone przypadki testowe mogą również obejść potrzebę testowania mutacji, ponieważ pokazuje to staranność zespołu i zaangażowanie w dokładne procedury testowe.
3. Kto zajmuje się analizą mutacji?
Istnieje wiele różnych ról zaangażowanych w analizę mutacji, w tym:
– Testerzy mutacji
Mutują kod wprowadzając różne drobne usterki, aby upewnić się, że proces testowania działa zgodnie z oczekiwaniami. Testerzy ci są zazwyczaj wcześniej istniejącymi członkami zespołu zapewnienia jakości.
– Testerzy aplikacji
Regularnie sprawdzają kod pod kątem wszelkich problemów, identyfikując i poprawiając wszelkie znalezione mutacje. Przeprowadzają testy white-box, aby znaleźć błędy w kodowaniu – ale stosują też inne techniki.
– Twórcy aplikacji
Projektują cechy programu i piszą wstępny kod. Naprawiają również wszelkie problemy znalezione przez testerów, zapewniając, że oprogramowanie jest w stabilnym stanie do wydania.
– Kierownicy projektów
Oferują oni wskazówki dotyczące aplikacji i mogą pracować obok testerów mutacji, aby zobaczyć skuteczność własnych zespołów. Zapewniają one silne standardy na każdym etapie rozwoju.
Co badamy za pomocą Testów Mutacji?
Testowanie mutacji skupia się bardziej na procesach testowania zamiast na aplikacji. W tym celu analizuje następujące kwestie:
1. Przypadki testowe
Przypadki testowe to dokumenty, które zawierają szczegółowe informacje na temat każdego testu, w tym wyniki, jakich testerzy oczekują od każdego pojedynczego sprawdzenia. Spójne i dokładne przypadki testowe dają członkom zespołu QA pojęcie o stanie aplikacji i o tym, jak jej działanie odpowiada oczekiwaniom firmy.
Informacje zawarte w tych przypadkach testowych mogą określić zdolność testera do zauważenia pewnych defektów – w tym tych, które wywołuje testowanie mutacji.
2. Normy dotyczące badań
Testy mutacyjne dokładnie badają bieżące procedury testowe, aby upewnić się, że członkowie zespołu mogą zidentyfikować nawet drobne problemy, które mogłyby wpłynąć na postrzeganie oprogramowania przez użytkownika.
Staranność i kompetencje testerów mogą być nawet głównymi czynnikami, które firma ocenia za pomocą tych kontroli. Bez silnej dbałości o szczegóły na każdym etapie, testerzy mogliby przeoczyć poważne mutacje występujące w programie.
3. Poszczególne jednostki kodu
Testy mutacji są powszechne podczas części testowania jednostkowego w rozwoju. To patrzy na poszczególne komponenty, aby utrzymać silny nacisk na każdy test, znacznie optymalizując cały proces poprzez upewnienie się, że testerzy pracują tylko z odpowiednimi liniami kodu.
Ponieważ testy mutacji są często wczesne na etapie zapewniania jakości i mogą być prekursorem testów na pełną skalę, podejście to może zwiększyć szybkość bez uszczerbku dla dokładności.
4. Aktualizacje programu
Aktualizacje oprogramowania zwykle wiążą się z ponownym uruchomieniem procesu testowego, aby upewnić się, że nie ma nowych usterek i że poprzednie błędy nie pojawiają się ponownie.
Powtarzanie testów mutacji jest kluczową częścią tego i pomaga promować spójne standardy testowania po dużych zmianach oprogramowania.
Zespół testujący może uważać dokładne kontrole po aktualizacji za niepotrzebne, ale mutacja kodu może zapewnić, że zrozumieją znaczenie testowania na każdym etapie rozwoju.
5. Oprogramowanie do automatyzacji
Firmy przeprowadzają również testy mutacji, aby sprawdzić swoje zautomatyzowane zestawy testów i upewnić się, że są one w stanie zauważyć zmutowany kod, między innymi.
Jeśli aplikacja testująca innej firmy może zidentyfikować zewnętrzne zmiany w programie i potencjalnie nawet je naprawić, oznacza to, że organizacja może zaufać oprogramowaniu do automatyzacji testów.
Istotne jest, aby firmy walidowały swoje podejście do automatyzacji; daje to spokój każdemu testerowi.
6. Strategia automatyzacji
To, jak firma integruje automatyzację ze swoimi procesami, jest równie ważne jak oprogramowanie, które stosuje; może na przykład zdecydować się na wdrożenie hiperautomatyzacji. Pozwala to firmie inteligentnie decydować, które mutacje i testy oprogramowania zautomatyzować.
Bez silnej strategii automatyzacji, która uwzględnia samą różnorodność kodu aplikacji, niektóre testy mogą być niekompatybilne z automatyzacją – co ogranicza możliwości platformy.
7. Wniosek
Podczas gdy badanie mutacji skupia się na zespole testującym bardziej niż na aplikacji, może nadal podkreślać istotne informacje o tym programie.
Na przykład testowanie mutacyjne pokazuje, jak oprogramowanie reaguje na zmiany w swoim kodzie, w tym czy sygnalizuje te problemy w sposób, jakiego oczekuje zespół.
To podejście nie jest techniką testowania oprogramowania, ale nadal jest w stanie zaoferować interesujące dane na temat jego wewnętrznych operacji.
Cykl życia testów mutacyjnych
Zwykły cykl życia testowania mutacji jest następujący:
1. Analiza wymagań
Pierwszym krokiem każdego cyklu życia testowania mutacyjnego jest ustalenie, co dokładnie wymaga walidacji i które fragmenty kodu aplikacji najbardziej skorzystałyby z tych testów.
Zespół może rozmawiać z deweloperami i kierownictwem, aby określić ich obawy i zacząć je rozwiązywać.
2. Planowanie badań
Następnie testerzy zaczynają opracowywać dokładne kontrole, które zamierzają wdrożyć – w tym przypadku mutacje, które zaoferują najlepszy wgląd.
Ten etap określa ogólną strategię testowania mutacji oraz to, w jaki sposób zespół ma zamiar skutecznie realizować zamierzone mutacje kodu.
3. Opracowanie przypadku testowego
Testowanie mutacji wiąże się z własną, oddzielną dokumentacją testową, zawierającą informacje o zmutowanym kodzie i o tym, jak oczekują testerzy, aby naprawić problem.
Dobre prowadzenie dokumentacji zapewnia, że wszystkie testy przebiegają zgodnie z planem i może pomóc zespołowi utrzymać zaangażowanie w wysokie standardy testowania.
4. Konfiguracja środowiska badawczego
Testerzy upewniają się, że aplikacja jest gotowa na ich zmiany – i że mają procedurę rozwiązywania tych problemów, jeśli inni członkowie zespołu nie są w stanie ich wykryć.
W ramach tego testerzy mutacji zakładają serwer testowy i używają go jako płótna dla swoich mutacji.
5. Wykonanie testu
Po zakończeniu przygotowań, testerzy zmieniają kod w kilku komponentach aplikacji; następnie czekają, aż inni testerzy zauważą i naprawią problemy.
Zarówno testerzy mutacji, jak i testerzy aplikacji muszą to szeroko udokumentować, aby upewnić się, że ich zapisy są solidne.
6. Zamknięcie cyklu badań
Po zakończeniu testów testerzy mutacji dwukrotnie sprawdzają, czy wszystkie zmiany, które wprowadzili, zostały naprawione przez testerów aplikacji lub przez nich samych.
Następnie zamykają cykl testowy i analizują wyniki, omawiając sposób, w jaki testerzy reagowali na różne błędy wraz z ich zdolnością do ich poprawiania.
7. Powtórzenie badania
Po zamknięciu cyklu testowego może być konieczne jego ponowne uaktywnienie po przyszłych aktualizacjach oprogramowania.
Każda zmiana w aplikacji zmienia jej funkcjonalność w jakiś sposób, co skutkuje nowymi możliwościami, które zespół musi uwzględnić, aby upewnić się, że ich proces testowania jest wystarczająco skrupulatny.
Korzyści z badania mutacji
Istnieje wiele korzyści z przeprowadzania badań mutacji, w tym:
1. Zatwierdza proces testowania
Główną korzyścią z testowania mutacji jest możliwość pokazania, jak testerzy firmy podchodzą do oprogramowania – i ich zdolność do rozpoznawania problemów z kodowaniem. To również zapewnia, że przypadki testowe zespołu są wystarczająco wszechstronne i obejmują wszystkie niezbędne testy.
Testy mutacji badają ogólną procedurę testową organizacji, aby zagwarantować, że działa ona zgodnie z oczekiwaniami.
2. Zapewnia silną automatyzację
Testowanie mutacji pomaga zespołowi sprawdzić, czy ich platforma automatyzacji testów innej firmy jest w stanie odpowiednio zidentyfikować błędy w kodzie i zaadresować je we właściwy sposób.
Jeśli oprogramowanie to nie wykrywa ich nawet po niezbędnej kalibracji, być może warto wymienić platformę na taką, która bez problemu przejdzie te testy.
3. Dobry zasięg
Każdy proces testowania oprogramowania musi być w stanie szeroko objąć całą aplikację, aby zapewnić, że każdy aspekt otrzyma niezbędny poziom uwagi.
Testerzy mutacji mogą zmieniać dowolną część kodu programu; dobra implementacja pozwala tym testom objąć każdą większą funkcję. Uczy to testerów szukania problemów w całej aplikacji.
4. Analizuje kod źródłowy
Ponieważ testowanie mutacyjne polega na pracy z kodem i wprowadzaniu bezpośrednich zmian tam, gdzie to konieczne, metoda ta może również podkreślić niezoptymalizowane skrypty obecne w aplikacji.
Testerzy oprogramowania mogą autoryzować program i przeprowadzać swoją normalną rundę testów tylko wtedy, gdy kod oprogramowania jest odpowiedni; te kontrole pozwalają testerom zwrócić uwagę na potencjalne przyszłe problemy.
5. Prowadzi do powstania lepszego oprogramowania
Testowanie mutacji pomaga upewnić się, że procesy testowania aplikacji odpowiadają wymaganiom programu.
Jeśli analiza mutacji ujawni, że zespół zapewnienia jakości nie przestrzega właściwych procedur lub przypadki testowe są nieodpowiednie, testerzy mogą pracować nad poprawą tego stanu rzeczy. Bez tej należytej staranności organizacja może wypuścić wadliwy produkt, nie zdając sobie z tego sprawy.
6. Skuteczne dla różnych języków
Bez względu na to, jaki język zespół testujący wykorzystuje w swojej aplikacji, dostępne są opcje oprogramowania, które mogą zaoferować wysokiej jakości analizę mutacji.
Obejmuje to szereg cech jakościowych, które są specyficzne dla danego języka, usprawniając kontrole dla większej niezawodności. Indywidualne podejście do różnych języków podnosi jakość każdego testu.
7. Wysoce dostępne narzędzia
Wiele z najlepszych platform mutacyjnych jest całkowicie open source – co oznacza, że oferują one więcej możliwości dostosowania i kompleksowy zakres funkcji za darmo lub po drastycznie niższych kosztach.
Przy mniejszej ilości barier w porównaniu do wielu innych form testowania, mutacja kodu jest użytecznym i wygodnym sposobem dla firm na ocenę, a nawet poprawę, ich podejścia do zapewnienia jakości.
Wyzwania związane z badaniem mutacji
Proces ten wiąże się również z licznymi wyzwaniami, takimi jak:
1. Wymaga wiedzy z zakresu programowania
Aby testerzy mogli wykonać te kontrole, muszą mieć kompleksowe zrozumienie programu i kodu, co utrudnia wkład mniej doświadczonych testerów.
Firma może testować oprogramowanie tylko w sposób, który odpowiada istniejącym umiejętnościom testerów; konkretnie, ich zdolności do edycji aplikacji i stworzenia możliwego do naprawienia błędu w kodowaniu.
2. Nie nadaje się do testów czarnej skrzynki
Testowanie czarnej skrzynki polega głównie na patrzeniu na front-end aplikacji bez inspekcji jej wewnętrznych działań i kodu – jest to efektywnie niekompatybilne z testowaniem mutacyjnym.
W rezultacie, te kontrole są pomocne tylko dla niektórych testów w porównaniu z innymi metodami; wiele z nich może zaoferować znacznie większe pokrycie całego etapu testowania.
3. Projektowanie testów mutacji jest czasochłonne
Mutacja kodu może być żmudnym procesem ze względu na konieczność znalezienia przez zespół poszczególnych komponentów, które warto byłoby zmutować. Podjęcie decyzji, które mutacje wprowadzić, może samo w sobie zająć dużo czasu; może to być problematyczne, gdy inne rodzaje testów skutecznie czekają na te kontrole, aby w pełni zatwierdzić podejście firmy do testowania.
4. Może wymagać wielu mutacji kodu
Podobnie, złożone projekty w sposób naturalny wymagają większej liczby mutacji, aby zapewnić kompleksowe podejście do testowania. To dodaje więcej czasu do etapu mutacji i może wiązać się z wieloma ręcznymi zmianami w kodzie aplikacji.
Bez wysokiej jakości oprogramowania do automatyzacji testów z możliwością mutacji programu, może to być trudne dla testerów do pomyślnego wdrożenia.
5. Testerzy mogą nie zauważyć błędów
Największą obawą, jaką często mają testerzy mutacji i kierownicy projektów podczas wdrażania tych kontroli, jest możliwość, że testerzy oprogramowania (ręczni lub zautomatyzowani) po prostu nie zauważą problemów.
Może to wymagać całkowitego przeglądu procedur testowych firmy – chociaż może to nadal dostarczyć testerom istotnych informacji na temat ich standardów zapewnienia jakości.
6. Może wymagać dużej ilości pamięci
Testowanie mutacji wymaga zazwyczaj dużej ilości mocy obliczeniowej, choć może to zależeć od aplikacji, z której korzystają testerzy.
Jeśli organizacja ma ograniczoną liczbę maszyn lub urządzenia te mają niską specyfikację, mogą mieć problemy z uruchomieniem zbyt wielu jednoczesnych mutacji. Wpływa to na to, ile kontroli mogą wykonać przed zakończeniem etapu testowania.
7. Sprawozdania mogą być bogate w informacje
Chociaż zależy to głównie od interfejsu narzędzia do testowania mutacji zespołu, raporty, które generują, mogą być trudne do parsowania.
Oznacza to, że potrzeba czasu na ręczne sortowanie ich i znalezienie właściwych wyników badań; niektóre programy pozwalają użytkownikom dostosować rzeczywisty proces raportowania; różni się to w zależności od aplikacji.
Charakterystyka badań mutacji
Główne cechy skutecznych testów mutacyjnych to:
1. Kompleksowa
Te kontrole obejmują każdy główny aspekt oprogramowania; firmy z wystarczającymi zasobami mogą nawet zaprojektować test mutacji dla każdego zwykłego przypadku testowego.
Choć dokładna liczba zależy od możliwości i preferencji organizacji, skuteczne testy mutacji obejmują szeroki zakres zakodowanych cech.
2. Strategiczny
Mutacje programowe powinny podobnie podążać za jasną i dobrze zaplanowaną strukturą, która ułatwia ogólne cele organizacji związane z testowaniem.
Na przykład, błędy, które produkują, mogą przybliżać realistyczne niepowodzenia testowe, co pozwala testerom przewidzieć te problemy, jeśli naturalnie wystąpią, znacznie poprawiając proces testowania firmy.
3. Konstruktywne
Celem testów mutacyjnych jest zidentyfikowanie braków w testowaniu – pokazanie, jak zespół mógłby poprawić swoje kontrole i naprawić drobne błędy w miarę ich pojawiania się.
Testerzy mutacji muszą nadać priorytet „nieważnym” mutacjom, które wpływają na funkcjonalność oprogramowania, co pozwala na wyraźniejsze usprawnienie testów w całym projekcie.
4. Preemptive
Te kontrole istnieją w celu zatwierdzenia ogólnej strategii zespołu; oznacza to, że testowanie mutacji działa lepiej we wczesnych etapach rozwoju.
Jeśli testerzy zauważą jakieś znaczące wady w swoim podejściu do zapewnienia jakości, daje im to niezbędny czas na zmianę swoich przypadków testowych, aby upewnić się, że są one odpowiednie.
5. Spójna
Testowanie mutacji w różnych iteracjach aplikacji powinno zwrócić spójne wyniki, jednocześnie dodając więcej kontroli, aby dostosować się do zmian w oprogramowaniu.
Kolejne kontrole muszą zawierać tę samą dbałość o szczegóły, aby zachować swoją skuteczność – bez tej precyzji testy mutacji mogą stać się mniej dokładne.
6. Subtelny
Testy mutacji mają na celu zbadanie zdolności zespołu zapewnienia jakości do identyfikowania wad kodu poprzez ich testy i platformy stron trzecich.
Oznacza to, że testy nie powinny być natychmiast oczywiste dla każdego, kto kontroluje oprogramowanie; celem jest zbadanie, jak testerzy reagują na drobne problemy z kodem.
7. Współpraca
Jak w przypadku każdego testu oprogramowania, mutacja kodu jest procesem, który powszechnie wymaga pracy zespołowej i komunikacji, aby zapewnić jego sukces. Utrzymanie atmosfery współpracy pomaga uniknąć silosów informacyjnych, które mogą skutkować błędną komunikacją – gwarantuje to również, że każdy tester pozostaje skupiony na wykonywanych zadaniach.
Rodzaje testów mutacji
Trzy główne rodzaje badań mutacji to:
1. Mutacja wartości
Mutacje wartości bezpośrednio zmieniają wartości wewnątrz kodu, zamieniając jedną liczbę lub literę na inną w sposób wpływający na funkcjonalność aplikacji.
Na przykład tester mógłby zmienić dokładne parametry programu, takie jak liczby, na które reaguje. Testerzy mutacji mogą w szczególności skupić się na stałych wartościach oprogramowania, ponieważ podczas normalnego działania pozostają one zawsze takie same.
2. Mutacja decyzji
Mutacje decyzyjne modyfikują operatory arytmetyczne i logiczne, skutecznie zmieniając sposób reagowania aplikacji na określone sytuacje.
Na przykład zamiana operatora greater-than (>) na operator less-than (<) w naturalny sposób wpływa na wynik programu. Testerzy mogą również zamienić „lub” na „i” lub odwrotnie, zasadniczo zmieniając to oprogramowanie i sposób, w jaki interpretuje ono informacje dostarczane przez innych testerów i ewentualnych użytkowników.
3. Mutacja oświadczeń
Mutacje oświadczeń zmieniają rzeczywiste oświadczenia kodu, modyfikując reguły, których aplikacja używa do podejmowania decyzji. Testerzy mogą zmieniać zawartość tych linii, powielać je, a nawet usuwać, aby sprawdzić, jak zmutowany program wpływa na funkcjonalność oprogramowania.
Mutacje te zmieniają elementy składowe programu, potencjalnie usuwając całe funkcje lub w inny sposób uniemożliwiając ich działanie.
Wyjaśnienie pewnych nieporozumień
– Testowanie mutacji a testowanie regresji
Testy mutacyjne i regresyjne to oba przydatne podejścia do testowania oprogramowania – zrozumienie każdej z tych technik może poprawić ogólne zapewnienie jakości w firmie.
1. Czym jest testowanie regresji?
Testowanie regresyjne polega na tym, że testerzy badają oprogramowanie pomiędzy różnymi iteracjami, aby upewnić się, że nadal działa pomimo zmian w kodzie.
Nawet niewielkie zmiany mogą spowodować poważne problemy bez tych kontroli, potencjalnie powodując ponowne pojawienie się poprzednich błędów. Zwykle wymaga to automatyzacji ze względu na skomplikowaną naturę ponownego testowania każdego komponentu; wiele firm rezygnuje z testów regresyjnych z tego powodu.
Testerzy mogą przeprowadzać te kontrole na pojedynczych jednostkach, pojedynczych komponentach lub na całym produkcie – dokładne testy, które są wymagane, zależą głównie od projektu i jego skali.
2. Jaka jest różnica między testami mutacyjnymi i regresyjnymi?
Testowanie regresyjne skupia się przede wszystkim na sprawdzaniu programu i jego funkcjonalności, podczas gdy mutacja kodu zamiast tego patrzy na to, jak testerzy reagują na problemy.
Pierwszy z nich również w dużej mierze ma miejsce po wielu iteracjach programu, podczas gdy sprawdzanie mutacji może mieć miejsce na każdym etapie rozwoju – choć zwykle we wczesnej części fazy testowania.
Zarówno testy regresji, jak i mutacji mogą dotyczyć poszczególnych jednostek kodowania i tego, jak drobne zmiany mogą spowodować istotne problemy, nad których usunięciem testerzy muszą pracować.
3. Wnioski: Testowanie mutacyjne a testowanie automatyczne.
Automatyzacja jest często kluczową częścią testowania mutacji ze względu na samą szerokość kontroli i jednostek – to sprawia, że czasami jest niezbędna dla udanego i kompleksowego procesu testowania.
Firmy powszechnie używają mutacji kodu, aby zbadać swoją platformę automatyzacji stron trzecich i jak dobrze identyfikuje ona problematyczne skrypty.
Połączenie dokładnego katalogu kontroli mutacji z automatycznym oprogramowaniem może znacznie zwiększyć pokrycie firmy i zapewnić silniejsze wyniki.
Choć są to dwie odrębne praktyki testowania, nie muszą się sobie przeciwstawiać. Zintegrowanie automatyzacji procesów robotycznych, na przykład, może wzmocnić strategię firmy w zakresie testowania mutacji.
Czego potrzebujesz, aby rozpocząć Testowanie Mutacyjne w inżynierii oprogramowania?
Zwykle wymagania dotyczące kompleksowego badania mutacji obejmują:
1. Jasna strategia testowania
Zespół testujący musi ustalić strategię badania mutacji, w tym określić, które komponenty i jednostki są najważniejsze do zbadania.
Na przykład, niektóre aspekty kodu mogą być bardziej integralne dla sukcesu i funkcjonalności aplikacji; testerzy powinni upewnić się, że istnieje wystarczająco dużo mutacji, aby to uwzględnić.
Harmonogram testowania mutacji w firmie jest również istotną kwestią, ponieważ zapewnia to testerom wystarczającą ilość czasu na zbadanie kodu.
2. Brak rozrostu zakresu
Nawet przy dokładnej strategii, która określa podejście firmy do badania mutacji, możliwe jest, że liczba testów będzie znacznie większa niż to konieczne.
Efektywność jest najważniejsza w całej tej procedurze, zwłaszcza że inne etapy badania mogą czekać na zespół, który znajdzie i zabije mutacje. Testerzy muszą jasno określić swój zakres, zanim zaczną mutować kod; to zapewnia, że wszystko jest do opanowania w praktycznych ramach czasowych.
3. Rygorystyczna dokumentacja
Każdy proces testowania korzysta z pełnej dokumentacji – często w formie przypadków testowych, które szczegółowo opisują poszczególne kontrole i wszelkie istotne mutacje.
Ilustruje to aktualne postępy zespołu w testach, co jest szczególnie przydatne dla menedżerów i kadry kierowniczej. Dokumentowanie każdej mutacji kodu pomaga również testerom zachować przejrzyste zapisy dotyczące wprowadzanych zmian.
Jeśli zespół zapewnienia jakości zmaga się ze znalezieniem tych mutacji podczas testowania, te dokumenty skutecznie służą jako klucz odpowiedzi.
4. Wykwalifikowani testerzy
Testerzy, którzy mutują kod, muszą mieć silne zrozumienie oprogramowania – w tym wielu sposobów, w jakie mogą go zmutować lub nawet złamać.
Testerzy mutacji wiedzą z grubsza, jak ich zmiany wpłyną na aplikację i jak inni członkowie zespołu zapewnienia jakości mogliby zidentyfikować zmutowany kod.
Wymaga to na ogół dobrego poziomu wiedzy programistycznej. Aby analiza mutacji była skuteczna, testerzy oprogramowania również powinni mieć dobrze rozwinięte umiejętności i doświadczenie w testowaniu.
5. Oprogramowanie do automatyzacji
Oprogramowanie do automatyzacji stron trzecich może być koniecznością przed testowaniem mutacji ze względu na liczbę kontroli, których ten proces często wymaga. Jest to szczególnie prawdziwe w przypadku skomplikowanych aplikacji z większą ilością kodu i funkcji do zbadania przez zespół zapewnienia jakości.
Firmy mogą wprowadzić te kontrole specjalnie po to, aby przetestować jak oprogramowanie automatyzujące reaguje na błędy w kodowaniu. Może to być podstawowa część procesu próbnego firmy, aby zdecydować, które programy są najbardziej przydatne.
Proces badania mutacji
Zwykłe kroki, które testerzy zazwyczaj wykonują podczas przeprowadzania analizy mutacji, to:
1. Przygotować testy
Przygotowanie to pierwszy krok każdego procesu testowania. Obejmuje to negocjowanie dokładnych kontroli, które należy wdrożyć i uzyskanie wszelkich niezbędnych zgód – na przykład od kierownictwa firmy i interesariuszy.
Testerzy muszą opracować te kontrole w sposób, który uwzględnia harmonogram projektu, a jednocześnie obejmuje każdy główny element. Od planowania zespołu może zależeć skuteczność ich mutacji kodu.
2. Przedstawić mutacje i wady
Po zakończeniu przygotowań, zespół testujący zaczyna zmieniać kod, mutując go zgodnie ze swoim planem, aby wprowadzić konkretne błędy. Błędy te powinny być stosunkowo niewielkie, ponieważ pozwala to testerom ocenić zdolność reszty zespołu do identyfikacji problemów z kodowaniem.
Drobne usterki mogą również pomóc organizacji w kontroli wrażliwości jej oprogramowania do automatyzacji stron trzecich.
3. Zastosowanie przypadków testowych
Przypadki testowe muszą uwzględniać każdy możliwy punkt awarii w aplikacji – może to wymagać przepisania, jeśli zmutowany program jest w stanie działać bez błędów.
Przypadki testowe programu reprezentują pełen zakres kontroli, które przeprowadzają testerzy; każdy z nich powinien pomóc testerom odkryć wszelkie ukryte mutacje i być integralną częścią użyteczności aplikacji.
4. Porównaj wyniki
Po dodaniu do programu błędów mutacyjnych i zastosowaniu opracowanych przez zespół przypadków testowych, zespół musi porównać wyniki zarówno z oryginalnego, jak i zmutowanego programu.
Nadzieja polega na tym, że dla każdego udanego sprawdzenia w oryginale, będzie również błąd w zmutowanej aplikacji. Świadczy to o umiejętnościach zarówno testerów, jak i narzędzi, z których korzystają.
5. Działaj na podstawie różnych danych wyjściowych
Jeśli istnieją różne wyjścia między oryginalnym i zmutowanym programem, jak oczekują testerzy, oznacza to, że przypadek testowy może z powodzeniem zabić mutanta, demonstrując jego obecność.
Testerzy mogą wtedy przystąpić do pracy z zaufaniem do swojej metodologii i zdolności do identyfikacji problemów z kodowaniem. Dla tych konkretnych testów nie są konieczne żadne zmiany w przypadkach testowych.
6. W razie potrzeby zmienić obudowy
Niektóre mutacje kodu mogą skutkować identycznymi wnioskami w różnych programach, co sugeruje, że przypadki testowe nie są w stanie skutecznie wskazać każdego możliwego błędu w aplikacji.
W takich przypadkach mutant pozostaje „żywy” i może nadal wpływać na oprogramowanie w sposób, do którego testerzy nie mają żadnych ram – prowadzi to do tworzenia lepszych przypadków testowych.
Jak tworzyć zmutowane programy
Zmutowane programy są efektywnie identyczne z oryginalnymi programami, z wyjątkiem jednej drobnej zmiany, która może wpłynąć na funkcjonalność aplikacji w mały, ale zauważalny sposób.
Kompleksowe i szczegółowe przypadki testowe pomagają testerowi lub pakietowi oprogramowania wskazać te zmiany i wynikające z nich błędy. Każdy przypadek, który firma sprawdza, wymaga zarówno oryginalnego, jak i zmutowanego programu, pokazując efekty każdej zmiany w izolacji.
Programy zazwyczaj powielają realistyczne błędy, takie jak literówki w kodowaniu. Ważne jest również, aby testerzy unikali „martwo urodzonych” mutacji, które uniemożliwiają wykonanie aplikacji – jest to zbyt oczywiste dla testerów.
Co zmienić w zmutowanym programie?
Jak w przypadku wielu zmiennych testowania oprogramowania, dokładne zmiany, które testerzy wprowadzają, zależą od aplikacji i jej kodu.
Istnieją trzy kategorie, które obejmują większość testów mutacji: operandy, wyrażenia i deklaracje. Zmiana którejkolwiek z nich może stworzyć skuteczny program mutacyjny – pokazujący, jak różne wartości lub reguły wpływają na samą logikę, z której korzysta program.
Kategorie te odnoszą się do trzech głównych typów mutacji, które badają testerzy; są to odpowiednio mutacje decyzji, wartości i stwierdzeń. Zmiany powinny być niewielkie i nie mogą całkowicie uniemożliwić wykonania testu.
Najlepsze praktyki w zakresie badania mutacji
Podczas przeprowadzania testów mutacyjnych w kontekście testowania oprogramowania, istnieją pewne praktyki warte przestrzegania, które zapewniają silne wyniki, takie jak:
1. Maksymalizacja wyniku mutacji
Wynik mutacji programu to procent mutantów, które zespół lub aplikacja może z powodzeniem zidentyfikować lub „zabić”.
Na przykład, jeśli runda testów mutacji ma 40 mutacji, a testerzy znajdują 36, wynik mutacji wynosi 90% – celem zespołu jest zawsze zapewnienie wyniku 100%.
2. Wybierz losowo mutanty
Podczas gdy może to pomóc w nadaniu priorytetu niektórym komponentom i dokładniejszym ich przetestowaniu, przydatne jest również losowe wybieranie przez testerów mutacji do dodania – zwłaszcza przy napiętym terminie.
Tak długo, jak te kontrole reprezentują każdy znaczący typ mutacji, zespół zapewnienia jakości może zatwierdzić swoją ogólną strategię testowania oprogramowania.
3. Zachowaj niewielkie zmiany
Mutacje kodu powinny reprezentować drobne odchylenia od oryginalnego programu, ponieważ ilustruje to, jak prawdopodobne jest, że tester zidentyfikuje pewne błędy; drobne problemy z kodowaniem pokazują również, jak wrażliwe jest ich oprogramowanie.
Ważne jest, aby testerzy mutacji znaleźli równowagę, która pozwala tym drobnym zmianom nadal produkować zauważalne błędy.
4. Jedna mutacja na program
Testowanie mutacyjne patrzy na poszczególne przypadki testowe w izolacji, aby sprawdzić, jak bardzo są one wszechstronne. Aby pomóc w tym, każdy zmutowany program powinien mieć tylko jedną zmianę w stosunku do oryginału.
Programy z wieloma mutacjami mogą nie być w stanie skutecznie sparować z przypadkami testowymi; mutacje mogą być ze sobą sprzeczne.
5. Starannie rozważ oprogramowanie do automatyzacji
Firmy często używają mutacji kodu, aby zatwierdzić użycie przez zespół oprogramowania do automatyzacji i upewnić się, że jest ono w stanie zidentyfikować błędy tak skutecznie, jak ludzki tester.
Oznacza to, że wybór odpowiedniej platformy automatyzacji może być ważnym czynnikiem, podobnie jak możliwość integracji automatyzacji procesów robotycznych.
6. Wykorzystanie rozwoju sterowanego testami
Test-driven development (TDD) odnosi się do specyficznej techniki, która uwzględnia wymagania dotyczące testowania na każdym etapie rozwoju.
Pomaga to zapewnić, że przypadki testowe są w pełni zgodne z oprogramowaniem – pozwalając mu łatwo przejść testy mutacyjne i stworzyć lepszy program, który synchronizuje się z procesami zapewnienia jakości.
Rodzaje danych wyjściowych z testu mutacji
Istnieje kilka danych wyjściowych, które generują testy mutacji, w tym:
1. Program mutantów
Zmutowane programy są naturalnym wynikiem tych kontroli; testerzy tworzą je, aby odzwierciedlić swoje aktualne przypadki testowe i problemy, które pomagają wykryć. Programy te zazwyczaj odbiegają od swojego oryginalnego odpowiednika tylko w jeden drobny, ale istotny sposób, aby zapewnić większą niezawodność.
2. Żywy lub martwy mutant
Po testach mutacja zostaje „zabita” lub pozostaje „żywa” – odnosi się to po prostu do tego, czy tester (lub jego oprogramowanie) z powodzeniem zidentyfikował problem z kodowaniem, czy nie.
Jeśli mutant pozostanie przy życiu, przypadki testowe mogą wymagać poważnych zmian.
3. Przypadek testowy mutacji
Zespół zapewnienia jakości używa oddzielnych przypadków testowych specyficznych dla mutacji, które rejestrują informacje o swoich zmutowanych programach.
Pomaga to zapewnić zespołowi kompleksową dokumentację dla każdej kontroli; dokumenty te zawierają szczegóły dotyczące mutacji i ich wpływu na program.
4. Wynik mutacji
Celem końcowym każdego badania mutacji jest osiągnięcie wyniku mutacji na poziomie 100%, przy czym procedury badawcze firmy z powodzeniem zlokalizują i zabiją każdego mutanta. Każda mniejsza wartość sugeruje, że ich przypadki testowe i ogólne procesy wymagają poprawy w celu zidentyfikowania problematycznego kodu.
Przykłady badania mutacji
Oto trzy przykłady badania mutacji:
1. Przykład mutacji wartości
Mutacje wartości polegają na zmianie stałej lub parametru, który może potencjalnie zmienić ograniczenia programu. Na przykład, oprogramowanie automatycznej kasy może wykorzystywać wagę artykułu spożywczego do określenia jego ceny.
Testerzy mogą zmutować kod stojący za tym programem, aby zmienić parametry wagi, czyniąc jedzenie znacznie droższym za każdą uncję lub funt. Tester lub platforma testowa powinna być w stanie zidentyfikować wpływ różnych wartości na ten program.
Ponieważ ten błąd zmienia jedną z głównych funkcji oprogramowania, przypadki testowe powinny zauważyć ten błąd i ostrzec zespół.
2. Przykład mutacji decyzyjnej
Mutacje decyzji obejmują zmianę operatora arytmetycznego lub logicznego, odwrócenie lub inną zmianę sposobu, w jaki aplikacja reaguje na dane wprowadzone przez użytkownika. Wracając do przykładu kasy samoobsługowej, urządzenia te mogą oznaczyć przedmiot o niespodziewanie dużej wadze, prawdopodobnie w wyniku błędu użytkownika.
Kod maszyny mógłby to zrobić poprzez decyzję „if (a>b)” – gdzie „b” odzwierciedla oczekiwaną wagę, a „a” odpowiada rzeczywistej wadze. Zespół może zmutować to w „jeśli (a≤b)”, co zmienia sposób, w jaki reaguje kasa; oznaczałby przedmiot nawet przy oczekiwanej wadze.
3. Przykład mutacji oświadczenia
Mutacje oświadczeń polegają na zmianie reguły lub wyjścia – może to nawet obejmować całkowite usunięcie oświadczeń z aplikacji. Te mutacje mogą być bardziej zauważalne niż inne, w zależności od częstotliwości występowania danego stwierdzenia; ważne jest, aby testerzy mądrze wybrali stwierdzenie.
Na przykład, urządzenie do samodzielnej kasy może wyświetlać ostrzeżenie, jeśli użytkownik próbuje kupić przedmiot z ograniczeniem wiekowym. Bez odpowiedniego oświadczenia maszyna może ulec awarii lub pozwolić dowolnemu klientowi na zakup dowolnego przedmiotu.
Poprzez mutację oświadczenia i podkreślenie go zespołowi, testerzy mogą sprawdzić, czy ich podejście uwzględnia te problemy.
Rodzaje błędów i usterek wykrywanych za pomocą Testów Mutacyjnych
Testy mutacyjne odkrywają głównie problemy w samym procesie testowania. Mając to na uwadze, oto zakres problemów, które te kontrole mogą pomóc zidentyfikować:
1. Niejasne przypadki testowe
Jeśli analiza mutacji ujawnia niski wynik mutacji (lub nawet jakikolwiek wynik poniżej 100%), sugeruje to, że przypadki testowe zespołu nie są w stanie uwzględnić każdego możliwego błędu, który może mieć wpływ na aplikację.
Mogą one nie być wystarczająco szczegółowe lub szerokie, aby dopasować się do wymagań zespołu. Dokumenty te powinny obejmować każdą możliwość, jaką zespół może napotkać podczas testowania oprogramowania, aby zapewnić niezawodność.
2. Niewyszkolony zespół testowy
Testy mutacji mogą również zilustrować zdolności zespołu, w tym jak dobrze osobiście identyfikują mutacje i inne usterki. Jeśli nie mogą zlokalizować mutacji w całym programie pomimo jasnych i szczegółowych przypadków testowych, jest to potencjalnie spowodowane tym, że testerzy nie stosują tych przypadków prawidłowo.
Zmutowane programy mogą wykazywać problemy podczas całego procesu testowania – może to również dotyczyć niewykwalifikowanych lub nieprzeszkolonych testerów.
3. Nieodpowiednie oprogramowanie testujące
Jeśli firma używa tych kontroli do sprawdzenia własnej platformy testowej, może się okazać, że oprogramowanie nie potrafi dokładnie zidentyfikować lub zabić zmutowanego kodu.
Firma może odpowiedzieć badając inne wybory, aż znajdzie jeden kompatybilny z ich przypadkami testowymi. Jeśli oprogramowanie do automatyzacji nie znajdzie problematycznego kodu, prawdopodobnie będzie zmagać się z identyfikacją innych problemów, które mają wpływ na oprogramowanie.
4. Niezoptymalizowany kod
Testowanie mutacji może ujawnić problemy już obecne w oprogramowaniu. Na przykład testerzy mogą próbować mutować kod, ale sami odkrywają krytyczne defekty.
Służy to jako kolejna ważna perspektywa programu, pokazując, że mutacja kodu zapewnia korzyści poza procesem testowania. Im więcej testerów bada ten kod w jakimkolwiek stopniu, tym więcej problemów zespół może odkryć i naprawić w trakcie etapu testowania.
Metryka wspólnego testu mutacji
Do głównych metryk, z których korzystają testy mutacji, należą:
1. Zabite mutanty
Odnosi się to do liczby mutacji, które testerzy lub oprogramowanie byli w stanie zidentyfikować, flagując ich istnienie, aby zapewnić personelowi możliwość znalezienia drobnych usterek, takich jak te.
Ilość mutantów, które testerzy zabijają, zależy od siły ich przypadków testowych.
2. Żywe mutanty
Żywe mutacje to te, których nie udaje się zidentyfikować testerowi lub oprogramowaniu – pokazując wszelkie luki, które mogą istnieć w strategii zapewnienia jakości zespołu. Jeśli tak się stanie, testerzy powinni przekalibrować swój proces i przypadki testowe, aby pomieścić te mutacje i zabić je w przyszłych kontrolach.
3. Ważne mutacje
Metryka ta określa ilość mutacji, które program był w stanie pomyślnie uwzględnić bez błędu runtime niweczącego test i jego skuteczność.
Ważne mutacje to takie, które tester i oprogramowanie automatyzujące mogą zbadać; wynika to z tego, że mutacje są stosunkowo niewielkie.
4. Nieważne mutacje
Znaczące mutacje mogą wpłynąć na aplikację na tyle, aby testowanie było niepraktyczne lub nawet niemożliwe – dlatego pomaga śledzić, ile „nieważnych” mutacji jest obecnych w zmutowanym programie.
Zidentyfikowanie ich pozwala testerom na ich edycję lub nawet usunięcie, zapewniając, że kontrole obejmują tylko ważne mutacje.
5. Mutacje ogółem
Liczba mutacji niezależnie od ich ważności to kolejna metryka, którą śledzą testerzy; pozwala im to monitorować mutacje i rejestrować ich status.
Ponieważ każda mutacja zwykle wiąże się z oddzielnym testem, suma służy również jako liczenie liczby ogólnych mutacji kodu.
6. Wynik mutacji
Najbardziej pomocną metryką dla analizy mutacji jest zazwyczaj wynik mutacji, który jest efektywnie procentem ważnych mutacji, które tester lub zestaw automatyzacji był w stanie wykryć.
Wszystko poniżej 100% wykrywalności może świadczyć o niewłaściwych procedurach testowych.
7 Błędy i pułapki w implementacji testów mutacyjnych
Testowanie mutacji to złożony proces, który firmy muszą wdrażać mądrze, aby uniknąć poważnych problemów lub błędów. Oto siedem pułapek, które testerzy powinni pracować, aby uniknąć podczas przeprowadzania testów mutacji:
1. Niewłaściwe skalowanie mutacji
Skala jest ważnym czynnikiem podczas analizy mutacji, ponieważ proces ten istnieje, aby upewnić się, że testerzy identyfikują drobne błędy w aplikacji. Jeśli mutacja jest zbyt oczywista dla testerów, może to nie być skuteczny sposób sprawdzenia ich zdolności do zauważania lub przeciwdziałania problemom z oprogramowaniem.
2. Mutacje nieważne lub żywe
Nawet przy odpowiedniej skali wiele mutacji oferuje jedynie ograniczoną skuteczność – na przykład jeśli nie prowadzą do usterki, lub skutkują problemem, który zatrzymuje działanie aplikacji.
Testerzy powinni pamiętać o tym, jak każda zmiana w kodowaniu może wpłynąć na całe oprogramowanie.
3. Niezgodne przypadki testowe
Przypadki testowe i mutacje muszą idealnie sparować ze sobą, aby zapewnić spójne i harmonijne testowanie. Podczas podejmowania decyzji, które mutacje dodać lub nawet podczas projektowania początkowych przypadków testowych, zespół zapewnienia jakości może pracować, aby zagwarantować, że pasują one do siebie i prowadzą do bardziej płynnego testowania w ogóle.
4. Terminy i harmonogramy
Etapy testowania różnią się długością, ale zawsze powinny być zgodne z wewnętrznymi terminami firmy. Firmy, które nie zdążą odpowiednio zaplanować swoich badań mutacji, mogą nie zdążyć zakończyć procesu na czas.
Zanim projekt trafi do etapu testów, zespół musi upewnić się, że harmonogram testów jest odpowiednio obszerny.
5. Nieodpowiednie pokrycie testami
Przedsiębiorstwa mogą zdecydować się na losowe wdrożenie swoich mutacji kodeksowych – ale nadal ważne jest, aby obejmowały one szeroki zakres zagadnień.
Aby upewnić się, że zarówno testerzy, jak i oprogramowanie mogą wykryć każdy rodzaj mutacji, kontrole powinny obejmować co najmniej kilka mutacji wartości, decyzji i deklaracji.
6. Wykorzystanie mutantów do testowania oprogramowania
Chociaż testowanie mutacji oferuje nowe spojrzenie na aplikację, zespoły muszą używać tej metody tylko do sprawdzenia własnego procesu testowania. Firma musi zrozumieć dokładne możliwości i ograniczenia testowania mutacji; technika ta może odnieść sukces tylko obok innych kontroli oprogramowania.
7. Zbyt wiele mutantów
Najważniejsze jest, aby firmy zapewniły szerokie pokrycie testowe, ale mogą wdrożyć zbyt wiele mutacji w procesie. Każdy program mutacyjny wymaga znacznej ilości mocy obliczeniowej – co ogranicza ich liczbę, jaką organizacja może przeprowadzić jednocześnie.
Uruchomienie zbyt wielu mutacji może również utrudnić dotrzymanie terminów testów.
Lista kontrolna badania mutacji, porady i wskazówki
Istnieje szereg dodatkowych wskazówek, które mogą pomóc każdemu zespołowi w zwiększeniu sukcesu ich procesu badania mutacji, takich jak:
1. Sprawdź kompatybilność języków programowania
Zarówno darmowe, jak i płatne narzędzia do testowania mutacji zazwyczaj specjalizują się w jednym języku kodowania – przez co ważne jest, aby testerzy wybrali narzędzie, które jest kompatybilne z aplikacją i platformą do testowania oprogramowania.
Zespół testujący powinien zbadać wiele opcji, aby upewnić się, że używają programu, który pasuje do ich budżetu, a także preferowanego języka kodowania.
2. Rozsądne rozmieszczenie testów
Różni członkowie zespołu testującego będą prawdopodobnie patrzeć na różne aspekty aplikacji, zwykle korelując z ich specyficznymi mocnymi i słabymi stronami oraz ogólnym doświadczeniem.
Kiedy zespół przydziela testy mutacji każdemu testerowi, powinien mieć to na uwadze, aby uzyskać pomysł na ich biegłość; pokazuje to, jak dobrze prawdopodobnie pójdą dalsze testy.
3. Ostrożnie wybieraj wady
Jeśli ostatnia iteracja oprogramowania miała błąd obejmujący wartość lub oświadczenie, może pomóc w replikacji tego i zbadaniu, jak zespół lub program reaguje.
Pomaga to zagwarantować długowieczność aplikacji i ilustruje zdolność zespołu do zauważenia poprzednich błędów, jeśli się powtórzą – jest to kluczowy element testów regresyjnych.
4. Maksymalizacja mocy obliczeniowej
Ponieważ sprawdzanie mutacji może wymagać dużej mocy obliczeniowej do uruchomienia, pomaga to jak najlepiej wykorzystać sprzęt firmy.
Na przykład, jeśli niektóre maszyny mają mocniejsze specyfikacje, pomocne może być uruchomienie mutantów na tych urządzeniach. Dzięki temu firma może uniknąć znacznych opóźnień, do których mogłyby doprowadzić wolniejsze maszyny.
5. Nie odrzucaj żywych mutacji
Nawet przy ścisłym harmonogramie, testerzy powinni pracować nad modyfikacją i poszerzeniem swoich przypadków testowych, aby zwalczyć wszelkie mutacje, które przetrwają proces.
Podczas gdy te błędy mogą nie wydawać się znaczące, jeśli oprogramowanie lub tester ich nie odkryje, wciąż stanowią niepowodzenie przypadków testowych w identyfikacji wszystkich problemów z kodowaniem.
6. Zbadanie nowego oprogramowania do automatyzacji
Jeśli przypadki testowe zespołu są wystarczająco szczegółowe, ale ich automatyczny zestaw testów nie może z powodzeniem użyć ich do zidentyfikowania każdej mutacji, mogą skorzystać z innego oprogramowania.
Istnieje wiele darmowych i płatnych platform dostępnych, a firmy powinny sprawdzić każdą opcję, aby upewnić się, że mają oprogramowanie, które najlepiej pasuje do ich przypadków testowych długoterminowo.
7. Synchronizacja każdego procesu testowania
Współpraca jest podstawowym elementem każdej strategii testowania – pomaga to upewnić się, że każdy proces może łatwo dopasować się do siebie tak, jak zamierza zespół.
Na przykład zespół testujący mógłby opracować swoje przypadki testowe z myślą o mutacji, aby zapewnić większy poziom zgodności, ułatwiając testerom walidację strategii.
8. Stosuj testy jednostkowe
Testy jednostkowe pozwalają zespołowi ds. zapewnienia jakości sprawdzać fragmenty kodu w izolacji, co znacznie usprawnia testy i ułatwia zespołom identyfikację problemów.
Ta kombinacja może być szczególnie pomocna, jeśli testerzy martwią się o terminy, dając im możliwość uproszczenia swoich kontroli i poprawy ogólnego pokrycia – co prowadzi do znacznie silniejszych testów oprogramowania.
9. Napisz szczegółowe przypadki testowe
Przypadki testowe mutacji powinny zawierać odpowiednie informacje o mutacji i jej wpływie na program, a także o tym, jak zespół testujący lub platforma zlokalizowały te błędy.
Poprzez dostarczenie jak największej ilości szczegółów, tester może osobiście zatwierdzić przypadek testowy i upewnić się, że zespół wie dokładnie, jak zapewnić płynne testowanie.
5 najlepszych narzędzi do testowania mutacji
Istnieje szeroki zakres dostępnych narzędzi, które mogą pomóc firmom w ich wymaganiach dotyczących badania mutacji. Jak to często bywa w przypadku aplikacji do testowania oprogramowania, ceny i funkcje różnią się między poszczególnymi platformami, co sprawia, że organizacje muszą wybrać tę, która najlepiej odpowiada ich potrzebom.
Niektóre z tych programów mogą oferować darmowe odpowiedniki lub być całkowicie open source; choć płacenie za większą wygodę jest zwykle konieczne.
Mając to na uwadze, oto pięć najlepszych narzędzi do badania mutacji.
1. Stryker
Stryker specjalizuje się w mutacjach JavaScript, znacznie usprawniając ten proces, aby zagwarantować brak fałszywych pozytywów i obniżyć ogólną ilość wysiłku, który testerzy musieliby w przeciwnym razie zastosować do wszystkich kontroli mutacji.
Platforma Stryker inteligentnie ocenia oprogramowanie i wykorzystuje zebrane informacje, aby określić ciągi lub segmenty kodu, które skorzystałyby z mutacji. Aplikacja ta jest wyposażona w reportera czystego tekstu, który wyświetla podsumowanie mutanta, w tym czy Stryker był w stanie go zabić.
2. PITest
PITest jest bardzo popularny na całym świecie ze względu na jego zdolność do zmiany kodu bajtowego Javy i dokonywania tysięcy mutacji na sekundę. Ta aplikacja wykorzystuje dane dotyczące pokrycia przypadków testowych, aby natychmiast dowiedzieć się, które testy mogą zabić mutanta.
Uruchamia tylko testy, o których wie, że będą istotne, ograniczając moc obliczeniową, którą ta procedura zwykle zużywa. PITest jest również kompatybilny z większością form wtyczki Surefire do testowania jednostkowego, ale może zmagać się z efektywnym zarządzaniem zależnościami kolejności testów.
3. Ubezpieczać++
Insure++ posiada wiele możliwości testowania, w tym analizę mutacji, dzięki której platforma może dostrzec niejednoznaczności w programie. W odróżnieniu od konwencjonalnego testowania mutacji, Insure++ rezygnuje z generowania wadliwych mutacji i zamiast tego tworzy funkcjonalnie równoważne mutacje, które pasują do kodu źródłowego projektu.
Ma to na celu uniknięcie ukrytych założeń, które mogą nieumyślnie ograniczyć proces testowania i mogą nie odzwierciedlać realistycznych środowisk testowych. Jak sama nazwa wskazuje, platforma jest kompatybilna głównie z programami w języku C++, a każda funkcja jest skalibrowana pod ten język.
4. Jumble
Ta aplikacja specjalizuje się w frameworku JUnit JavaScript, z kompleksowymi wizualnymi wskaźnikami tego, jak kod reaguje na analizę mutacji. Jumble jest platformą open source i działa w obrębie kodu bajtowego aplikacji Java, aby obniżyć czas każdego cyklu testowego.
Podobne aplikacje, które korzystają wyłącznie z kodu źródłowego programu, mogą czasami potrzebować więcej czasu na przeprowadzenie tych kontroli ze względu na ich proces rekompilacji.
Jumble wykorzystuje również heurystykę, aby jeszcze bardziej zoptymalizować testowanie mutacji, dzięki czemu kolejne testy są prostsze.
5. MutPy
MutPy obsługuje testy mutacji dla aplikacji opartych na Pythonie, oferując pełne wsparcie dla mutacji wysokiego rzędu, a także kompleksową analizę pokrycia. Interfejs tego programu jest łatwy w użyciu podczas etapu wyjściowego, który wyraźnie pokazuje użytkownikom każdy istotny szczegół badań mutacji zespołu.
MutPy oferuje wiele opcji na zamówienie dla testerów – pozwalając im skalibrować to oprogramowanie specjalnie do ich wymagań. Platforma wykorzystuje Abstract Syntax Trees, które zapewniają przejrzystą strukturę kodu źródłowego aplikacji, dając testerom większą pewność co do ich mutacji.
Wniosek
Mutacja kodu ma zastosowanie w niemal każdym procesie testowania oprogramowania, oferując szereg wyraźnych korzyści dla firm, które wdrażają tę technikę – zwłaszcza na wcześniejszym etapie zapewniania jakości.
Żadna metodologia nie jest pozbawiona wyzwań; oznacza to, że organizacje muszą mądrze rozważyć zalety analizy mutacyjnej, jednocześnie upewniając się, że pasuje ona do ich zwykłego harmonogramu rozwoju oprogramowania.
Mutacje te dają zespołom testującym szansę na zbadanie własnego podejścia i określenie jego skuteczności w lokalizowaniu i usuwaniu błędów w kodzie źródłowym. Technika ta jest szczególnie kompatybilna z procedurami automatyzacji, pozwalając firmom na walidację oprogramowania, któremu powierzają obsługę swoich kontroli.
Testowanie mutacji oferuje kompleksowy sposób dla zespołów zapewnienia jakości, aby rozwinąć lepsze zrozumienie własnych procesów i oprogramowania, w tym problemów, których w przeciwnym razie nie udałoby się wykryć.
W rezultacie, ważne jest, aby zespoły testujące dokładnie zbadały tę technikę, aby ocenić, czy odpowiada ona potrzebom organizacji – w tym, czy narzędzie mutacji, które wybierają, jest w pełni kompatybilne z ich językiem programowania. Oprogramowanie do automatycznego testowania ZAPTEST może pochwalić się wieloma funkcjami, które pozwalają mu przejść testy mutacyjne, zapewniając zespołom pełne zaufanie do jego możliwości.
Zarówno wersja Free jak i Enterprise oferują wysokiej jakości proces testowania, który z łatwością uwzględnia mutacje kodu.
FAQs i zasoby
1. Najlepsze kursy dotyczące testowania mutacji
Kursy online mogą pomóc początkującym testerom nauczyć się podstaw mutacji kodu lub wzmocnić istniejące wcześniej umiejętności doświadczonych pracowników działu zapewnienia jakości. Ogólne lekcje testowania oprogramowania mogą również oferować wiele korzyści dla testerów. Do najlepszych kursów online dla testerów mutacji należą:
– PluralSight’s 'Mutation Testing in Java with PITest’ przygląda się w szczególności temu, jak zmienić kod w Javie i jak to podejście może wpłynąć na praktyczne procesy testowania oprogramowania.
– Udemy’s „The Complete 2023 Software Testing Bootcamp” to szczególnie aktualny kurs, który ilustruje każdy kluczowy składnik testów oprogramowania, w tym testowanie white-box.
– Alison’s 'Software Testing – Condition Coverage and Mutation Testing Strategies’ jest darmowa i dokładnie bada jak mądrze wdrożyć testy mutacyjne.
– PluralSight 'Unit Testing Fundamentals’ bada korzyści i cechy testów jednostkowych, pomagając studentom zrozumieć dokładny proces pisania silnych testów jednostkowych.
– Udemy’s „Introduction to Unit Testing” jest kolejnym darmowym kursem, który dostarcza jasny podział testów jednostkowych, jak również znaczenie strategii rozwoju sterowanego testami.
2. Jakie jest 5 najlepszych pytań do wywiadu na temat testowania mutacji?
Istnieje szereg pytań, które firmy mogą zadać kandydatom podczas rozmowy kwalifikacyjnej, aby zweryfikować ich doświadczenie lub zrozumienie badania mutacji wraz z jego podstawowymi zasadami. Dzięki temu firma może upewnić się, że zatrudnia wykwalifikowanego testera, który może z łatwością podejść do różnych scenariuszy związanych z mutacjami.
Dokładne pytania różnią się, ale mogą obejmować prośbę o ich własne opinie lub o przykłady ich umiejętności mutacji kodu.
Pięć najlepszych pytań wywiadów dotyczących testowania mutacji to:
– Z jakimi narzędziami do testowania mutacji masz wcześniejsze doświadczenie, jeśli w ogóle? Jakie były główne cechy tego oprogramowania?
– Podczas podejmowania mutacji kodu, jak pracowałbyś, aby zapewnić zdrową równowagę między szybkością i głębokością testowania?
– W jakich sytuacjach analiza mutacji byłaby niemożliwa? Jak skontrolowałbyś procedurę testową w tych scenariuszach?
– Jeśli mutacja wartości zdoła przetrwać proces testowania, jaki byłby twój sposób postępowania, aby zapobiec ponownemu wystąpieniu?
– Jakie informacje zawarłbyś w przypadku testu mutacji, aby zagwarantować, że twoi współpracownicy mają dane, których potrzebują?
3. Najlepsze tutoriale na YouTube dotyczące testowania mutacji
Darmowe samouczki, seminaria internetowe i inne filmy są dostępne w serwisie YouTube, aby pomóc zwiększyć zrozumienie testowania mutacji przez testera. Niektóre z najbardziej pomocnych filmów i serii na ten temat to:
– Software Testing’s 'Mutation Testing for Programs’, który dostarcza praktycznych przykładów jak mutacja kodu pomaga programom, wraz z tym jak pisać dokładne przypadki testowe.
– Devoxx’s 'Mutation Testing: Did my test break my code?”, w którym analizuje się, jak analiza mutacji poprawia ogólne procedury testowania dla wszystkich rodzajów projektów oprogramowania.
– NDC Conferences „Kill All Mutants! Intro to Mutation Testing”, która bada jak zestawy testowe są w stanie skorzystać z mutacji kodu i błędów, które pomaga ona stworzyć.
– GOTO Conferences’ 'Mutation Testing in Python’, która w szczególności bada, jak aplikacje oparte na Pythonie mogą stosować analizę mutacji, aby osiągnąć określone cele testowania.
– Diego Pacheco „Java Mutation Testing With PITest”, który w podobny sposób ilustruje oprogramowanie JavaScript wykorzystujące mutację kodu – ze szczególnym uwzględnieniem programu mutacyjnego PITest.
4. Jak utrzymać testy mutacyjne?
Połączenie analizy mutacji z testami regresyjnymi i innymi długoterminowymi strategiami pozwala firmom zapewnić silny standard zapewnienia jakości nawet po wydaniu.
Kolejne aktualizacje mogą prowadzić do zmian w kodzie, które wymagają dalszych kontroli. Testowanie mutacyjne pokazuje, że oprogramowanie automatyzujące i testerzy są spójni w różnych wersjach tego samego oprogramowania, ponownie uwierzytelniając swoje szczególne podejście.
Nowe funkcje wymagają nowych przypadków testowych, zwłaszcza jeśli te funkcje wchodzą w interakcje z wcześniej istniejącymi.
Dodatkowo, wykorzystanie rozwoju sterowanego testami pozwala członkom zespołu zaplanować długowieczność oprogramowania i przetestować kompatybilność w ramach własnego cyklu rozwoju.