Wydajne testowanie

Coraz mniej projektów i przedsięwzięć biznesowych, zwłaszcza kluczowych dla działalności firmy, odbywa się bez wykorzystania technologii IT. Wysokie koszty ewentualnych błędów mogą być bardzo dotkliwe. Taniej wychodzi staranne testowanie jakości tworzonego oprogramowania.

Świadomość tematu jest niska. Testowanie powstających aplikacji to kluczowa czynność, choć proces ten – jako odrębny etap inżynierii oprogramowania – często niknie po stronie bieżących prac programistycznych.

Po co testować oprogramowanie? Najprościej rzecz ujmując, aby właściwie zrealizować wytyczne nakreślone na etapie inżynierii wymagań, poprzedzonej rzetelną analizą biznesową, określającą potrzeby i cele, jakie chce osiągnąć przedsiębiorstwo. Na ich podstawie określa się wymagania stawiane przed tworzonym oprogramowaniem. Następnie projektowany program testuje się na różnych etapach pracy, aby sprawdzić, czy spełnia opisane wcześniej wymagania i jest wydajny.

Reguła 1:10:100

O tym, jak doniosłe znaczenie ma testowanie oprogramowania, świadczy tzw. reguła 1:10:100, na polskim gruncie spopularyzowana przez założyciela portalu testerzy.pl Radosława Smilgina. Zgodnie z regułą koszt usunięcia defektów w oprogramowaniu na etapie specyfikacji i projektowania jest najniższy. Później, na etapie testowania, rośnie 10-krotnie, a po dostarczeniu oprogramowania klientowi ewentualna naprawa będzie 100 razy droższa niż na początku.

To oczywiście szacunki oparte na uśrednionych danych – programistom może sprzyjać szczęście, a powstający program pozbawiony będzie wad. Jednak z perspektywy biznesu takie założenie może okazać się fatalne w skutkach. Poleganie na szczęściu trudno pogodzić ze świadomą polityką zarządzania ryzykiem.

Testowanie wszyte w proces realizacji

Testowanie aplikacji powinno być przynajmniej kilkustopniowym procesem podejmującym kwestie, takie jak: studium wykonalności, sprawdzanie architektury i bazowych funkcji oprogramowania, a także weryfikacja jakości kodu. Niezbędne są testy strukturalne, mające na celu sprawdzenie aplikacji od strony działania kodu, jak również funkcjonalne, w szczególności wykonywane przez osoby niezaangażowane bezpośrednio w proces produkcji programu, np. przyszłych użytkowników czy profesjonalnych testerów.

Podstawowym elementem dobrych praktyk w zakresie testowania oprogramowania są tzw. testy dymne (smoke tests). Pozwalają sprawdzić, czy projektowana aplikacja spełnia swoje fundamentalne zadania.

Automatyka testów w optyce korzyści biznesowych

Oczywiste jest, że nawet najbardziej profesjonalni i doświadczeni testerzy nie wyłapią wszystkich luk w sprawdzanym oprogramowaniu. Na szczęście, z pomocą przychodzi wsparcie ze strony IT – narzędzia do automatyzacji testów. Rola aplikacji testowych wzrasta dzięki ich poprawiającej się jakości, a także z racji na popularyzację zwinnych metodyk pracy.

Jakie mogą być zastosowania automatyzacji testów? Mogą one posłużyć np. do regresywnego sprawdzania funkcjonalności oprogramowania po kolejnych wprowadzanych do niego zmianach, testowania ścieżek działania aplikacji, czy też badania jej stabilności i szybkości działania. Automatyzacja może dotyczyć całego przekroju zagadnień – od wspomnianego regresyjnego testowania podstawowych funkcji programu aż po symulowanie testów funkcjonalnych. Automatyzacja testów funkcjonalnych wspomaga pracę testerów w upilnowaniu prostych, odtwarzalnych procesów, które stanowią kłopot z racji na rutynę bądź konieczność wykonywania jednakowego zestawu działań. Automatyzacja pozwoli nie tylko na przeprowadzenie znacznie większej liczby testów, ale i zapewni utrzymanie ich jakości. „Po pierwsze, testy automatyczne mogą weryfikować funkcjonowanie systemów bezustannie. Gotowy automat jest w stanie klikać po interfejsie aplikacji tak samo jak człowiek, wykonując to jednak za każdym razem z taką samą precyzją – nie nużąc się. Po drugie, może to robić bardzo szybko na wielu urządzeniach, w wielu różnych konfiguracjach na raz. Po trzecie wreszcie, automatyka testów minimalizuje nakład odtwórczej pracy testerów, co przekłada się na redukcję kosztów i ryzyka ludzkiej pomyłki” – podsumowuje Michał Mincberg, menedżer jakości w firmie Quallab.

Rola automatyzacji testów będzie wzrastać wraz ze zwiększającą się liczbą cross-platformowych aplikacji, koniecznością integracji szeregów systemów między sobą oraz naciskiem biznesu na wydajność aplikacji. W coraz bardziej definiowanej programowo rzeczywistości jeszcze do niedawna akceptowalne błędy oznaczać będą odpływ klientów na rzecz bardziej stabilnych platform.


TOP 200