Idź do:
Czym jest piramida testów?
Według słownika ISTQB piramida testów to „graficzny model reprezentujący relacje między ilością testów a poziomem testów, z większą ilością testów dla niższych poziomów i mniejszą dla wyższych”.
Upraszczając, piramida testów pokazuje nam, jakie powinny być proporcje pomiędzy różnymi rodzajami testów, gdzie podstawą piramidy powinny być testy szybsze w wykonaniu, bardziej stabilne, a co za tym idzie – tańsze. Na wyższych poziomach znajdować się powinny testy, których przygotowanie i wykonanie zajmuje więcej czasu, są mniej stabilne i angażują w większym stopniu pracę ludzką.
Poziomy testów
Testy jednostkowe
Testy jednostkowe (unit tests) testują pojedyncze, najmniejsze elementy, np. metody, klasy w programie. Najczęściej są one tworzone przez programistów już na etapie pisania kolejnych części kodu. Testy jednostkowe wykonuje się szybko i są najczęściej przeprowadzanym typem testów (np. podczas budowania projektu). Są one bardzo ważne w projekcie, ponieważ najszybciej dostarczają feedbacku o tym, czy dana funkcja zwraca prawidłowy wynik. Dlatego też jest ich najwięcej i tworzą fundament piramidy.
- sprawdzają pojedyncze elementy
- szybkie
- łatwe w utrzymaniu
- niskie koszty utrzymania
Testy integracyjne
Testy integracyjne (integration tests) sprawdzają, czy poszczególne moduły, serwisy lub systemy działają prawidłowo razem, testują interfejsy i interakcje pomiędzy tymi elementami. Przeprowadzanie takich testów jest już bardziej wymagające, a co za tym idzie, kosztowne – wymaga bowiem uruchomienia kilku modułów aplikacji lub nawet systemów jednocześnie.
- sprawdzają kilka modułów lub systemów
- bardziej czasochłonne niż testy jednostkowe
- wyższe koszty utrzymania niż testy jednostkowe
Testy E2E
Testy E2E to testy, które naśladują zachowanie użytkownika końcowego aplikacji. Tester wciela się w rolę użytkownika końcowego i przechodzi ścieżki, jakimi mógłby się on poruszać. Testują całą funkcjonalność od początku do końca (end-to-end) i wykonywane są w docelowym środowisku produkcyjnym. Sprawdzają, czy wszystkie systemy i ich elementy wspólnie działają poprawnie i nie posiadają błędów. Testy E2E są najbardziej czasochłonne, a co za tym idzie, najdroższe, dlatego w piramidzie znajdują się na samym szczycie.
- sprawdzają całościowe działanie systemu
- czasochłonne
- trudniejsze i kosztowne w utrzymaniu
Koszt testowania – czyli jak testować, żeby nie przepłacać
Czym jest wspomniany wcześniej koszt testowania? Ujmując najprościej – czas to pieniądz, a im więcej osób jest zaangażowanych w testowanie, im więcej czasu poświęcone jest na przeprowadzenie testów, tym bardziej wzrasta całkowity koszt projektu. Dodatkowo, im później wykrywane są błędy (na kolejnych poziomach testowania), tym później developer otrzyma tę informację i tym później zajmie się ich naprawą.
Przyczyny defektów zgłoszonych dopiero podczas testów np. E2E są dużo trudniejsze do namierzenia niż tych wykrytych już na etapie testów jednostkowych. To oczywiście w ostatecznym rozrachunku znów wydłuży czas, więc zwiększy też koszty projektu. Dzięki stosowaniu się do metody piramidy testów cały proces testowania oprogramowania zaczyna się na wczesnych etapach powstawania aplikacji i na tych etapach testów jest najwięcej. Błędy znalezione podczas testów jednostkowych są bardzo łatwe do namierzenia, a to przyspiesza czas ich naprawy. Takie podejście sprawia, że testy nie są tylko kosztem, ale przynoszą realne zyski.
Podsumowanie
Zatrudnienie testera wiąże się z dodatkowym budżetem – jednak w ten sposób inwestujemy w projekt na naszych własnych zasadach zdefiniowanych w kontrakcie. W przypadku wystąpienia awarii wynikającej ze zbyt późnego wykrycia defektów, panem naszego budżetu (i czasu) staje się… rozwijany system, a my ponosimy nieprzewidziane koszty naprawy, które mogą być nawet kilkadziesiąt razy wyższe niż koszty testów. Aby testowanie przyniosło zysk, testy oprogramowania warto zacząć możliwie jak najszybciej – tu nieocenioną pomocą jest metoda piramidy testów, która pomaga odpowiednio rozplanować testy na poszczególnych poziomach.
Przeczytaj także: