Testy oprogramowania: 5 kroków, aby robić to lepiej

W parze z oprogramowaniem zawsze powinny iść testy, dlatego warto wiedzieć jak pisać je umiejętnie i zgodnie ze szkołą. Z dzisiejszego wpisu dowiesz się z jakich technik warto skorzystać, aby pisać poprawne testy oprogramowania i czerpać z tego satysfakcję.

Słowem wstępu

Chyba każdy z nas zdaje sobie sprawę (a jeśli nie, to powinien sobie zdać), że testowanie wytworzonego kodu, to po prostu must have. Nie chcemy przecież tracić czasu i pieniędzy na naprawę naszych błędów w środowiskach produkcyjnych. Dlatego właśnie, jako programiści, tworzymy testy jednostkowe, integracyjne czy end to end dla naszych rozwiązań. Każdy z tych rodzajów testów dotyka innych warstw i ma również odrębne zadanie. Dodatkowo, fajnie jest wiedzieć, kiedy test konkretnego typu sprawdzi się najlepiej. Mając jeszcze wiedzę o tym, jak zwinnie testy wytwarzać, możemy bardzo szybko i niskim kosztem pisać wysokiej jakości przetestowane oprogramowanie.

testy oprogramowania

Mam dziś dla Ciebie pięć zaleceń, jak pisać lepsze testy, jako programista. Zapraszam do lektury.

Krok 1: piramida testów

Pierwszym krokiem do pisania lepszych testów jest zaznajomienie się z koncepcją piramidy testów. Zagadnienie to, szeroko opisuje, których testów w systemie powinniśmy mieć najwięcej, a których najmniej. Piramida testów bierze pod uwagę takie aspekty jak: czas potrzebny na napisanie oraz utrzymanie, koszty uruchomienia, a także szybkość wykonywania się samych testów. Podstawowa wersja tej koncepcji zakłada, iż w naszym systemie powinno znajdować się najwięcej testów jednostkowych, trochę mniej integracyjnych, a najmniej e2e. Nie jest to jednak złota zasada, ponieważ odmian piramidy jest kilka, możesz dowiedzieć się o nich z tego wpisu: kiedy, ile i jakie testy pisać.

Krok 2: rozróżnianie podstawowych rodzajów testów

Kolejnym, ważnym elementem w kontekście tworzenia lepszych testów jest znajomość ich podstawowych rodzajów. Przyda się wiedza, jak tworzyć optymalny test każdego typu, a także kiedy tak naprawdę go użyć. Jak już wiesz z poprzedniego punktu, wyróżniamy trzy główne typy testów, które piszą programiści, są to: unity, integracyjne oraz e2e. Warto dowiedzieć się, jak każdy z nich w praktyce powinien wyglądać.

Krok 3: stosowanie dublerów w testach

Niejednokrotnie zachodzi potrzeba przetestowania tylko fragmentu pewnej funkcjonalności. Często okazuje się jednak, że jest ona nierozerwalną częścią całości, a my chcielibyśmy pominąć sprawdzanie pozostałych jej elementów. W tym celu możemy zastosować dublery, które dynamicznie, bądź ręcznie mogą zostać wykorzystane do wymiany wybranych fragmentów logiki. Trzecim zaleceniem z dzisiejszego wpisu, jest wprowadzenie właśnie dublerów do swoich testów. Wyróżniamy kilka ich rodzajów: mock, stub, spy oraz inne. Jeśli chcesz dowiedzieć się o nich więcej, to koniecznie sprawdź ten wpis: stosowanie dubler-ów w testach.

Krok 4: metody testowe z AAA

Nie wymaganą, lecz istotną kwestią, jest standaryzacja metod testowych. Metodyk standaryzacji kodu testowego jest kilka, a wyróżnić możemy np.: Given, When, Then, a także Arrange, Act, Assert. Pozwalają one na tworzenie czytelnej struktury w naszych testach, a to ułatwia ich pisanie oraz czytanie. Chodzi w nich o to, aby kod testowy w naszej metodzie był podzielony na sekcje, w których realizujemy poszczególne typy zadań. Przykładowo dla AAA, nasza metoda testowa będzie posiadać trzy segmenty. Pierwszy, aby przygotować wszystko do wykonania naszego testu, drugi aby podjąć odpowiednie akcje, a trzecii, w celu sprawdzenia wyników uruchomionej logiki. W jednym z poprzednich wpisów pokazałem w praktyce użycie metodyki Arrange, Act, Assert.

Krok 5: testy oprogramowania z TDD

Ostatni krok do bycia master guru w pisaniu testów jest nauka ich tworzenia w metodyce TDD. Wielu osobom Test Driven Development nie przypada do gustu, ponieważ wydaje się to na pierwszy rzut oka bezsensowne. Chodzi w nim bowiem o to, aby najpierw pisać test, a dopiero później funkcjonalność, którą ten test ma sprawdzać. Takie podejście ma jednak sporo zalet, m. in.: test jest żywą specyfikacją logiki, którą tworzymy, a także posiadanie kodu, który jest tak naprawdę przetestowany już na etapie założeń. Nauka efektywnego stosowania TDD może być czasochłonna, jednak jeśli już ją opanujesz, to zwiększysz swoją wydajność dostarczania solidnie przetestowanego kodu. Zachęcam do dalszej lektury Test Driven Development.

Podsumowanie

  • Każdy programista powinien umiejętnie testować swoje rozwiązania.
  • Kluczowe do pisania testów oprogramowania jest znajomość ich podstawowych rodzajów oraz przypadków użycia.
  • Warto poświęcić czas na naukę efektywnego tworzenia testów z podejściem TDD.
Autor wpisu

blog@orbisbit.com

Komentarze

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Sprawdź również