Piramida testów – czyli co, kiedy i jak testować, żeby testy przyniosły zysk?

Wojciech Gola | Rozwój oprogramowania | 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.

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ą.

piramida testów

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

jpro 2022.08.02 cover - Piramida testów – czyli co, kiedy i jak testować, żeby testy przyniosły zysk?

Test regresji – strata czasu czy must have w projekcie?

Przeczytaj artykuł

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: