Analiza wartości granicznych – zwykle skracana do BVA – jest powszechnie stosowaną techniką testowania czarnoskrzynkowego. Podejście to testuje wady oprogramowania poprzez weryfikację wartości wejściowych na granicach dopuszczalnych zakresów.
W tym artykule dowiemy się, czym jest testowanie analizy granic, dlaczego jest ono przydatne, a także poznamy różne podejścia, techniki i różne narzędzia do testowania granic.
Czym jest analiza wartości granicznych w testowaniu oprogramowania?
Analiza wartości granicznych jest rodzajem testów funkcjonalnych. Ten rodzaj testowania dotyczy weryfikacji, czy każda funkcja oprogramowania spełnia wymagania i specyfikacje. W przypadku testów granicznych funkcjonalność ta obejmuje sposób, w jaki oprogramowanie radzi sobie z różnymi danymi wejściowymi.
BVA to technika testowania oprogramowania, która sprawdza, w jaki sposób oprogramowanie zareaguje na dane wejściowe na krawędzi granic wejściowych lub w ich pobliżu. Zasadniczo każde wejście ma dopuszczalne zakresy. Na przykład, możesz mieć pole hasła dla loginu, które akceptuje hasła od 8 do 12 znaków. Testy graniczne będą sprawdzać hasła o długości znaków 7, 8, 12 i 13.
Myślimy tutaj, że granice limitów, tj. 7, 8, 12 i 13, są bardziej narażone na błędy niż liczby wewnątrz granic, takie jak 9, 10 i 11. Podczas gdy korzyści mogą wydawać się marginalne w przykładzie pola, które akceptuje od 8 do 12 znaków, stają się one bardziej oczywiste, gdy trzeba napisać przypadki testowe dla pól, które przyjmują od 1 do 20 znaków lub liczb od 1 do 1000 itd.
Tak więc, aby zaoszczędzić czas i zmniejszyć liczbę przypadków testowych w ramach testów funkcjonalnych, analiza wartości granicznych analizuje wartości:
- Wartość minimalna
- Bezpośrednio poniżej wartości minimalnej
- Przy maksymalnej wartości
- Bezpośrednio powyżej wartości maksymalnej
Korzyści z analizy wartości granicznych w testowaniu
Testy graniczne mają kilka istotnych zalet dla zespołów QA.
#1. Lepsza jakość oprogramowania
Koszmarnym scenariuszem dla testerów są błędy i defekty, które pozostają niezauważone. Przy tak wielu rzeczach do zweryfikowania, niektóre usterki mogą umknąć uwadze. Testy graniczne potwierdzają funkcjonalność obszarów w oprogramowaniu, które z większym prawdopodobieństwem zawierają błędy, co prowadzi do lepszych kompilacji oprogramowania, a ostatecznie do bardziej niezawodnej i stabilnej aplikacji.
#2. Zwiększone pokrycie testami
BVA w testowaniu oprogramowania jest tak przydatna, ponieważ pomaga zmniejszyć liczbę przypadków testowych wymaganych do kompleksowego pokrycia testami. Analiza wartości granicznych zapewnia, że ważne wartości i każda wartość mogą być dokładniej przetestowane.
#3. Wczesne wykrywanie usterek
Testowanie wartości granicznych jest częścią podejścia, w którym priorytetem jest wczesne wykrywanie defektów. Wyłapywanie błędów na wczesnym etapie procesu oznacza, że zespoły programistyczne mogą zaoszczędzić czas i pieniądze, nie wspominając nawet o tym, że o wiele łatwiej jest naprawić błędy na wczesnych etapach rozwoju.
#4. Wydajność
Testowanie wartości granicznych jest bardzo wydajne, ponieważ zmniejsza zapotrzebowanie na wiele przypadków testowych. Rzeczywiście, ograniczenie danych wejściowych do wszystkich, z wyjątkiem tych, które mogą powodować problemy, może znacznie zaoszczędzić czas zespołów testowych zarówno na pisanie, jak i wykonywanie przypadków testowych.
Wady analizy wartości granicznych w testowaniu
Oczywiście żadna technika testowania oprogramowania nie jest idealna ani pozbawiona ograniczeń. Chociaż analiza wartości brzegowych ma wiele zalet, istnieją pewne ograniczenia w pracy z tą techniką testowania funkcjonalnego.
#1. Wąski zakres
BVA działa na granicach lub krawędziach ważnych danych wejściowych. Ogólnie rzecz biorąc, ignoruje środkowe wejścia, rozumując, że będą one w porządku, jeśli prawidłowe wejścia na krawędziach są prawidłowe. Nie jest jednak bez precedensu, że niektóre z tych wartości, które nie zostały przetestowane, mogą mieć problemy.
#2. Zbyt uproszczone
Analiza graniczna polega na upraszczaniu rzeczy. Chociaż sprawdza się to w przypadku redukcji przypadków testowych, podejście to jest mniej odpowiednie dla bardzo złożonych domen z wieloma granicami, interakcjami lub zależnościami. Rzeczywiście, może mieć trudności z obsługą złożonych scenariuszy, co oznacza, że musisz zbadać inne techniki, aby uzyskać odpowiedni zasięg.
#3. Założenia
Każdy proces, który próbuje zwiększyć wydajność, niesie ze sobą ryzyko pominięcia określonych błędów. BVA koncentruje się na granicach na skraju zakresu. Czyniąc to, musi przyjąć założenia dotyczące innych danych wejściowych, które znajdują się po obu stronach wartości granicznych. Testerzy muszą znaleźć równowagę między wydajnością a pokryciem, co stwarza niewielkie ryzyko, jeśli stosowane są wyłącznie testy graniczne.
#4. Poleganie na dokładnych specyfikacjach i wymaganiach
Wydajność BVA zależy od jakości i dokładności specyfikacji oraz dokumentacji wymagań. Wszelkie niesprawdzone błędy w tych dokumentach mogą mieć wpływ na testowanie wartości granicznych i prowadzić do tego, że określone błędy pozostaną niesprawdzone i niewykryte aż do krytycznych późnych etapów rozwoju.
#5. Poleganie na klasach równoważności
Przeprowadzenie dokładnego BVA wymaga solidnej wiedzy na temat klas równoważności. Dokładne ustawienie tych klas wymaga doświadczenia i pewnych podstawowych informacji o aplikacji.
Wyzwania związane z analizą wartości granicznych
w testowaniu oprogramowania
Do tej pory powinieneś już mieć jasność co do zalet i wad testów granicznych. Jeśli jednak chcesz wdrożyć to podejście do własnego testowania oprogramowania, musisz również zdawać sobie sprawę z różnych wyzwań, które musisz pokonać.
Oto niektóre z wyzwań związanych z wdrażaniem testów wartości granicznych w testowaniu oprogramowania.
#1. Wyznaczanie granic
Identyfikacja granic w prostych systemach stanowi niewielkie wyzwanie dla kompetentnych testerów. Istnieją jednak bardziej złożone sytuacje, takie jak:
- Złożone domeny wejściowe z różnorodnymi zmiennymi wejściowymi lub skomplikowanymi relacjami
- Nieudokumentowane granice, które nie zostały jasno określone w dokumentach specyfikacji
- Dynamiczne granice, które zmieniają się w zależności od działań użytkownika lub innych warunków
#2. Niejednoznaczne wymagania
Źle napisane lub niejasne dokumenty wymagań mogą utrudniać identyfikację wartości granicznych. Przejrzystość, kompletność i zaangażowanie w wyczerpujące dokumenty specyfikacji wymagają czasu, ale w końcu się opłacą.
#3. Wiedza specjalistyczna
Analiza wartości granicznych może być zwodniczo złożona. W rzeczywistości zespoły testujące potrzebują personelu z doświadczeniem i wiedzą w tej dziedzinie, aby zrozumieć subtelne niuanse tej techniki. Co więcej, testerzy muszą posiadać pewną wiedzę na temat oprogramowania lub przynajmniej mieć wiarygodne dokumenty specyfikacji, na których mogą się oprzeć.
#4. Błędy
Analiza graniczna ma na celu zmniejszenie liczby przypadków testowych wymaganych do weryfikacji prawidłowych i nieprawidłowych danych wejściowych. Jednak wady, które znajdują się poza zakresem testów, mogą łatwo pozostać niezauważone. Co więcej, błędy “off-by-one” są powszechnymi błędami kodowania, które mogą wystąpić na granicach lub w ich pobliżu. Testerzy muszą być świadomi tych scenariuszy i przewidzieć ich testowanie.
#5. Wybuch przypadku testowego
Przy wielu granicach wejściowych przypadki testowe mogą szybko stać się złożone i wymknąć się spod kontroli. W takich sytuacjach czas i pieniądze, które można zaoszczędzić dzięki testom granicznym, są tracone, co podważa korzyści płynące z rozwiązania. Złożone kompilacje oprogramowania z wieloma kombinacjami lub permutacjami mogą mieć podobny efekt.
#6. Ograniczenia narzędzia analitycznego
Narzędzia do automatyzacji testów oprogramowania mogą pomóc zespołom w przeprowadzeniu odpowiedniej analizy wartości granicznych. Jednak nawet w najlepszych przypadkach narzędzia te wymagają pewnej ręcznej interwencji zarówno przy testowaniu, jak i tworzeniu testów. Sytuacja ta może ulec pogorszeniu w przypadku złożonych kompilacji z wieloma zmiennymi interakcjami.
Różne rodzaje wartości granicznych
testowanie w testowaniu oprogramowania
W książce Software Testing: A Craftsman’s Approach, autorzy Paul C. Jorgensen i Byron DeVries opisują cztery różne typy testowania wartości granicznych, którymi są:
1. Testowanie normalnej wartości granicznej (NBVT)
- Testuje prawidłowe wartości wejściowe na krawędziach domeny wejściowej
- Bada wartości minimalne i maksymalne wraz z danymi wejściowymi tuż powyżej i poniżej granicy.
- Jest to klasyczny typ analizy wartości brzegowych
2. Solidne testowanie wartości granicznych (RBVT)
- Podobny do powyższego NBVT, ale obejmuje również nieprawidłowe dane wejściowe
- Testuje na granicach i tuż poza nimi, ale uwzględnia również nieprawidłowe dane wejściowe.
- Koncentruje się na znajdowaniu błędów wynikających z ekstremalnych lub nieoczekiwanych wyników.
3. Testowanie wartości granicznych w najgorszym przypadku (WBVT)
- Weryfikuje zachowanie oprogramowania przy użyciu skrajnych prawidłowych i nieprawidłowych wartości.
- Bada wartości na skraju domen wejściowych i wartości poza tymi granicami.
- Próbuje zrozumieć zachowanie oprogramowania w bardziej ekstremalnych warunkach.
4. Solidne testowanie wartości granicznej w najgorszym przypadku (RWBVT)
- Wykorzystuje połączenie RBVT i WBVT do najbardziej dokładnego testowania wartości granicznych.
- Testuje prawidłowe i nieprawidłowe wartości wejściowe zarówno na typowych, jak i ekstremalnych granicach.
- Oferuje najlepszą możliwość znalezienia wad związanych z granicami.
Podejścia te różnią się pod względem kompleksowości, przy czym RWBVT jest najbardziej szczegółowe. Testerzy muszą jednak zdawać sobie sprawę z dodatkowych nakładów czasu i wysiłku wymaganych do odblokowania tego dodatkowego poziomu wykrywania defektów.
Podział równoważnościowy i wartość graniczna
analiza: podobieństwa i różnice
Podział na równoważności i analiza wartości brzegowych są często używane w połączeniu ze sobą. Rzeczywiście, te dwie techniki są wysoce komplementarne. Opisują one jednak różne podejścia do walidacji wprowadzanych danych. Poniżej przedstawiamy podobieństwa i różnice między nimi.
1. Podobieństwa
Podział równoważnościowy i analiza wartości brzegowych stanowią świetną parę. Oto kilka podobieństw między obiema technikami.
- Obie są technikami testowania czarnoskrzynkowego, co oznacza skupienie się na danych wejściowych i wyjściowych, które można przetestować bez uprzedniej znajomości kodu źródłowego aplikacji.
- Oba są częścią dokładnego podejścia do testowania danych wejściowych
- Oba pomagają testerom znaleźć równowagę między kompleksowym pokryciem testami bez pisania nadmiernej ilości przypadków testowych.
2. Różnice
Aby zbadać różnice między podziałem równoważności a analizą wartości granicznych, musimy przyjrzeć się każdemu z nich z osobna.
Podział na równoważności
- Dzieli dane wejściowe na klasy równoważności, które powinny skutkować podobnymi wynikami systemu.
- Używa pojedynczej reprezentatywnej wartości z każdej klasy i testuje system z tą wartością.
- Dotyczy to identyfikacji prawidłowych i nieprawidłowych klas równoważności
Analiza wartości granicznych
- Testuje wartości na granicach lub krawędziach klas równoważności
- Przetestuj szereg wartości, w tym minimum, maksimum i wartości po obu stronach granicy.
- Wyszukuje błędy, które znajdują się na krawędzi granic.
Przykłady podziału równoważności i analizy wartości brzegowych
Aby pomóc w zrozumieniu podziału równoważności i analizy wartości brzegowych, oto kilka przykładów.
Przykład podziału równoważności:
Załóżmy, że masz pole wprowadzania dla rejestracji samochodów. Zazwyczaj amerykańskie tablice rejestracyjne mają od 6 do 7 znaków. Dla uproszczenia pominiemy specjalne tablice rejestracyjne.
Prawidłowe dane = płytki 6 lub 7 znaków
Nieprawidłowe dane = płyty ze znakami >6 lub >7.
Przykład analizy wartości granicznych:
Korzystając z tego samego przykładu tablicy rejestracyjnej, co powyżej, analiza granic przetestuje
Prawidłowe dane = płyty z 6 lub 7 znakami
Nieprawidłowe dane = płyty z 5 lub 8 znakami, a w niektórych scenariuszach z 4 i 9 znakami.
Przykład analizy wartości granicznych
Być może najlepszym sposobem na pełne zrozumienie tej koncepcji jest przyjrzenie się innemu przykładowi analizy wartości brzegowych.
Przykład testowania wartości granicznych #1
Aby bardziej szczegółowo zbadać testowanie wartości granicznych, spójrzmy na przykład domeny weryfikacji wieku.
Mamy pole, w którym użytkownik może wprowadzić swój wiek.
Wartości graniczne to:
- Minimalny wiek = 18 lat
- Maksymalny wiek = 120 lat
Przykłady testów granicznych:
W sumie jest sześć przypadków testowych:
- 17, 18 i 19, które są odpowiednio poniżej minimum, minimum i powyżej minimum
- 119, 18 i 19, które są odpowiednio poniżej maksimum, maksimum i powyżej maksimum
Przykład testowania wartości granicznych #2.
W naszym kolejnym przykładzie testowania granic zbadamy stronę internetową z minimalną wartością rabatu na zakup w wysokości 20% przy zamówieniach o wartości 100 USD i więcej.
W tym przykładzie zakup o wartości ponad 600 USD prowadzi do 25% zniżki. Test wartości granicznej będzie dotyczył danych wejściowych w przedziale od 100 do 600 USD.
Wartości graniczne to:
Minimalny rabat kwalifikacyjny = 100 USD
Maksymalna zniżka kwalifikacyjna = 600 USD
Przykłady testów granicznych:
Ponownie generujemy łącznie sześć przypadków testowych, którymi są:
- 99,99 USD, 100 USD i 100,01 USD, czyli odpowiednio poniżej minimum, minimum i powyżej minimum.
- $599.99, $600 i $600.01, które są odpowiednio poniżej, maksimum i powyżej maksimum
Czy testowanie graniczne w testowaniu oprogramowania jest dokładne?
W artykule badawczym Black Box Testing with Equivalence Partitioning and Boundary Value Analysis Methods autorzy badają wykorzystanie podziału równoważności i analizy wartości granicznych do testowania akademickiego systemu informacyjnego dla Uniwersytetu Mataram w Indonezji.
Autorzy wykorzystali do testów popularne narzędzie testowe Selenium o otwartym kodzie źródłowym i przeprowadzili łącznie 322 przypadki testowe. Testy równoważności i analiza wartości granicznych ujawniły około 80 nieudanych przypadków, co doprowadziło do mniej więcej 75:25 stosunku prawidłowych do nieprawidłowych wyników testów. Ogólnie rzecz biorąc, zastosowanie kombinacji podziału na równoważności i BVA w testowaniu oprogramowania doprowadziło do dokładnego i pomocnego testowania oprogramowania.
Najlepsze narzędzia do testowania wartości granicznych
Podczas gdy dedykowane narzędzia do testowania granic są rzadkością, istnieje wiele godnych uwagi narzędzi testowych, które są w stanie wykonać to zadanie.
#3. TestCaseLab
TestCaseLab to oparte na chmurze narzędzie do zarządzania testami, które może pomóc w testowaniu BVA. Oprogramowanie pozwala zespołom tworzyć przypadki testowe i zarządzać nimi za pomocą intuicyjnego i atrakcyjnie wyglądającego interfejsu użytkownika. TestCaseLab jest elastyczny i bogaty w funkcje, ale ma swoje ograniczenia, w tym ograniczone opcje raportowania i dostosowywania.
#2. Micro Focus UFT One
Micro Focus UFT One to narzędzie do testowania oprogramowania skupiające się na testach funkcjonalnych i regresyjnych. Obsługuje różne platformy, urządzenia i testy API oraz oferuje silne opcje integracji. Oferuje zarówno tworzenie testów bez kodu, jak i opartych na słowach kluczowych i może pomóc zespołom w łatwym tworzeniu przypadków testowych analizy wartości granicznych. Istnieją pewne ograniczenia, które należy wziąć pod uwagę, takie jak stroma krzywa uczenia się i brak mocy w porównaniu z narzędziami takimi jak ZAPTEST.
#1. ZAPTEST
ZAPTEST to kompleksowe narzędzie do automatyzacji testowania oprogramowania z zaawansowanymi możliwościami RPA. Został stworzony, aby zapewnić testerom przyjazny dla użytkownika i solidny zestaw narzędzi do automatyzacji testów, które mogą pomóc w weryfikacji oprogramowania na różne sposoby, w tym za pomocą BVA w testowaniu oprogramowania.
Niektóre z najbardziej atrakcyjnych przypadków użycia ZAPTEST w celu ułatwienia analizy wartości granicznych obejmują generowanie przypadków testowych, obsługę danych testowych, wykonywanie testów oraz raportowanie i analizę. Dzięki szerokiej gamie szablonów i wysokiemu poziomowi dostosowania w połączeniu z tworzeniem przypadków testowych bez użycia kodu, użytkownicy ZAPTEST mogą szybko i łatwo tworzyć i zarządzać solidnymi przypadkami testowymi dla wszystkich rodzajów analizy granicznej.
Oprócz generowania przypadków testowych i zarządzania nimi, możliwości RPA ZAPTEST mogą pomóc zespołom testowym w testowaniu analizy wartości granicznych na inne sposoby. Można na przykład zautomatyzować wykonywanie przypadków testowych, generować dane testowe i tworzyć zaawansowane integracje z innymi narzędziami testowymi.
Wskazówki dotyczące testowania wartości granicznych
- Połącz analizę wartości granicznych z podziałem na równoważności, aby zapewnić, że przypadki testowe obejmują różne scenariusze wejściowe.
- Korzystaj z nieprawidłowych scenariuszy wejściowych (tj. testów negatywnych), aby upewnić się, że sprawdzasz, jak oprogramowanie radzi sobie z błędami i nieoczekiwanymi danymi wejściowymi.
- Zainwestuj czas w identyfikację wartości granicznych dla różnych typów danych, takich jak tekst, liczby, wartości logiczne itp.
- Priorytetowe testowanie wartości granicznych dla krytycznych funkcji lub obszarów, w których prawdopodobieństwo wystąpienia błędów jest większe.
- Używaj realistycznych danych, które reprezentują rodzaj danych wprowadzanych przez użytkowników do domen.
Końcowe przemyślenia
Analiza wartości granicznych jest użytecznym podejściem do testowania funkcjonalnego. Gdy masz domenę wejściową, musisz sprawdzić, czy akceptuje ona prawidłowe dane i wysyła komunikaty o błędach, gdy otrzymuje nieprawidłowe dane. Testowanie oparte na analizie brzegowej pomaga zweryfikować tę funkcjonalność w efektywny sposób, tworząc tylko przypadki testowe wymagane do kompleksowego testowania.
Testy graniczne sprawdzają wartości w dopuszczalnym zakresie lub wokół niego i weryfikują, jak system reaguje na te dane wejściowe. Rezultatem jest duża oszczędność czasu i mniejszy wysiłek, ponieważ nie trzeba tworzyć zbędnych przypadków testowych. W szybko zmieniającym się świecie tworzenia oprogramowania, w którym terminy wydają się napływać coraz szybciej, zespoły testowe potrzebują wszelkiej możliwej pomocy.