Słownik ISTQB® definiuje smoke test jako "zestaw testów obejmujący główną funkcjonalność modułu lub systemu sprawdzający, czy działa ona poprawnie przed rozpoczęciem planowanych testów". Ten sam słownik podaje definicję sanity test jako synonim testów dymnych, jednak w praktyce te dwa rodzaje testowania różnią się od siebie. Na czym polegają, czego dotyczą i gdzie leży różnica?
Smoke test – testy dymne
Test dymny wykonywany jest w wstępnych etapach testowania, na początkowych, nie do końca stabilnych wersjach oprogramowania. Jego nazwa nawiązuje do pierwszych testów sprzętów elektrycznych, które polegały na podłączeniu urządzenia do prądu, włączenia go i obserwowania, czy nie wydobywa się z niego dym. Głównym celem jest zweryfikowanie poprawności działania wszystkich podstawowych funkcji oprogramowania i to właśnie dzięki niemu jesteśmy w stanie w ogóle przejść do dalszego realizowania projektu. Wyniki smoke testingu pozwolą zorientować się, co w testowanym produkcie działa, a co nie, a przez to możliwe będzie ewentualne odrzucenie aplikacji z defektami, by nie tracić czasu na testowanie uszkodzonego oprogramowania.
Proces smoke testingu nie musi być bardzo rozbudowany i dokładny. Chodzi w nim o to, aby sprawdzić tylko czy krytyczne funkcjonalności systemu działają prawidłowo; szczegółami zajmą się testy na późniejszych etapach.
Sanity test – testy kondycji
Test kondycji wykonywany jest po wprowadzeniu poprawek i aktualizacji oprogramowania. Dzięki nim możliwe jest upewnienie się, że wcześniejsze błędy zostały naprawione i nie pojawiają się żadne dalsze problemy spowodowane wprowadzonymi zmianami. Celem sanity testing nie jest weryfikacja nowej funkcjonalności, a tylko ustalenie, czy działa ona zgodnie z założeniami; jeśli tak nie jest, poprawki zostają odrzucone, co pozwala zaoszczędzić czas i koszty, które zostałyby przeznaczone na dalsze testy.
Różnice
Chociaż te dwa typy testów są ze sobą związane i utożsamiane, dzieli je kilka istotnych różnic. Testy dymne mają głównie za zadanie odpowiedzieć na pytanie "Czy aplikację da się w ogóle uruchomić?", z kolei testy kondycji sprawdzają "Czy nowa funkcja działa poprawnie?".
Pozostałe różnice można opisać w następujący sposób:
Smoke test | Sanity test |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Podsumowanie
Smoke testy to testy proste, wykonywane w początkowej fazie tworzenia oprogramowania, mające na celu znalezienie krytycznych dla jego działania błędów. Potwierdzają one, że aplikacja działa. Sanity testy to testy już bardziej zaawansowane, wykonywane po wprowadzeniu aktualizacji i poprawek, dzięki którym wiemy, że aplikacja działa w poprawnie i w sposób zgodny ze wcześniejszymi założeniami.
Obydwa typy testów są sposobem na uniknięcie marnowania czasu i wysiłku poprzez szybkie określenie, czy aplikacja nie jest zbyt wadliwa, aby zasługiwać na dalsze zaawansowane, rygorystyczne testy.