Jak zapewniamy jakość

Testy automatyczne

Oprogramowanie testujemy na kilku poziomach. Używamy testów jednostkowych do testowania niewielkich fragmentów kodu. Jednak sprawdzenie działania samych klas to zbyt mało, szczególnie jeśli ściśle zależą one od danych pochodzących z kontenera aplikacyjnego. Testowanie systemu w sztucznym środowisku zawsze pozostawia otwartą furtkę dla błędów, które można zaobserwować dopiero w normalnych warunkach użytkowania programu. Dlatego poza testami jednostkowymi tworzymy też testy integracyjne korzystające z Arquilliana i uruchamiane bezpośrednio w docelowym kontenerze.

Nasz zespół wniósł znaczący wkład w rozwój Arquilliana i został doceniony przez środowisko skupione wokół tej technologii.

Poza testami jednostkowymi i integracyjnymi, które sprawdzają funkcjonowanie wnętrza aplikacji, tworzymy też testy operujące bezpośrednio na interfejsie użytkownika. Używamy do tego takich narzędzi, jak JSFUnit, HtmlUnit, Warp, Graphene oraz Selenium.



Podczas pisania testów automatycznych niezwykle cenną informację stanowią dane o stopniu pokrycia przez nie kodu. Współczynnik ten mierzymy przy pomocy Jacoco.

Poza testami, stosujemy też ścisłe konwencje, gwarantujące, że nasz kod jest czytelny i łatwy w utrzymaniu. Ich przestrzegania kontrolują takie narzędzia jak Checkstyle, PMD i Findbugs.

Większa część procesu zapewnienia jakości jest zautomatyzowana, dzięki wykorzystaniu Jenkinsa zainstalowanego na naszym serwerze integracyjnym, który sprawdza poprawność aplikacji po każdej aktualizacji kodu.

Testy ręczne

Na koniec każdej iteracji aktualizujemy wersję aplikacji znajdującą się na serwerze beta, a następnie przeprowadzamy na niej dokładne, ręczne testy, sprawdzając ostatnio dodane lub zmodyfikowane funkcjonalności. Testy ręczne są konieczne w celu sprawdzenia czy udało się zrealizować wszystkie wymagania klienta oraz czy implementacja w pełni pokrywa się z dokumentacją projektu. W czasie ich wykonywania badamy też sposób w jaki aplikacja zachowuje się w różnych przeglądarkach, systemach operacyjnych i na różnych urządzeniach.

Regularne przeglądy kodu

Nawet jeżeli program nie zawiera żadnych widocznych błędów i zaspokaja wymagania klienta, nie znaczy to że jego kod jest idealny. Nasze aplikacje są regularnie sprawdzane przez najbardziej doświadczonych członków zespołu, w celu wykrycia możliwych problemów z wydajnością lub niezgodności kodu z wewnątrzfirmowymi konwencjami. W ten sposób zyskujemy pewność co do jakości i łatwości utrzymania oraz przyszłej rozbudowy naszych rozwiązań.