Co to jest test negatywny? Przypadki testowe z przykładem

⚡ Inteligentne podsumowanie

Testowanie negatywne polega na sprawdzeniu zachowania aplikacji po otrzymaniu nieoczekiwanych danych wejściowych lub warunków operacyjnych, tak aby produkt działał prawidłowo i nie uległ awarii, nie uszkodził danych ani nie ujawnił luki w zabezpieczeniach.

  • ???? Cel: Potwierdź, że aplikacja odrzuca nieprawidłowe dane w sposób czysty, zamiast zakończyć ją niepowodzeniem lub awarią.
  • ⚖️. Kontrast: Pozytywny wynik testu wskazuje na szczęśliwą ścieżkę; negatywny wynik testu bada wszystko, co jest poza nią.
  • 🛗 Analogia: Winda musi przetrwać przeciążenie, pożar i utratę zasilania, a nie tylko normalny przejazd pasażerów.
  • 🔒 Bezpieczeństwo: Nieprawidłowe przesyłanie danych i próby wstrzyknięcia kodu SQL to klasyczne scenariusze negatywnych testów.
  • 🧪 Design: Wartości brzegowe, klasy równoważności, zgadywanie błędów i rozmycie generują przypadki.
  • 📊 Priorytet: Uporządkuj nieprawidłowe dane wejściowe według wpływu, ponieważ wyczerpujące pokrycie negatywne jest nieopłacalne.
  • ⚠️ Kompromis: Nadmierna liczba testów negatywnych pochłania budżet, którego potrzeba więcej na pokrycie wyników pozytywnych.

Testowanie negatywne w testowaniu oprogramowania z przykładami nieprawidłowych danych wejściowych

Testowanie negatywne

Testowanie negatywne Testowanie negatywne to rodzaj testowania oprogramowania służący do sprawdzania aplikacji pod kątem nieoczekiwanych danych wejściowych i warunków. Nieoczekiwane dane lub warunki mogą mieć różny charakter – od błędnego typu danych w prostym polu formularza po celowy atak hakerski. Celem testowania negatywnego jest zapobieganie awariom aplikacji z powodu nieprawidłowych danych wejściowych oraz poprawa jakości i stabilności produktu.

Pozytywny wynik testów dowodzi jedynie, że system działa w normalnych warunkach. Negatywny wynik testów potwierdza, że ​​ten sam system radzi sobie również w warunkach nietypowych, co jest wymogiem dla produktu odpornego na błędy.

Przykład testu negatywnego

Do wyjaśnienia negatywnych wyników testów najczęściej używanym przykładem jest winda, ponieważ zarówno jej normalne zachowanie, jak i zachowanie w przypadku awarii są łatwe do wyobrażenia.

Wymagania dotyczące windy są znane: naciśnięcie numeru piętra powoduje wjechanie na to piętro, a drzwi otwierają się automatycznie, gdy winda dojedzie do wskazanego piętra.

Poniżej wymieniono kilka negatywnych scenariuszy dla tej samej windy, obok założeń, jakie niesie ze sobą pozytywny wynik testu.

Testowanie negatywne Testowanie pozytywne
Co się stanie, jeśli liczba osób (waga) przekroczy określony limit? Zakłada się, że do windy wejdzie tylko określona liczba osób
Co się stanie, jeśli ktoś zacznie palić lub spowoduje pożar w windzie? Zakłada się, że w windzie nie będzie dymu ani ognia
Co się stanie, jeżeli w trakcie pracy nastąpi przerwa w dostawie prądu? Zakłada się, że nie wystąpi przerwa w dostawie prądu podczas pracy windy

Wszystkie te przypadki kończą się wynikiem negatywnym. Nie ma gwarancji, że żaden z nich nigdy się nie powtórzy, dlatego każdy z nich musi zostać objęty kontrolą.

Załóżmy, że stan przeciążenia nigdy nie jest sprawdzany, a winda zachowuje się nietypowo po przeciążeniu. Ta pojedyncza luka zagraża niezawodności systemu, a nawet może zagrażać życiu. Właśnie to oznacza negatywny wynik testu w praktyce i dlaczego jest on tak ważny.

Oprogramowanie zachowuje się w ten sam sposób. Negatywny wynik testu celowo odbiega od normalnej procedury operacyjnej. Rozważmy przykład formularza rejestracyjnego.

Testowanie negatywne Testowanie pozytywne
Wprowadź nieprawidłowy adres e-mail w polu „Adres e-mail” W polu adresu e-mail należy wprowadzać wyłącznie prawidłowe adresy e-mail
Wprowadź nieprawidłowy numer telefonu, np. znaki, w polu numeru telefonu W polu liczbowym wprowadzane są tylko liczby
Prześlij obraz o rozmiarze wykraczającym poza określone granice Przesyłane są tylko obrazy mieszczące się w określonym rozmiarze
Prześlij nieprawidłowe pliki, takie jak XML or SQL pliki w polu przesyłania obrazu Przesyłane są wyłącznie prawidłowe formaty obrazów, takie jak .jpg lub .png

Każdy z tych negatywnych przypadków musi pozostawić system w działaniu. Jeśli znak zostanie wpisany w polu liczbowym, aplikacja nie będzie mogła przetworzyć nieoczekiwanych danych, których się nie spodziewała, i może się zawiesić. Co gorsza, SQL injection Ciąg znaków w tym samym polu może usunąć zawartość bazy danych. Straty tego typu są powodem istnienia negatywnych testów.

Dlaczego testy negatywne?

Testowanie pochłania czas i pieniądze, dlatego decyzja o tym, co, jak i ile testować, ma znaczenie. Argumenty za przeznaczaniem części budżetu na testy negatywne wyglądają inaczej w przypadku obu stron projektu.

Perspektywa organizacji

Dostarczenie klientowi produktu dobrej jakości jest obowiązkiem organizacji, a negatywne wyniki testów są częścią tego zobowiązania. Stanowią one również dowód na to, że organizacja zrobiła wszystko, co możliwe, aby zapobiec awarii, mimo że żaden system nie jest całkowicie wolny od błędów.

Wpływ jest decydującym czynnikiem. Witryna e-commerce może przejść wszystkie pozytywne testy, a mimo to zawierać lukę, która pozwala atakującemu na wykonanie ataku SQL injection i usunięcie danych. To poważne naruszenie bezpieczeństwa, którego można doszukać się jedynie w negatywnych testach.

Aplikacje publiczne, w szczególności strony internetowe, oferują praktycznie zerową kontrolę nad tym, jak korzystają z nich użytkownicy, dlatego negatywne testy to jedyny sposób na potwierdzenie, że nietypowe użycie jest objęte ochroną i ograniczone. To samo dotyczy złośliwych użytkowników: atakujący aktywnie poszukują możliwości włamania się do systemu, a scenariusze hakerskie idealnie wpisują się w negatywne testy.

Perspektywa klienta

Klienci oczekują produktu bez żadnych luk w zabezpieczeniach, a negatywne wyniki testów potwierdzają to oczekiwanie. W przypadku produktów wrażliwych, takich jak handel elektroniczny czy handel akcjami online, testy bezpieczeństwa a wyniki testów negatywnych są obowiązkowe, a nie opcjonalne.

Jedynym realnym zmartwieniem klienta są koszty. Po przeanalizowaniu wpływu awarii, klient jest w stanie zdecydować, jak daleko powinny sięgać testy negatywne.

Jak wykonać test negatywny

Testowanie negatywne zaczyna się od uwzględnienia każdego sygnału wejściowego, który aplikacja może fizycznie odebrać, a nie tylko tych, które powinna otrzymać. Każdy z nich należy do Przypadek testowy Nawet jeśli jest to ewidentnie niewłaściwy sposób korzystania z tej funkcji. Pole adresu e-mail jest testowane z każdym typem pliku, który nie jest prawidłowym adresem e-mail, a kontrolka przesyłania obrazów jest testowana z każdym typem pliku, który nie jest obrazem.

Lista możliwych nieprawidłowych danych wejściowych jest praktycznie nieskończona, dlatego negatywne przypadki testowe muszą być priorytetyzowane. W przypadku pola obrazu, które akceptuje tylko pliki .png, możliwe do przesłania pliki obejmują pliki .jpeg, .xml, .xls i wiele innych. Plik XML lub SQL ma znacznie większy potencjalny wpływ niż plik .jpeg, dlatego te przypadki są wykonywane w pierwszej kolejności. Ranking przypadków według wpływu przed wykonaniem sprawia, że ​​testowanie negatywne jest opłacalne.

Większość negatywnych przypadków testowych wynika z niewielkiego zestawu ustalonych technik projektowych, a nie z improwizacji:

  • Wartości graniczne: wykonaj wartości znajdujące się bezpośrednio poza prawidłowym zakresem, na przykład 0 i 101 w przypadku pola akceptującego wartości od 1 do 100.
  • Nieprawidłowe klasy równoważności: wybierz jednego przedstawiciela z każdej klasy odrzuconych danych wejściowych, na przykład liter w polu liczbowym.
  • Błąd podczas zgadywania: wykorzystaj doświadczenie z poprzednich usterek, aby wskazać elementy wejściowe, które najprawdopodobniej uszkodzą tego typu funkcję.
  • Nieprawidłowe i wrogie dane: znaczniki skryptów, fragmenty SQL i duże ładunki, które sprawdzają walidację i obsługę zabezpieczeń.
  • Testowanie rozmycia: automatycznie generować duże ilości losowych lub zmutowanych danych wejściowych w celu znajdowania nieobsłużonych awarii.
  • Przepływy przerwane: anulować, odświeżyć, przekroczyć limit czasu lub utracić połączenie w trakcie transakcji.

Bez względu na zastosowaną technikę oczekiwany wynik należy zapisać jako kontrolowaną, czytelną awarię — komunikat weryfikacyjny, odrzucone przesłanie, czyste wycofanie — a nigdy po prostu jako „system się nie zawiesza”.

Zalety i wady negatywnego wyniku testu

Podobnie jak każda inna technika testowania, testowanie negatywne ma swoje zalety i wady, które zależą od tego, gdzie, kiedy i w jakiej ilości jest przeprowadzane.

Zalety testów negatywnych

  • Chroni ona bezpośrednio jakość produktu, ponieważ produkt dobrej jakości to taki, który nie ma żadnych podatnych na wykorzystanie luk.
  • Poszerza zasięg. Nieprawidłowe dane wejściowe trafiają do aktywnego systemu celowo lub przypadkowo, więc aby zasięg miał sens, przypadki negatywne muszą występować obok przypadków pozytywnych.
  • Zwiększa zaufanie klientów przed udostępnieniem wersji finalnej.
  • Ujawnia defekty, których pozytywne testy strukturalne nie są w stanie obsłużyć, takie jak nieobsłużone wyjątki i słaba walidacja danych wejściowych.

Wady testów negatywnych

  • W niektórych sytuacjach jest to strata czasu i energii. Jeśli aplikacja jest tworzona dla jednego użytkownika, testowanie 100 użytkowników jednocześnie nie jest warte zachodu, dlatego wybór odpowiednich warunków ma znaczenie, a niektóre systemy wymagają bardzo niewielu testów negatywnych.
  • Do projektowania obudów potrzebni są wykwalifikowani i doświadczeni ludzie.
  • Z punktu widzenia klienta zwiększa to koszty i może opóźnić wydanie produktu.
  • Konkurencja o wysiłek. Zespół, który wydaje dużo na testy z wynikiem negatywnym, może skończyć na niedoinwestowaniu tych z wynikiem pozytywnym.

FAQ

Testowanie pozytywne dostarcza prawidłowe dane i potwierdza oczekiwany wynik. Testowanie negatywne dostarcza nieprawidłowe dane, błędne formaty i uszkodzone sekwencje, a następnie potwierdza, że ​​aplikacja odrzuca je za pomocą kontrolowanego komunikatu zamiast zgłaszać błąd.

Puste dane uwierzytelniające, prawidłowy użytkownik z błędnym hasłem, fragmenty SQL w nazwie użytkownika, ciągi o zbyt długiej nazwie, spacje na początku lub na końcu, wyłączone konta i wielokrotne nieudane próby potwierdzenia działania blokady.

Nie. Pokrywają się one w przypadku nieprawidłowych lub wrogich danych wejściowych, ale testy bezpieczeństwa obejmują również uwierzytelnianie, autoryzację, szyfrowanie i obsługę sesji. Testowanie negatywne to szersza technika obejmująca dane wejściowe i warunki.

Piszą je zazwyczaj testerzy i inżynierowie ds. zapewnienia jakości, często przy udziale programisty dokonującego przeglądu ścieżek błędów i analityka biznesowego potwierdzającego, które nieprawidłowe warunki faktycznie zabraniają wymagań.

Wystarczająco dużo, aby objąć każdą odrzuconą klasę danych wejściowych, każdą granicę i każdą ścieżkę awarii o dużym wpływie. Poza tym, dodane przypadki zwracają niewielką wartość, więc ryzyko i wpływ ustawiają stop.ping punkt.

Tak. Przypadki nieprawidłowych danych wejściowych są bardzo powtarzalne, więc są odpowiednie testowanie automatyzacji i zestawy regresji. Narzędzia do analizy niejednoznacznej automatyzują generowanie losowych danych wejściowych, a asercje sprawdzają, czy pojawiają się komunikaty walidacyjne.

Modele odczytują wymagania lub schemat formularza i proponują nieprawidłowe wartości, warunki brzegowe i wrogie ciągi znaków, których tester może nie wypisać ręcznie. Recenzent i tak potwierdza, że ​​każdy oczekiwany wynik jest zgodny ze specyfikacją.

Tak, tworzy kod asercji, konfiguracje z nieprawidłowymi danymi i sparametryzowane przypadki z istniejącego pliku testowego. Wygenerowane oczekiwania wymagają weryfikacji, ponieważ asercja wyglądająca na wiarygodną może zakodować nieprawidłowe zachowanie.

Podsumuj ten post następująco: