Co to jest testowanie niefunkcjonalne?
W obszarze Uruchamianie testów funkcjonalnych w usłudze Azure Pipelines do potoku dodano testy interfejsu użytkownika Selenium. Testy interfejsu użytkownika są formą testowania funkcjonalnego. W tej części zapoznasz się z rodzajami niefunkcyjnych testów, które można uruchomić w potoku.
Zespół najpierw definiuje niefunkcjonalne testy. Mówią o niektórych typach tych testów. Następnie decydują się na test niefunkcjonalny, aby dodać go do potoku.
Jak testy niefunkcjonalne są porównywane z testami funkcjonalnymi?
W obszarze Uruchamianie testów funkcjonalnych w usłudze Azure Pipelines zdefiniowaliśmy testy funkcjonalne i testy niefunkcjonalne.
Krótko mówiąc, testy funkcjonalne sprawdzają, czy każda funkcja oprogramowania wykonuje to, co powinno. Innymi słowy, testy funkcjonalne weryfikują funkcjonalność aplikacji.
Testy niefunkcjonalne sprawdzają niefunkcjonalne aspekty aplikacji, takie jak wydajność i niezawodność. Można również uruchamiać niefunkcjonalne testy na systemach, które nie są aplikacjami, takimi jak składniki infrastruktury. Jednym z przykładów niefunkcjonalnego testu jest określenie, ile osób może jednocześnie zalogować się do aplikacji bez powodowania problemu, takiego jak wolniejsze czasy odpowiedzi.
Na przykład w witrynie space game test funkcjonalny może sprawdzić, czy ranking jest poprawnie wyświetlany i czy wyświetla poprawne rekordy, gdy użytkownik wybierze filtr. Test niefunkcjonalny może sprawdzić, czy filtrowanie rankingu kończy się w czasie krótszym niż jedną sekundę, nawet jeśli wielu użytkowników łączy się z witryną internetową w tym samym czasie.
Testowanie niefunkcjonalne zawsze testuje coś, co jest wymierne. Celem jest ulepszenie produktu. Można to zrobić, na przykład, poprawiając sposób, w jaki aplikacja korzysta z zasobów lub skracając czas odpowiedzi, gdy wielu klientów korzysta z niej jednocześnie. Oto niektóre pytania, na które niefunkcjonalne testy mogą odpowiedzieć:
- Jak aplikacja działa w normalnych okolicznościach?
- Jak aplikacja działa, gdy wielu użytkowników loguje się jednocześnie?
- Jak bezpieczna jest aplikacja?
Jakiego rodzaju testy niefunkcjonalne można uruchomić?
Istnieje wiele rodzajów testów niefunkcjonalnych. Wiele z nich pasuje do szerokiej kategorii testów wydajnościowych i testowania zabezpieczeń.
Testowanie wydajności
Celem testowania wydajnościowego jest zwiększenie szybkości, skalowalności i stabilności aplikacji. Testowanie pod kątem szybkości określa, jak szybko reaguje aplikacja. Testowanie pod kątem skalowalności określa maksymalne obciążenie użytkownika, które może obsłużyć aplikacja. Testowanie stabilności określa, czy aplikacja pozostaje stabilna pod różnymi obciążeniami. Dwa typowe typy testów wydajnościowych to testy obciążeniowe i testy obciążeniowe.
Testowanie obciążeniowe
Testy obciążeniowe określają wydajność aplikacji pod realistycznym obciążeniem. Na przykład testy obciążeniowe mogą określić, jak dobrze aplikacja działa na górnym limicie umowy dotyczącej poziomu usług (SLA). Zasadniczo testowanie obciążenia określa zachowania aplikacji, gdy wielu użytkowników tego samego czasu potrzebuje.
Użytkownicy nie muszą być osobami. Na przykład test obciążeniowy oprogramowania drukarki może wysyłać do aplikacji duże ilości danych. Test obciążeniowy serwera poczty może symulować tysiące równoczesnych użytkowników.
Testowanie obciążenia to również dobry sposób na wykrycie problemów, które istnieją tylko wtedy, gdy aplikacja działa w swoich limitach. Dzieje się tak, gdy mogą wystąpić problemy, takie jak przepełnienie buforu i przecieki pamięci.
W tym module użyjesz narzędzia Apache JMeter do wykonywania testów obciążeniowych. Użyjesz zestawu symulowanych użytkowników, którzy uzyskują dostęp do witryny internetowej jednocześnie.
Testy obciążeniowe
Testy obciążeniowe określają stabilność i niezawodność aplikacji pod dużym obciążeniem. Obciążenia wykraczają poza określoną dla aplikacji. Testy obciążeniowe określają, czy aplikacja ulegnie awarii pod tymi obciążeniami. Jeśli aplikacja zakończy się niepowodzeniem, test obciążeniowy sprawdza, czy nie powiedzie się bezpiecznie. Wdzięczny błąd może na przykład spowodować wyświetlenie odpowiedniego, informacyjnego komunikatu o błędzie.
Scenariusze, w których aplikacje muszą działać w nietypowo dużych obciążeniach, są typowe. Na przykład w przypadku, gdy wideo jest wirusowe, warto wiedzieć, jak dobrze serwery mogą obsłużyć dodatkowe obciążenie. Innym typowym scenariuszem jest duży ruch na stronach internetowych zakupów w okresach świątecznych.
Testowanie zabezpieczeń
Testowanie zabezpieczeń zapewnia, że aplikacje są wolne od luk w zabezpieczeniach, zagrożeń i zagrożeń. Dokładne testowanie zabezpieczeń umożliwia znalezienie wszystkich możliwych luk w systemie i słabych stron, które mogą spowodować naruszenie informacji lub utratę przychodów.
Istnieje wiele typów testów zabezpieczeń. Dwa z nich to testy penetracyjne i testowanie zgodności.
Testy penetracyjne
Testy penetracyjne lub testy penetracyjne to typ testowania zabezpieczeń, który testuje niezabezpieczone obszary aplikacji. W szczególności testuje luki w zabezpieczeniach, które może wykorzystać osoba atakująca. Autoryzowany, symulowany cyberatak jest zwykle częścią testów penetracyjnych.
Testowanie zgodności
Testowanie zgodności określa, czy aplikacja jest zgodna z określonym zestawem wymagań, wewnątrz firmy, czy poza nim. Na przykład organizacje opieki zdrowotnej zwykle muszą przestrzegać przepisów HIPAA (Health Insurance Portability and Accountability Act z 1996 r.), która zapewnia prywatność danych i przepisy bezpieczeństwa dotyczące ochrony informacji medycznych.
Organizacja może również mieć własne wymagania dotyczące zabezpieczeń. Oprogramowanie musi zostać przetestowane, aby upewnić się, że spełnia te wymagania. Na przykład w systemach Linux domyślna maska użytkownika musi być 027 lub bardziej restrykcyjna. Test zabezpieczeń musi udowodnić, że to wymaganie jest spełnione.
Plan
W pozostałej części tego modułu skonfigurujesz środowisko usługi Azure DevOps, dowiesz się więcej o planowaniu testów obciążeniowych przy użyciu narzędzia Apache JMeter i uruchomisz testy obciążeniowe w usłudze Azure Pipelines.