Testy niefunkcjonalne obejmują wszystkie obszary, które nie zostały sprawdzone w testach funkcjonalnych. Testowanie niefunkcjonalne odnosi się do takich atrybutów oprogramowania jak m.in. do wydajność, skalowalność, bezpieczeństwo, pielęgnowalność czy kompatybilność. Testy niefunkcjonalne powinny być jak najbardziej mierzalne.
Testy niefunkcjonalne mogą być przeprowadzone przy użyciu dedykowanych rozwiązań i narzędzi. To testowanie jest ważnym rodzajem testowania oprogramowania. Testowanie danego oprogramowania nie powinno być kończone po wykonaniu sprawdzenia funkcjonalnego. By dana aplikacja mogła funkcjonować z sukcesem, należy wykonać zadania z testowania funkcjonalnego, jak i niefunkcjonalnego. Oba aspekty wpływają na zadowolenie klienta, i tylko spełnienie ich obu, daje gwarancję zadowolenia.
Kilka najważniejszych cech testów niefunkcjonalnych
•Testy niefunkcjonalne można wykonywać na wszystkich poziomach testów
•Testowanie niefunkcjonalne uwzględnia charakterystyki, atrybuty oprogramowania (np. wydajność)
•Powinno ono odbywać się na jak najwcześniejszym etapie
•Do określenie warunków i przypadków testowych możemy użyć technik czarnoskrzynkowych
•Staranność testowania niefunkcjonalnego można zmierzyć na podstawie pokrycia niefunkcjonalnego (stopień, w jakim został przetestowany określony typ elementu niefunkcjonalnego, wyrażony jako procent elementów danego typu pokrytych przez testy)
•Do projektowania i wykonywania testów niefunkcjonalnych mogą być potrzebne specjalistyczne umiejętności lub specjalistyczna wiedza (np. słabe punkty zabezpieczeń związanych z określonymi językami programowania, znajomość loadbalancingu, wiedza architektoniczna )
•Znajomość konkretnej grupy użytkowników
Typy testów niefunkcjonalnych
Wśród testów niefunkcjonalnych wyróżniamy poniższe rodzaje:
– test wydajności – sprawdza jak szybko aplikacja działa w różnych sytuacjach.
– testowanie obciążenia – zadaniem jest sprawdzenie zdolności aplikacji do prawidłowego działania w szczytowych warunkach.
– testowanie zgodności – pozwala ono sprawdzić, czy dana aplikacja, witryna internetowa lub system są odpowiednie dla różnych środowisk. Pod uwagę brane są przeglądarki internetowe, bazy danych, urządzenia mobilne. Nie pomija się także różnych wersji i konfiguracji.
– test użyteczności – określa, jak łatwe i intuicyjne jest korzystanie z oprogramowania.
– test przeciążeniowy – w specjalnie stworzonych trudnych warunkach (poza ustalona granicą) sprawdzane jest działanie systemu.
– testowanie objętości – sprawdzenie wydajności danej aplikacji pod obciążeniem dużą ilością danych.
– testowanie bezpieczeństwa – weryfikacja oprogramowania pod względem nieuprawnionego dostępu osób trzecich, utratą, bądź wyciekiem danych
– testowanie niezawodności – jedna z procedur testowania oprogramowania sprawdzająca poprawne działanie aplikacji. Określone są konkretne warunki oraz czas, w którym ma to się dziać. Weryfikacja, czy oprogramowanie może poprawnie działać w trybie ciągłym.
– testy wytrzymałościowe – ich zadaniem jest ocenienie w jaki sposób aplikacja radzi sobie z określonym obciążeniem przez dłuższy czas. Dzięki temu można dowiedzieć się, czy uda jej się utrzymać duże obciążenie bez powodowania opóźnień.
– testowanie dokumentacji – sprawdzenie, czy artefakty wytworzone przed, w trakcie i po testowaniu produktu są prawdziwe.
– testowanie lokalizacji – upewnienie się odnośnie tego, czy dany projekt jest atrakcyjny dla konkretnej kultury lub regionu.
– testy bazowe – jej celem jest wyznaczanie celów wydajnościowych i śledzenie postępów w czasie.
– testowanie przenośności – sprawdza, w jaki sposób aplikacja przenosi się z jednego do innego środowiska, czy infrastruktury.
Parametry testów niefunkcjonalnych
– bezpieczeństwo – jego zadaniem jest określenie sposobu ochrony systemu przed zaplanowanymi i nieprzewidzianymi atakami ze źródeł wewnętrznych i zewnętrznych. Testy przeprowadzane są w celu sprawdzenia poprawności tego parametru.
– niezawodność – określenie poziomu, do którego każdy system konsekwentnie i bez błędów realizuje wymagane czynności.
– dostępność – określa, na ile użytkownik może polegać na systemie w czasie jego działania.
– użyteczność – sprawdzenie wygody, z jaką dany użytkownik może korzystać z oprogramowania
– skalowalność – zdolność aplikacji do zwiększenia zdolności przetwarzania w związku z zaspokojeniem rosnącego popytu.
– wydajność – określa stopień, w jakim dana aplikacja radzi sobie z wydajnością, ilością i czasem odpowiedzi.
– elastyczność – służy do tego, by sprawdzić, jak szybko i łatwo dany program może działać w różnych konfiguracjach programowych oraz sprzętowych.
– re-używalność (możliwość ponownego wykorzystania) – jest związana z wykorzystaniem danej części, która może mieć zastosowanie także w innej aplikacji.
Cele testów niefunkcjonalnych
Przeprowadzenie testów niefunkcjonalnych ma na celu zwiększenie użyteczności, wydajności, łatwości konserwacji oraz przenośności produktu. Ich zadaniem jest zmniejszenie ryzyka produkcyjnego związanego z niefunkcjonalnymi aspektami danego produktu. Dzięki nim można także zoptymalizować sposób instalacji, konfiguracji, wykonywania, zarządzania oraz monitorowania produktu. Można gromadzić i prowadzić pomiary, metryki w związku z wewnętrznymi badaniami i rozwojem. Testy niefunkcjonalne pozwalają także na poprawienie i poszerzenie wiedzy na temat zachowania danego produktu oraz stosowanych technologii.
Elementy na liście kontrolnej testów niefunkcjonalnych
Na liście kontrolnej należy sprawdzić następujące aspekty. Są nimi:
– czas odpowiedzi ,
– przepustowość,
– skonfigurowane środowisko,
– czas procesu,
– interoperacyjność,
– czas ETL, czyli czas potrzebny na wyodrębnienie, przekształcenie i załadowanie danych z jednej bazy danych do drugiej.
– weryfikacja rosnącego obciążenia aplikacji,
– uwierzytelnianie – możliwość zalogowania się będzie przysługiwała tylko prawdziwemu użytkownikowi.
– autoryzacja – dany użytkownik powinien mieć możliwość zalogowania się tylko do tych modułów, do których otrzymał dostęp lub ma uprawnienia.
– hasło – powinno być zweryfikowane i zgodne z wymaganiami. Są to: długość, znaki specjalne, cyfry.
– limit czasu – dotyczy sytuacji, w której aplikacja jest nieaktywna.
– kopia zapasowa danych – powinna być wykonywana w określonym czasie. Warto zadbać o jej skopiowanie do zabezpieczonej lokalizacji.
– linki wewnętrzne – w przypadku aplikacji internetowej nie powinny być one dostępne, jeśli zostaną umieszczone bezpośrednio w przeglądarce.
– dokumentacja użytkownika oraz systemu,
– dokumenty do celów szkoleniowych.
Należy pamiętać, by cała komunikacja była zaszyfrowana.
Zanim przystąpisz do wykonywania testów niefunkcjonalnych, należy prawidłowo zaplanować strategię testowania. Nie można pozwolić sobie na lekceważenie testów niefunkcjonalnych, ponieważ odgrywają one ważną rolę w sukcesie aplikacji. Ich zadaniem jest także budowanie pozytywnej relacji z klientem. Bez wykonania testów niefunkcjonalnych całe testowanie nie może zostać uznane za kompletne.
Autor: Tomasz Stelmach
Nie rozumiem dlaczego nazywają się „niefunkcjonalne”?…