W tym wpisie zbiorę moją aktualną wiedzę na temat automatycznego testowania kodu.
Po pierwsze, aplikację możemy automatycznie testować na różnych poziomach i każdy z tych poziomów ma swoje „wady” i „zalety”. Dobrym wprowadzeniem to tematu jest prezentacja Neala Forda – „Testing the entire stack” .
Na warsztatach prowadzonych przez autorów książki Growing Object-Oriented Software Guided by Tests spotkałem się po raz pierwszy z koncepcją architektury „The Ports & Adapters” . Na podstawie tej architektury dobrze można pokazać, na którym poziomie co testujemy.
I tak na przykład testy jednostkowe służą do testowania pojedynczych klas, z których składa się nasz model biznesowy (Aplikacja, w tym artykule), testy akceptacyjne testują model biznesowy, testy systemowe testują cały system za pomocą zewnętrznych interfejsów (GUI, Web service), a testy integracyjne testują integrację naszego kodu, z kodem, którego nie możemy zmienić (np. testowanie adapteru używającego biblioteki służącej do pracowania na bazie danych).

