Automatyzacja testowania aplikacji – Web fuzzing i WebAii™
Kolejne spotkanie działu technologicznego Empathy poświęcone było dwóm zagadnieniom związanym z automatyzacją procesów testowania aplikacji – Web fuzzingiem oraz WebAii™ (darmowemu zestawowi bibliotek .NET ułatwiającym m.in. tworzenie automatycznych testów). Tym razem spotkanie poprowadził jeden z testerów, Beata „Beta” Frączek. Poniżej krótkie streszczenie, a na końcu slideshare z prezentacją.
Fuzzing?
Wypada zacząć do wyjaśnienia samego terminu „fuzzing”. Jest to metoda testowania oprogramowania mająca na celu wykrycie luk w bezpieczeństwie oraz wskazanie nieprzewidzianych (nieprawidłowych) reakcji programu poprzez wprowadzanie losowych, automatycznie wygenerowanych danych. Fuzzing polega na przekazaniu do testowanego programu wadliwych danych (złe formatowanie, niepoprawna długość itp.), które, gdy zostaną zaakceptowane przez aplikację, spowodują nieprzewidzianą reakcję programu (zawieszenie się aplikacji, wyświetlenie błędu itd.). Wynikiem mogą być przykładowe błędy bazy danych, wywołania skryptów czy też zwracanie struktury plików.
Fuzzing NIE ma nic wspólnego z testami: jednostkowymi, funkcjonalnymi, integracyjnymi, wydajnościowymi. Jest zupełnie odrębną techniką testowania klasyfikowaną jako testy automatyczne lub częściowo automatyczne.
Kiedy szczególnie warto wziąć pod uwagę użycie fuzzingu? Gdy zakładamy testowanie aplikacji metodą blackbox (tj. bez dostępu do kodu źródłowego), zależy nam na automatyzacji testu oraz chcemy skupić się na walidacji danych wejściowych.
Fuzzing a aplikacje webowe
Fuzzing znajduje zastosowanie w naprawdę wielu przypadkach, ale dla nas najważniejszym jest testowanie aplikacji webowych. Co ważne, wraz ze wzrostem popularności tego typu aplikacji, zwiększa się również ilość potencjalnych zagrożeń.
Aktualnie można wyróżnić kilka głównych typów błędów, które są wyjątkowo niebezpieczne a prawdopodobieństwo ich wystąpienia w testowanych aplikacjach jest wysokie, m.in. XSS, CSRF, injection bugs (dłuższa lista w prezentacji). Za pomocą fuzzingu możliwe jest wykrycie większości z nich. Niestety luki w postaci błędów logicznych na chwilę obecną są praktycznie niemożliwe do wykrycia za pomocą fuzzingu.
WebAii™ Automation Framework
Drugim poruszonym podczas spotkania tematem była biblioteka .NET – WebAii™.
Te całkowicie darmowa biblioteka ułatwiająca tworzenie automatycznych testów uruchamianych w przeglądarkach Internet Explorer i Firefox. Dostarczają również rozbudowany zestaw narzędzi do tworzenia asercji dla stron WWW związanych ze sprawdzaniem dostępności i widoczności kontrolek HTML/ASP.NET, śledzenia renderingu elementów strony, wsparciem dla testów struktury DOM oraz JavaScript czy też widoków zależnych od kaskadowego arkusza stylów (CSS). Sercem środowiska WebAii jest obiekt manager, który odpowiedzialny jest m.in. za uruchomienie przeglądarki, połączenie z klientem oraz sterowanie procesem testów.

Wykorzystanie Visual Studio do automatyzacji testów.
To jednak tylko ułamek możliwości frameworku WebAii. Umożliwia on bowiem m.in. testowanie tzw. Rich Internet Applications i elementów aplikacji tworzonych w Silverlight, AJAX, ASP.NET, a nawet dynamicznych elementów typu przeciągnij-i-upuść.
Na koniec małe podsumowanie. Testowanie części FrontEndowej aplikacji wciąż jest dość problematyczne, a zarówno rynek komercyjny, jak i opensource-owy nadal pozostaje ubogi, jeśli chodzi o wybór narzędzi umożliwiających tworzenia automatycznych testów. Tym bardziej warto zapoznać się z frameworkiem WebAii.
Tagi: Aplikacje internetowe, Beata Frączek, Empathy od kuchni, Testowanie, web fuzzing, WebAii
