Partycjonowanie równoważności w testowaniu oprogramowania to technika testowania typu black-box, która pomaga tworzyć wydajne przypadki testowe bez uszczerbku dla pokrycia testowego.
W tym artykule przyjrzymy się, czym jest partycjonowanie klas równoważności, dlaczego jest przydatne i zbadamy niektóre procesy i podejścia, których można użyć, aby odblokować korzyści płynące z tej techniki.
Czym jest podział na klasy równoważności
w testowaniu oprogramowania?
Każde oprogramowanie ma określone warunki wejściowe. W kontekście testowania oprogramowania, warunki wejściowe opisują wartości lub dane, które tester musi wykorzystać do weryfikacji jakości i funkcjonalności swojego oprogramowania. Te dane wejściowe mogą być tak proste, jak kliknięcie myszą, aż po tekst i liczby.
Równoważna partycja w testowaniu oprogramowania bada różne dane wejściowe wymagane do korzystania z oprogramowania i grupuje je w klasy równoważności, tj. zestawy danych wejściowych, które będą miały równoważny wpływ na zachowanie oprogramowania.
Jeśli wiesz, jak zachowa się każda grupa wejść, nie musisz testować każdego przedstawiciela grupy. W związku z tym podział na klasy równoważności jest świetnym sposobem, aby pomóc testerom zmniejszyć częstotliwość wykonywania zbędnych testów. W hiperkonkurencyjnym świecie tworzenia oprogramowania z coraz bardziej napiętymi terminami, oszczędność czasu i wysiłku w cyklu życia testowania oprogramowania (STLC) ma kluczowe znaczenie.
Na koniec warto zauważyć, że testowanie równoważności jest techniką testowania czarnej skrzynki. Krótko mówiąc, oznacza to, że testerzy nie muszą znać wewnętrznego kodu programu ani jego wewnętrznego działania. Testy opierają się na wejściach, wyjściach i zachowaniach zewnętrznych. W związku z tym testy te koncentrują się na zachowaniu użytkownika podczas korzystania z programu.
1. Podział równoważności testowania oprogramowania w pigułce
Partycjonowanie równoważności dzieli dane wejściowe testowania oprogramowania na dwa obozy: prawidłowe i nieprawidłowe dane wejściowe. Wartości w każdej partycji muszą powodować takie samo zachowanie oprogramowania. Na przykład:
- Jeśli warunek jednej wartości w partycji A jest prawdziwy, to inne wartości w partycji A również muszą być prawdziwe.
- Podobnie, jeśli warunki jednej wartości w partycji A są fałszywe, pozostałe wartości w partycji A również muszą być fałszywe.
W kontekście testowania każda partycja musi zostać pokryta co najmniej raz. Logicznie rzecz biorąc, oznacza to, że jeśli jedno wejście w partycji A ulegnie awarii, to wszystkie inne wejścia również ulegną awarii. Proces ten powinien zaoszczędzić czas, ponieważ zamiast testować każde wejście, które znajduje się w partycji A, testerzy mogą przetestować tylko jedno i ekstrapolować wynik na podstawie jego podobieństw.
2. Dlaczego testowanie klas równoważności w testowaniu oprogramowania jest ważne?
Zanim przejdziemy do bezpośrednich korzyści płynących z testowania klas równoważności w testowaniu oprogramowania, musimy zdefiniować, dlaczego to podejście jest ważne.
Wszyscy testerzy rozumieją, że testowanie oprogramowania wymaga kompromisów. Czas i budżet są ograniczone, co oznacza, że testerzy muszą jak najlepiej wykorzystać swoje zasoby. Podział równoważności testowania oprogramowania pomaga zespołom znaleźć równowagę między wydajnością i niezawodnością testów poprzez zmniejszenie liczby danych wejściowych.
Korzyści z podziału na równoważności
w testowaniu oprogramowania
Równoważna partycja w testowaniu oprogramowania jest preferowana przez zespoły testowe z wielu powodów. Oto niektóre z najbardziej przekonujących.
1. Wydajność
Dużą zaletą testowania partycji równoważności jest jego wydajność. Gdy testerzy używają partycjonowania równoważności, mogą zmniejszyć liczbę wymaganych przypadków testowych bez uszczerbku dla pokrycia testowego. Wybierając przypadek wejściowy z każdej klasy równoważności, testerzy mogą mieć pewność, że rozumieją, jak ich oprogramowanie działa z różnymi danymi wejściowymi.
2. Prostota
Kolejną dużą zaletą partycjonowania równoważności testowania oprogramowania jest prostota. Rozbicie zróżnicowanego zestawu danych wejściowych na dane prawidłowe i nieprawidłowe oznacza, że planowanie testów jest znacznie prostsze. Testowanie każdego wejścia z osobna wymaga dużej ilości dokumentacji i koordynacji. Ograniczenie tego do jednego reprezentatywnego przykładu usprawnia proces testowania.
Rozszerzony zasięg
Korzystanie z klas równoważności w testowaniu pozwala również na bardziej efektywne wykorzystanie czasu testowania. Redukcja danych wejściowych testu do klas oznacza, że można dokładniej przetestować każdą klasę. Takie kompleksowe podejście byłoby niemożliwe, gdyby każde wejście było testowane osobno. Partycjonowanie równoważności pozwala zespołom na dokładne testowanie poprawnych i niepoprawnych danych, przypadków brzegowych, wartości granicznych i nie tylko.
3. Możliwość ponownego użycia
Początkowy czas zainwestowany w ustanowienie każdej klasy równoważności w testowaniu oprogramowania opłaca się w przyszłości, jeśli ponownie wykorzystasz te klasy do przyszłych testów wejściowych. Chociaż nie wszystkie partycje będą istotne dla przyszłych testów, te, które są, pozwolą zaoszczędzić dużo czasu w przyszłych projektach, a nawet w sytuacjach testowania regresyjnego.
Wady podziału równoważnościowego
w testowaniu oprogramowania
Chociaż partycjonowanie równoważne oferuje pewne istotne korzyści, nie jest to idealne rozwiązanie dla każdego scenariusza. Przyjrzyjmy się niektórym z jego ograniczeń.
1. Kolejność wprowadzania danych
W niektórych sytuacjach kolejność wprowadzania danych jest krytyczną częścią testowania funkcjonalności aplikacji. Nie jest to coś, co można naprawdę ograniczyć za pomocą partycjonowania równoważności. Testerzy muszą pamiętać o takich sytuacjach i stosować alternatywne techniki, aby zapewnić dobre pokrycie.
2. Złożone zależności wejściowe
Złożone oprogramowanie ze złożonymi zależnościami wejściowymi to kolejny obszar, w którym ujawniają się ograniczenia partycjonowania równoważności. Na przykład oprogramowanie, które wykonuje obliczenia na podstawie różnych danych wejściowych. W takim scenariuszu testerzy musieliby korzystać z różnych technik, aby ograniczyć eksplozję kombinatoryczną i zwiększyć prawdopodobieństwo wyizolowania usterek.
Alternatywne podejścia uzupełniające
ograniczenia testów równoważności
Podczas gdy testowanie partycji równoważności jest odpowiednie dla wielu scenariuszy testowych, wysoce złożone oprogramowanie z zawiłymi zależnościami między wartościami wejściowymi może wymagać dodatkowych podejść uzupełniających.
Jeśli chodzi o pisanie przypadków testowych dla złożonego oprogramowania, użycie kombinacji tych podejść jest solidnym pomysłem.
1. Badanie parami
Testowanie parami to technika testowania oprogramowania, która testuje wszystkie możliwe kombinacje każdej pary parametrów wejściowych. Takie podejście zapewnia, że każda para parametrów jest testowana razem co najmniej raz.
2. Testowanie tabeli decyzyjnej
Tabela decyzyjna pomaga testerom metodycznie mapować różne kombinacje danych wejściowych. Jest to dobry sposób na zapewnienie systematycznego pokrycia, gdy istnieją złożone zależności.
3. Badanie zmiany stanu
Ten typ testów mierzy, w jaki sposób oprogramowanie przechodzi między różnymi stanami w odpowiedzi na różne kombinacje danych wejściowych.
4. Testowanie oparte na modelu
Podejście to wymaga stworzenia modelu opartego na wewnętrznej logice oprogramowania i wykorzystania narzędzia do automatyzacji do tworzenia przypadków testowych w oparciu o ten model. Technika ta doskonale radzi sobie ze złożonością i zapewnia odpowiednie pokrycie.
Przykłady testowania podziału na klasy równoważności
Najlepszym sposobem na zrozumienie partycjonowania równoważności jest przyjrzenie się, w jaki sposób i gdzie można wykorzystać klasę równoważności w testowaniu oprogramowania. Oto kilka przykładów, które pomogą ci lepiej zobrazować tę koncepcję.
1. Przykład testowania podziału na klasy równoważności #1
Formularz zamówienia online jest dobrym przykładem klasy równoważności w testowaniu oprogramowania.
Załóżmy, że tworzysz aplikację dla internetowego sprzedawcy sprzętu stacjonarnego. Istnieje typowy formularz zamówienia dla beli papieru A4. Oto jak można użyć klas równoważności do przetestowania tej formy.
Klasy równoważności:
Ilości papieru A4 mieszczą się w określonym zakresie, na przykład od 1 do 100. Tak więc trzy klasy to:
- 1 do 100
- Liczby poniżej 1
- Liczby powyżej 100.
Przypadki testowe:
Należy uruchomić trzy przypadki testowe z następującymi oczekiwanymi wynikami
- Dowolna liczba od 1 do 100 = zamówienie zrealizowane
- Liczby poniżej 1 = komunikat o błędzie
- Liczby powyżej 100 = komunikat o błędzie
2. Przykład #2 testowania partycjonowania równoważności
Klasa równoważności w testowaniu oprogramowania może zajmować się czymś więcej niż tylko liczbami. W tym przykładzie zbadamy, jak można wykorzystać tę samą zasadę do weryfikacji portalu do przesyłania plików. Załóżmy, że musisz przetestować witrynę, która wymaga od użytkowników przesyłania dokumentów tożsamości, ale możesz akceptować tylko określone formaty.
Klasy równoważności:
- Obsługiwane dokumenty to PDF i JPEG.
- Nieobsługiwane dokumenty to wszystkie inne formaty dokumentów
- Brak dokumentu
Przypadki testowe:
- Test przez przesłanie pliku PDF lub JPEG = pomyślne przesłanie
- Test przez załadowanie nieobsługiwanego formatu = komunikat o błędzie
- Test bez przesyłania plików = komunikat o błędzie
Jak wdrożyć podział równoważnościowy
podejście do testowania oprogramowania
Jeśli chcesz używać klas równoważności w testach, musisz przyjąć strategiczne podejście. Oto przydatny przewodnik krok po kroku dotyczący wdrażania partycjonowania równoważności w testowaniu oprogramowania.
Krok #1: Identyfikacja zmiennych wejściowych
Każde oprogramowanie reaguje na różne zmienne wejściowe. W przypadku złożonego oprogramowania zmienne te mogą być ogromne. Przejrzyj więc wymagania i specyfikacje oprogramowania i wskaż wszystkie zmienne, które mają wpływ na zachowanie oprogramowania.
Niektóre z najbardziej oczywistych danych wejściowych obejmują formularze wprowadzania danych przez użytkownika. Należy jednak wziąć pod uwagę szerszy zakres danych wejściowych dla swojej listy. Można również wziąć pod uwagę zmienne środowiskowe, wywołania API, wewnętrzne obliczenia itp.
Następnie należy zrozumieć różne typy zmiennych danych. Zmienne te można kategoryzować jako całkowite, logiczne, łańcuchowe itp. w celu zdefiniowania odpowiednich partycji.
Na koniec należy zbadać ograniczenia wejściowe. Będą to takie rzeczy, jak dozwolone znaki, zdefiniowane formaty oraz minimalne/maksymalne wartości.
Krok #2. Określanie prawidłowych i nieprawidłowych partycji
Przyjrzyj się każdej zmiennej wejściowej i zacznij dzielić je na prawidłowe i nieprawidłowe wyniki. Będą to klasy równoważności w testach.
1. Prawidłowe partycje
Prawidłowe partycje można podzielić na dwie klasy.
Pozytywne klasy równoważności:
Wartości, które mają być pomyślnie obsługiwane przez oprogramowanie. Na przykład w przypadku oprogramowania, które rejestruje oceny procentowe, ważne jest wszystko od 0 do 100.
Ujemne klasy równoważności:
Ta kategoria będzie przeznaczona dla wartości, które wykraczają poza granice oczekiwanych danych wejściowych, ale które oprogramowanie powinno obsługiwać za pomocą komunikatu o błędzie. Na przykład, wartość wejściowa wynosi 110 dla oceny procentowej, co powoduje, że oprogramowanie zwraca komunikat o błędzie “Wszystkie wartości muszą wynosić od 0 do 100”.
2. Nieprawidłowe partycje
Te klasy równoważności będą zawierać dane wejściowe, które wywołają błędy lub nieoczekiwane zachowania. W naszym przykładzie powyżej może to obejmować próby wprowadzenia A+ lub B lub podobnych danych do oceny procentowej. Chociaż te dane wejściowe mogą być technicznie poprawne, wykraczają poza oczekiwania numeryczne.
#3. Pisanie efektywnych przypadków testowych
Następnie należy zaprojektować przypadki testowe, które obejmują każdą partycję równoważności co najmniej raz. Jak wspomniano wcześniej w artykule, zapewnia to odpowiednie pokrycie testami.
Najpierw należy wybrać reprezentatywne wartości w każdej partycji równoważności, które mogą obejmować zarówno prawidłowe, jak i nieprawidłowe dane.
Wskazówki dotyczące pisania solidnych przypadków testowych
- Pomyśl o wartościach granicznych: Upewnij się, że przetestowałeś granice swoich partycji. Minimalne, maksymalne, włączające, wyłączające itp., ponieważ te obszary są silnymi kandydatami do błędów. Na przykład, jeśli oczekiwania wejściowe mieszczą się w zakresie od 0 do 100, przetestuj wartości ujemne, a także liczby takie jak 101.
- Rozważ pozytywne i negatywne scenariusze testowe zarówno dla prawidłowych, jak i nieprawidłowych przypadków testowych.
- Testy łączone to dobry pomysł. Użyj kilku różnych podejść, jak opisano w naszych alternatywnych podejściach, aby uzupełnić ograniczenia powyższej sekcji dotyczącej testowania równoważności.
- Udokumentuj powody, dla których wartości wejściowe zostały podzielone na określone partycje i jasno przedstaw oczekiwane zachowanie każdego testu.
- Tam, gdzie to możliwe, używaj narzędzi wizualnych, aby zapewnić poczucie jasności i obiektywizmu w przypadkach testowych, używając diagramów lub tabel do mapowania partycji.
#4. Planowanie i wykonywanie przypadków testowych
Priorytetyzuj swoje zadania w oparciu o takie czynniki jak
- Które obszary są najbardziej narażone na usterki?
- Które scenariusze najprawdopodobniej spowodują poważne scenariusze, takie jak awarie lub zawieszanie się oprogramowania.
Następnie wykonaj testy i zapisz wyniki oraz wszelkie występujące błędy. W przypadku złożonych programów z wieloma danymi wejściowymi można użyć narzędzi RPA do naśladowania działań użytkownika.
#5. Analiza wyników
Zbierz zebrane dane testowe i przeanalizuj wyniki. Niektóre metody, których należy użyć, to
- Przyjrzyj się każdemu przypadkowi testowemu i porównaj rzeczywiste wyniki z oczekiwanymi.
- Znajdź wszelkie rozbieżności oraz zbadaj i zgłoś wszelkie błędy i usterki.
#6 Dodatkowe wskazówki
Chociaż wskazówki te nie będą miały zastosowania w każdym scenariuszu, okażą się przydatne w przypadku testowania złożonego oprogramowania.
- Tabele decyzyjne to doskonały sposób na wizualizację partycji równoważności i różnych kombinacji danych wejściowych, których możesz chcieć użyć
- Klasy równoważne można łączyć, jeśli wykazują niemal identyczne zachowanie, co dodatkowo optymalizuje proces testowania
- Wykorzystanie testowania wartości granicznych w celu poprawy wykrywania defektów
- Tam, gdzie to możliwe, zautomatyzuj przypadki testowe partycjonowania równoważności
Podział równoważności i analiza wartości brzegowych
Podział na partycje równoważności opiera się na założeniu, że każdy test w ramach partycji da taki sam wynik. Choć jest to prawdą w wielu sytuacjach, nie zawsze się sprawdza. Na przykład wszelkie dane wejściowe, które zostały dodane do partycji przez pomyłkę, mogą pozostać niezaznaczone, co prowadzi do zmniejszenia pokrycia i potencjalnej niestabilności oprogramowania.
Rozwiązaniem tego problemu jest testowanie wartości granicznych. Umożliwia zespołom testującym oprogramowanie skupienie się na obszarach, które najprawdopodobniej zawierają ryzyko i testowanie oprogramowania na tej podstawie. Krótko mówiąc, sugeruje, że ryzyko jest najbardziej prawdopodobne na krawędziach lub granicach partycji wejściowych. Dlatego testerzy mogą pisać przypadki testowe na górnych i dolnych granicach danych wejściowych, oprócz innych przypadków testowych klasy równoważności.
Podział równoważności i automatyzacja z ZAPTEST
Narzędzia do automatyzacji testów oprogramowania, takie jak ZAPTEST, mogą pomóc zespołom zautomatyzować partycjonowanie równoważności zarówno podczas tworzenia, jak i wykonywania testów.
Sprawdźmy, w jaki sposób ZAPTEST może pomóc Ci odblokować korzyści płynące z tego przydatnego podejścia do testowania czarnej skrzynki.
1. Wybór narzędzia
Wybór odpowiedniego narzędzia do danego zadania jest bardzo ważny. Większość narzędzi do automatyzacji testów specjalizuje się w testach webowych, mobilnych lub desktopowych. ZAPTEST jest w stanie obsługiwać testy na różnych platformach i aplikacjach, co czyni go solidnym wyborem.
2. Pisanie i wykonywanie przypadków testowych
ZAPTEST 1Script umożliwia skanowanie interfejsu użytkownika w celu tworzenia automatyzacji testów. Dodatkowo, możesz również skanować makiety aplikacji, jeśli jesteś na wczesnym etapie rozwoju. Korzystając z funkcji Scan GUI, ZAPTEST przeskanuje wszystkie obiekty testowe i doda je do listy obiektów.
Z tego miejsca można dodawać obiekty do diagramu i tworzyć kroki testowe.
ZAPTEST pozwala zautomatyzować pisanie przypadków za pomocą prostego interfejsu “przeciągnij i upuść”. Do tworzenia przypadków testowych za pomocą ZAPTEST nie jest potrzebna specjalistyczna wiedza z zakresu kodowania. Z tego miejsca można wybrać odpowiednią operację z rozwijanej metody i zbudować przypadek testowy w oparciu o wartości wejściowe wymagane dla interfejsu. Następnie można utworzyć przypadki testowe dla każdej równoważności i wykonać je. Można nawet ponownie wykorzystywać przypadki testowe i edytować je w edytorze Step, oszczędzając mnóstwo czasu.
3. Raportowanie i zarządzanie przypadkami testowymi
ZAPTEST pozwala uruchamiać przypadki testowe równolegle, oszczędzając znaczną ilość czasu. Może to pomóc w uruchomieniu dużej liczby różnych partycji równoważności jednocześnie lub uruchomieniu określonych grup testów.
Wyniki są łatwe do zebrania dzięki szczegółowym raportom o niepowodzeniu/zaliczeniu, zrzutom ekranu, dziennikom wykonania i wskaźnikom wydajności związanym z każdym przypadkiem testowym.
4. Utrzymanie przypadków testowych
Możesz także w prosty sposób śledzić i utrzymywać swoje przypadki testowe dzięki wysokiej jakości funkcjom kontroli wersji. Co więcej, użytkownicy ZAPTEST mogą klonować i ponownie wykorzystywać testy, aby osiągnąć nowy poziom wydajności.
ZAPTEST oferuje znacznie więcej funkcji poza automatyzacją przypadków testowych. Dzięki pakietowi narzędzi RPA ZAPTEST oferuje funkcjonalność 2 w 1, wypełniając lukę między DevOps i BizOps w przyszłości naznaczonej hiperautomatyzacją, w której wszystko, co można zautomatyzować, zostanie zautomatyzowane.
Końcowe przemyślenia
Partycjonowanie równoważności jest eleganckim rozwiązaniem w sytuacjach, w których testerzy muszą znaleźć równowagę między wydajnością a dokładnością. Ponieważ niektóre programy pozwalają na niemal nieskończony zakres danych wejściowych, podział na klasy równoważności pomaga zespołom podzielić dane testowe na łatwe do zarządzania, małe fragmenty, z których każdy może być dokładnie przetestowany.