Wojciech Gola | Quality Assurance | 05.07.2021
Jednym z tematów, który budzi wiele emocji, są koszty związane z testami oprogramowania. I choć mogłoby się wydawać, że „testowanie na produkcji” stało się już synonimem bylejakości, to wciąż jeszcze można spotkać się z podejściem negującym potrzebę zatrudniania testerów oprogramowania. Testy oprogramowania mogą przynieść zbędny koszt – ale tylko wtedy, jeśli są wykonane zbyt późno, są niestabilne, złej jakości, lub źle rozplanowane w czasie. Jak odpowiednio dobrać proporcje pomiędzy poszczególnymi testami na określonych poziomach, by uniknąć zbędnych kosztów naprawy rozwijanego oprogramowania, a co więcej – sprawić, by testy przyniosły zysk? Z pomocą przychodzi piramida testów.
Idź do:
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ą.
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.
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.
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.
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.
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:
Dodaj komentarz: