204 Shares 4959 views

Metody testowania oprogramowania i ich porównania. Testowanie czarnych pudełek i testowanie białych kartonów

testowania oprogramowania (SW) zidentyfikowanie luk, braków i błędów w kodzie, który należy rozwiązać. Można również zdefiniować jako proces oceny funkcjonalności i poprawności oprogramowania za pomocą analizy. Podstawowe metody integracji i testowania aplikacji oraz zapewnienie jakości jest sprawdzenie specyfikacji, projektowania i kodowania, oceny niezawodności, zatwierdzania i weryfikacji.


metody

Głównym celem testowania oprogramowania – potwierdzenie jakości systemu oprogramowania poprzez systematyczne debugowania aplikacji w ściśle kontrolowanych warunkach w celu określenia ich kompletności i dokładności, a także wykrywanie ukrytych błędów.

Sposoby weryfikacji (testowania) programy można podzielić na statyczne i dynamiczne.

Były to nieformalne, monitorowania i przeglądu technicznego, przegląd, krok po kroku analizy, badania, jak również statyczne analizy przepływu danych i zarządzania.

Dynamiczne techniki są następujące:

  1. Biały testowanie. Jest to szczegółowe badanie wewnętrznej logiki i struktury programu. Konieczne jest znajomość kodu źródłowego.
  2. Czarny testowanie. Technika ta nie wymaga żadnej wiedzy na temat mechanizmów działania aplikacji. Uważamy tylko podstawowe aspekty systemu nie związane z lub związane z kilkoma z jego wewnętrznej struktury logicznej.
  3. Metoda pudełko szary. Łączy dwa wcześniejsze podejścia. Debugowania ograniczony wiedzą działania wewnętrznego stosowania w połączeniu z wiedzą z podstawowych elementów systemu.

przejrzysty badania

Białe pudełko metoda z wykorzystaniem skryptów testowych kontrolować strukturę projektu procesowego. Technika ta pozwala ujawnić błędy wykonawcze, takie jak słabe zarządzanie systemem kodów analizując część wewnętrzne funkcjonowanie oprogramowania. Te metody badań są stosowane do poziomów integracji, moduł i układ. Tester musi mieć dostęp do kodu źródłowego i używać go, aby dowiedzieć się, która jednostka zachowuje się niewłaściwie.

Testowanie programów przez białoskrzynkowe ma następujące zalety:

  • To pozwala wykryć błąd w ukrytym kodzie poprzez usunięcie niepotrzebnych linii;
  • wykorzystanie efektów ubocznych;
  • Maksymalny zasięg uzyskuje się poprzez napisanie skryptu testowego.

wady:

  • Proces wysoki koszt, co wymaga wykwalifikowanej debugera;
  • wiele możliwości pozostają nieodkryte ponieważ dokładne sprawdzenie wszystkich możliwych ukrytych błędów jest bardzo skomplikowane;
  • niektóre kodu zostanie niezauważony.

Biały testowanie jest czasami określany poprzez testowanie przezroczystą lub otworzyć okno, strukturalne, testowanie logiczny, oparty na kodzie źródłowym oraz architektury logicznej.

Główne odmiany:

1) testowania kontroli przepływu – strategia strukturalnych przy użyciu modelu przepływu sterowania programem, jak sprzyjanie prostszych sposobów do zmniejszenia liczby bardziej skomplikowane;

2) gałąź ma na celu ocenę debugowania każdej opcji (prawda czy fałsz) każdego operatora sterującego, który obejmuje również połączone roztworu;

3) Badanie głównego toru, która pozwala na ustalenie tester logiczny środka złożoność projektu procesowej izolowania podstawowy zestaw ścieżek wykonania;

4) kontroli strumienia danych – strategię kontroli przepływu badań przez adnotacje liczyć informacje o reklamie i używać zmiennych programowych;

5) cykle badania – w pełni skoncentrowane na właściwej pracy cyklicznych procesów.

debugowanie behawioralne

testy funkcjonalne oprogramowanie traktuje jako „czarnej skrzynki” – informacja o wewnętrzne funkcjonowanie programu nie są liczone i sprawdzane tylko podstawowe aspekty systemu. W tym przypadku, tester musi znać architekturę systemu bez dostępu do kodu źródłowego.

Zalety tej metody:

  • Wydajność dla dużych segmentów kodu;
  • łatwość testera percepcji;
  • widzenia użytkownika jest wyraźnie oddzielony od punktów widzenia programisty (programista tester są niezależne od siebie);
  • szybsze tworzenie testu.

Metoda testowania oprogramowania czarna skrzynka ma następujące wady:

  • rzeczywiście wykonywane wybierz liczbę przypadków testowych, co skutkuje ograniczonym zasięgu;
  • brak jasnej specyfikacji trudnej do rozwijania skryptów testowych;
  • niska wydajność.

Inne nazwy tej techniki – behawioralne, nieprzezroczysta, testów funkcjonalnych i sposób debugowanie zamkniętym pudełku.

Ta kategoria może zawierać następujące techniki testowania oprogramowania:

1) równoważne do przegrody, która może zmniejszyć się zestaw danych testowych danych moduł oprogramowania wejściowego z podziałem na oddzielne części;

2) analiza wartości brzegowych skupia się na weryfikacji granic lub skrajnymi wartościami granicznymi – minimum, maksimum, a typowe wartości błędu;

3) fuzzing – posłużył do realizacji wyszukiwanie wprowadzania błędów lub uszkodzone poluiskazhennyh danych w trybie automatycznym lub półautomatycznym;

4) liczy przyczynowości – techniki oparte na tworzeniu wykresów i określania relacji między działaniem i jego przyczyn: tożsamość, negację logiczną OR i logiczne oraz – cztery główne postacie, wyrażający zależność między przyczyną a skutkiem;

5) Weryfikacja matrycami ortogonalnymi stosowane do problemów ze stosunkowo małym obszarze wejściowym przekracza możliwości wyczerpujących badań;

6) próba wszystkie pary – technika, w której zestaw testowanych wartości obejmuje wszystkie możliwe kombinacje binarne każdej pary parametrów wejściowych;

7) przejście stanu debugowania – technika, przydatny do sprawdzania statusu maszyny, jak również do poruszania przez graficznym użytkownika.

Czarny testowanie: Przykłady

technika czarnej skrzynki jest oparte na specyfikacji, dokumentów i opisów interfejsu oprogramowania lub systemu. Ponadto, można użyć modele (formalne lub nieformalne), reprezentujących oczekiwanego zachowania oprogramowania.

Zazwyczaj sposób ten służy do usuwania błędów interfejsu użytkownika i oddziaływania z wymaga stosowania przez wprowadzenie do gromadzenia danych i wyniki – od ekranu z protokołów lub wydruku.

Tester zatem współdziała z oprogramowaniem poprzez wprowadzanie, działając na przełączniki, przyciski lub inne interfejsy. Wybór danych wejściowych, kolejność podawania, lub sekwencji działania prowadzą do ogromnego całkowitą liczbę połączeń, jak przedstawiono w poniższym przykładzie.

Ile trzeba wykonać testy w celu sprawdzenia wszystkich możliwych wartości dla flaga 4 okna i pola jednorazowej, ustawić czas w sekundach? Na pierwszy rzut oka jest proste obliczenie: 4 pól z dwóch możliwych stanów – 24 = 16, który musi być pomnożona przez liczbę możliwych pozycjach od 00 do 99, to znaczy 1600 możliwych prób.

Jednak metoda ta jest nie tak: możemy określić, że pole dwupunktowe może zawierać spacji, czyli składa się z dwóch pozycjach alfanumerycznych i może zawierać znaki alfanumeryczne, znaki specjalne, spacje itp Zatem, jeśli …. System komputerowy jest 16-bitowy, obrócić 216 = 65536 jednej dla każdej pozycji w powstałym 4294967296 testów, które mają być pomnożona przez 16 kombinacji flag, które daje łącznie 68,719,476 736. Gdyby wykonać w 1 Test na sekundę, całkowita cd Testy olzhitelnost wynosi 2 177,5 lat. W systemach 32-bitowych lub 64, czas jeszcze bardziej.

Dlatego istnieje potrzeba, aby zmniejszyć ten okres do akceptowalnego poziomu. Tak więc, metody powinny być stosowane w celu zmniejszenia liczby testów bez ograniczania zakresu pomiaru.

równoważność partycjonowanie

Równowartość partycja to prosta metoda, która ma zastosowanie do wszelkich zmiennych, które są obecne w oprogramowaniu, czy wartości wejściowych lub wyjściowych, symboliczny, cyfry i innych. To jest oparte na zasadzie, że wszystkie dane z jednego równoważnika partycji będą traktowane w ten sam sposób i przez Te same instrukcje.

W czasie testowania, wybrane jednego przedstawiciela każdej poszczególnej partycji równoważności. To pozwala systematycznie zmniejszają liczbę możliwych przypadków testowych bez utraty zasięgu poleceń i funkcji.

Inną konsekwencją tego podziału jest zmniejszenie kombinatorycznej eksplozji pomiędzy różnymi zmiennymi i związane z tym zmniejszenie przypadków testowych.

Na przykład, w (1 / X) 1/2 stosując trzy sekwencje danych, trzy równoważne strefy:

1. Wszystkie pozytywne numery będą traktowane w taki sam sposób i powinno dać prawidłowe wyniki.

2. Wszystkie liczby ujemne są traktowane w ten sam sposób, z tym samym skutkiem. Jest to błędne, ponieważ pierwiastek z liczby ujemnej jest wyimaginowany.

3. Zero będą traktowane oddzielnie i daje błąd „dzielenie przez zero”. Jest to odcinek o pojedynczej wartości.

Widzimy zatem, trzech różnych części, z których jedna jest ograniczona do jednej wartości. Nie jest „poprawna” jeden odcinek, który daje wiarygodne wyniki, a dwa „źle” z nieprawidłowymi wynikami.

analiza wartości brzegowych

Przetwarzanie na granicy równoważnej partycjonowanie można zrobić inaczej, niż oczekiwano. Dochodzenie w sprawie dopuszczalnych wartości – dobrze znana metoda analizy zachowania oprogramowania w tych obszarach. Technika ta pozwala zidentyfikować takie błędy:

  • niewłaściwe użycie operatorów relacyjnych (, =, ≠, ≥, ≤);
  • pojedynczy błąd;
  • problemów cykli i iteracji
  • niewłaściwe rodzaje i wielkość zmiennych wykorzystywanych do przechowywania informacji;
  • sztuczne ograniczenia związane z typów danych i zmiennych.

testy przezroczyste

Metoda pudełko szary zwiększa zakres badań, można skupić się na wszystkich trudnych poziomach systemu dzięki połączeniu technik czarnych i białych.

Stosując tę technikę, tester dla rozwoju wartości testowych powinien posiadać wiedzę z wewnętrznych struktur danych i algorytmów. Przykłady metod testowych szarym polu, są następujące:

  • Model architektoniczny;
  • Unified Modeling Language (UML);
  • model państwa (automat skończony).

W sposobie szarym polu opracowania testów badano modułów w białych kodów inżynierskich, a rzeczywiste badanie przeprowadza się na interfejsach czarnych programów technologicznych.

Te metody badań mają następujące zalety:

  • Połączenie zalet technik białe i czarne skrzynki;
  • Tester jest oparty na interfejsie oraz określenie funkcjonalne, a nie kodu źródłowego;
  • debugger może zrobić wielkie przypadków testowych;
  • sprawdza się, z punktu widzenia użytkownika, a nie projektant programu;
  • tworzyć niestandardowe rozwój testowego;
  • obiektywność.

wady:

  • zakres badań jest ograniczona, ponieważ nie ma dostępu do kodu źródłowego;
  • złożoność wad aplikacji rozproszonych;
  • wiele sposobów pozostają nieodkryte;
  • jeśli programista uruchomił test, a następnie dalsze badania mogą być nadmierne.

Inna nazwa dla szarych technik Box – półprzezroczysty debugowania.

Ta kategoria obejmuje takie metody testowania:

1) Macierz prostopadłe – zastosowanie podzbioru wszystkich możliwych kombinacjach;

2) za pomocą matrycy debugowania stan danych programu;

3) Kontrola regresywny prowadzone na nowych zmian w oprogramowaniu;

4) badanie szablon, który analizuje projekt i architekturę dobrej aplikacji.

Porównanie technik testowania oprogramowania

Zastosowanie metod dynamicznych prowadzi do kombinatorycznej eksplozji liczby testów, które muszą zostać opracowane, wdrożone i realizowane. Każda technika powinna być stosowana w sposób pragmatyczny, biorąc pod uwagę swoje ograniczenia.

Jedyna prawdziwa metoda nie istnieje, istnieje tylko te, które są lepiej dostosowane do konkretnego kontekstu. inżynierii budowlanej pozwalają nam znaleźć kod bezużyteczne lub złośliwy, ale są one skomplikowane i nie są stosowane do dużych programów. Metody oparte na specyfikacji – jedynymi, które są w stanie zidentyfikować brakujący kod, ale nie można zidentyfikować z zewnątrz. Niektóre techniki są bardziej odpowiednie dla danego poziomu testu, typ błędu lub kontekstu niż inni.

Poniżej są główne różnice między trzema dynamicznych technik badawczych – podano tabelę porównawczą pomiędzy trzema formami debugowania oprogramowania.

aspekt

Czarna skrzynka metoda

Metoda pudełko szary

Metoda białoskrzynkowe

Dostępność informacji na temat składu programu

Bada tylko podstawowe aspekty

Częściowa wiedza o wewnętrznej strukturze programu

Pełny dostęp do kodu źródłowego

Stopień rozdrobnienia programu

niski

centralny

wysoki

Kto produkuje debugowanie?

Użytkownikom końcowym, testerów i programistów

Użytkownikom końcowym, programistów i debugery

Deweloperów i testerów

podstawa

Badanie opiera się na zewnętrznych sytuacjach awaryjnych.

Plik bazy danych, diagram przepływu danych, stan wewnętrznej znajomości algorytmu i architektury

Urządzenie jest w pełni świadomy wewnętrznego

Stopień pokrycia

Mniej wyczerpujące i wymaga minimum czasu

centralny

Potencjalnie najbardziej wszechstronne. Czasochłonny

Dane i granice wewnętrzne

Debug tylko metodą prób i błędów

Można sprawdzić domeny danych i granic wewnętrznych, jeśli są one znane

Najlepsze domeny danych testowych i granic wewnętrznych

Przydatność algorytm testowania

nie

nie

tak

automatyzacja

Automatyczne metody testowania oprogramowania jest znacznie uprościć proces kontroli, niezależnie od środowiska technicznego oraz z kontekstu. Są one używane w dwóch przypadkach:

1) w celu zautomatyzowania uciążliwe, samych lub drobiazgowe zadania, takie jak porównanie pliku do kilku tysięcy rzędach w celu uwalniania w czasie pod względem stężenia testera ważniejsze punktów;

2) dla przeprowadzania śledzenia lub zadania, które nie mogą być łatwo realizowane przez osoby takie jak weryfikacja wydajność lub czas reakcji analizy, która może być mierzona w setnych sekundy.

Narzędzia testowe można klasyfikować na różne sposoby. Kolejny podział opiera się na zadaniach, które obsługują:

  • zarządzania testami, które zawiera wsparcie zarządzania projektami, wersji konfiguracji, analizy ryzyka, śledzenie testy, błędy, wady i narzędzia raportowania;
  • zarządzanie wymaganiami, który zawiera wymagania i specyfikacje przechowywania, sprawdzić je pod kątem kompletności i wieloznaczności, ich priorytetu oraz możliwości śledzenia każdego badania;
  • krytyczna ocena i analiza statyczna, w tym monitorowanie przepływu i zadań, zapisywania i przechowywania komentarzach, wykrywanie wad i planowanych połączeń zarządzania korekt list kontrolnych i reguł, śledzenie dokumentów źródłowych komunikacja i kod analizy statycznej w celu wykrycia wad, zapewnianie zgodności z normami pisania kodu, analiza struktur i zależności, obliczanie parametrów metrycznych kodu i architektury. Ponadto, należy kompilatory, analizatory, generatory i stosunki odsyłaczy;
  • modelowanie, który zawiera narzędzia do modelowania zachowań biznesowych i przetestowanie modeli;
  • rozwój testu zapewnia generowanie danych oczekiwanych na podstawie warunków i modeli interfejs użytkownika i kod, udaje się tworzyć lub modyfikować plików i baz danych, wiadomości, sprawdzania poprawności danych na podstawie reguł zarządzania, analizy statystycznej warunków i zagrożeń;
  • krytyczny pogląd o wprowadzeniu danych za pomocą graficznego interfejsu użytkownika, API, linii komend przy użyciu komparatorów pomóc zidentyfikować udanych i nieudanych prób;
  • Wsparcie debugowania środowisko, które pozwala na zastąpienie brakującego sprzętu lub oprogramowania, sprzętu symulacja w Vol. godz. na podstawie określonego podzbioru wyjściowego, emulatory terminali, telefonów komórkowych i sprzętu sieciowego, środowisko sprawdzania języków, systemów operacyjnych i sprzętu , zastępując sterownik brakujących składników, fikcyjne moduły, itp, a także narzędzia do przechwytywania i modyfikowania OS żąda ograniczenia symulacja CPU, RAM, ROM, lub sieć .;
  • .. Porównanie zbiorów danych, bazy danych, sprawdź oczekiwanych rezultatów w trakcie i po zakończeniu testu, łącznie z dynamiczną i porównanie partii, Automatic „Wyroczni”;
  • powlekanie pomiar dla lokalizacji wycieków pamięci oraz nieprawidłowego systemu szacowania jego zachowanie kontroli na podstawie symulowanych obciążeniu generujący obciążenie, baz danych, sieci i serwerów w realistycznym scenariuszu wzrostu do pomiaru, analizy i weryfikacji raportu zasobów systemowych;
  • bezpieczeństwa;
  • testy wydajności, obciążenia i analiza dynamiczna;
  • inne narzędzia, w t. h. Aby sprawdzić pisownię i składnię, bezpieczeństwo sieci, dostępność wszystkich stronach internetowych i innych.

perspektywa

Ze zmieniającymi się trendami w branży oprogramowania, proces debugowania jest również ulec zmianie. Pojawiają się nowe metody testowania oprogramowania, takich jak usługi orientirovannae architektury (SOA), technologii bezprzewodowych, usług mobilnych, i tak dalej. E., otworzyły się nowe sposoby testowania oprogramowania. Niektóre z tych zmian, które są oczekiwane w branży w ciągu najbliższych kilku lat są wymienione poniżej:

  • testery zapewni lekki model, że deweloperzy będą mogli sprawdzić swój kod;
  • Rozwój metod badawczych, w tym oglądania i modelowanie programów na wczesnym etapie, wyeliminuje wiele sprzeczności;
  • Obecność test wielokrotnego przechwycenia skróci czas wykrywania błędów;
  • Analizator statyczne i środki wykrywania do szerszego stosowania;
  • stosowanie matryc mineralnych, takich jak pokrycie specyfikacji zakres pokrycia modelu i kodu określi realizacji projektów;
  • kombinatoryczne narzędzia pozwalają testerom określić obszary priorytetowe dla debugowania;
  • testery zapewni bardziej intuicyjne i cenne usługi w całym procesie rozwoju oprogramowania;
  • debuggery mogą tworzyć narzędzia i metody testowania oprogramowania pisane i interakcji z różnych języków programowania;
  • Eksperci debugowania będzie bardziej profesjonalnie przeszkoleni.

Zostaną zastąpione przez nowe metody testowania oprogramowania biznesowych zorientowanych, aby zmienić sposób interakcji z systemami i informacji, jakie podają przy jednoczesnym zmniejszeniu ryzyka i zwiększenie korzyści z przemian gospodarczych.