Testowanie oprogramowania - poziomy
Podczas procesu testowania są różne poziomy. W tym rozdziale przedstawiono krótki opis tych poziomów.
Poziomy testowania obejmują różne metodologie, których można używać podczas przeprowadzania testów oprogramowania. Główne poziomy testowania oprogramowania to -
Testy funkcjonalności
Testowanie niefunkcjonalne
Testy funkcjonalności
Jest to rodzaj testu czarnoskrzynkowego, który opiera się na specyfikacjach testowanego oprogramowania. Aplikacja jest testowana przez wprowadzenie danych wejściowych, a następnie sprawdzane są wyniki, które muszą być zgodne z funkcjonalnością, do której została przeznaczona. Testowanie funkcjonalne oprogramowania przeprowadza się na kompletnym, zintegrowanym systemie w celu oceny zgodności systemu z określonymi wymaganiami.
Testowanie aplikacji pod kątem funkcjonalności obejmuje pięć kroków.
Kroki | Opis |
---|---|
ja | Określenie funkcjonalności, jaką ma wykonywać zamierzona aplikacja. |
II | Tworzenie danych testowych na podstawie specyfikacji aplikacji. |
III | Dane wyjściowe oparte na danych testowych i specyfikacjach aplikacji. |
IV | Pisanie scenariuszy testowych i wykonywanie przypadków testowych. |
V | Porównanie rzeczywistych i oczekiwanych wyników na podstawie wykonanych przypadków testowych. |
Skuteczna praktyka testowania pozwoli zastosować powyższe kroki w polityce testowania każdej organizacji, a tym samym zapewni, że organizacja zachowuje najsurowsze standardy, jeśli chodzi o jakość oprogramowania.
Testów jednostkowych
Ten typ testowania jest wykonywany przez programistów przed przekazaniem konfiguracji zespołowi testowemu w celu formalnego wykonania przypadków testowych. Testy jednostkowe są przeprowadzane przez odpowiednich programistów na poszczególnych obszarach przypisanych do kodu źródłowego. Programiści używają danych testowych, które różnią się od danych testowych zespołu zapewniania jakości.
Celem testów jednostkowych jest wyodrębnienie każdej części programu i pokazanie, że poszczególne części są poprawne pod względem wymagań i funkcjonalności.
Ograniczenia testów jednostkowych
Testowanie nie może wychwycić każdego błędu w aplikacji. Niemożliwe jest oszacowanie każdej ścieżki wykonania w każdej aplikacji. To samo dotyczy testów jednostkowych.
Istnieje ograniczenie liczby scenariuszy i danych testowych, których deweloper może użyć do zweryfikowania kodu źródłowego. Po wyczerpaniu wszystkich opcji nie pozostaje nic innego jak przerwać testy jednostkowe i scalić segment kodu z innymi jednostkami.
Testy integracyjne
Testowanie integracyjne definiuje się jako testowanie połączonych części aplikacji w celu określenia, czy działają one poprawnie. Testowanie integracyjne można przeprowadzić na dwa sposoby: oddolne testy integracyjne i odgórne testy integracyjne.
Sr.No. | Metoda testowania integracji |
---|---|
1 | Bottom-up integration Testowanie rozpoczyna się od testów jednostkowych, po których następują testy kombinacji jednostek o coraz wyższym poziomie zwanych modułami lub kompilacjami. |
2 | Top-down integration W ramach tego testu najpierw testowane są moduły najwyższego poziomu, a następnie testowane są stopniowo moduły niższego poziomu. |
W kompleksowym środowisku programistycznym najpierw przeprowadza się testy oddolne, a następnie odgórne. Proces kończy się wielokrotnymi testami całej aplikacji, najlepiej w scenariuszach naśladujących rzeczywiste sytuacje.
Testowanie systemu
Testowanie systemu testuje system jako całość. Po zintegrowaniu wszystkich komponentów aplikacja jako całość jest rygorystycznie testowana w celu sprawdzenia, czy spełnia określone standardy jakości. Ten rodzaj testów jest wykonywany przez wyspecjalizowany zespół testowy.
Testowanie systemu jest ważne z następujących powodów -
Testowanie systemu to pierwszy krok w cyklu życia oprogramowania, w którym aplikacja jest testowana jako całość.
Aplikacja jest dokładnie testowana pod kątem zgodności ze specyfikacjami funkcjonalnymi i technicznymi.
Aplikacja jest testowana w środowisku bardzo zbliżonym do środowiska produkcyjnego, w którym aplikacja zostanie wdrożona.
Testowanie systemu umożliwia nam testowanie, weryfikację i walidację zarówno wymagań biznesowych, jak i architektury aplikacji.
Testowanie regresji
Za każdym razem, gdy wprowadzana jest zmiana w aplikacji, jest całkiem możliwe, że zmiana ta wpłynęła na inne obszary aplikacji. Testy regresyjne są wykonywane w celu sprawdzenia, czy naprawiony błąd nie spowodował naruszenia innej funkcjonalności lub reguły biznesowej. Celem testów regresyjnych jest upewnienie się, że zmiana, taka jak naprawa błędu, nie spowoduje wykrycia innego błędu w aplikacji.
Testowanie regresji jest ważne z następujących powodów -
Zminimalizuj luki w testowaniu, gdy aplikacja z wprowadzonymi zmianami ma zostać przetestowana.
Testowanie nowych zmian w celu sprawdzenia, czy wprowadzone zmiany nie wpłynęły na żaden inny obszar aplikacji.
Ogranicza ryzyko podczas przeprowadzania testów regresyjnych w aplikacji.
Zakres testów jest zwiększony bez uszczerbku dla terminów.
Zwiększ szybkość wprowadzania produktu na rynek.
Testy akceptacyjne
Jest to prawdopodobnie najważniejszy rodzaj testów, ponieważ jest przeprowadzany przez Zespół Zapewnienia Jakości, który oceni, czy aplikacja spełnia założone specyfikacje i spełnia wymagania klienta. Zespół ds. Kontroli jakości będzie miał zestaw gotowych scenariuszy i przypadków testowych, które zostaną wykorzystane do przetestowania aplikacji.
Będzie udostępnionych więcej pomysłów na temat aplikacji i będzie można przeprowadzić więcej testów, aby ocenić jej dokładność i powody, dla których projekt został zainicjowany. Testy akceptacyjne mają na celu nie tylko wskazanie prostych błędów ortograficznych, błędów kosmetycznych lub luk w interfejsie, ale także wskazanie wszelkich błędów w aplikacji, które spowodują awarie systemu lub poważne błędy w aplikacji.
Wykonując testy akceptacyjne aplikacji, zespół testujący ograniczy sposób, w jaki aplikacja będzie działać na produkcji. Istnieją również wymogi prawne i umowne dotyczące akceptacji systemu.
Testy alfa
Ten test jest pierwszym etapem testowania i zostanie przeprowadzony przez zespoły (deweloperów i zespoły ds. Kontroli jakości). Testy jednostkowe, testy integracyjne i testy systemowe w połączeniu ze sobą określane są jako testy alfa. Na tym etapie w aplikacji zostaną przetestowane następujące aspekty -
Błędy w wymowie
Zepsute połączenia
Pochmurne kierunki
Aplikacja zostanie przetestowana na maszynach o najniższej specyfikacji, aby przetestować czasy ładowania i wszelkie problemy z opóźnieniami.
Testowanie beta
Ten test jest wykonywany po pomyślnym wykonaniu testów alfa. W testach beta próbka docelowej grupy odbiorców testuje aplikację. Testy beta są również znane jakopre-release testing. Wersje beta testowe oprogramowania są idealnie rozprowadzane do szerokiego grona odbiorców w Internecie, częściowo po to, aby dać programowi test „w prawdziwym świecie”, a częściowo po to, aby zapewnić podgląd następnej wersji. W tej fazie publiczność będzie testować następujące elementy -
Użytkownicy zainstalują, uruchomią aplikację i wyślą swoje opinie do zespołu projektowego.
Błędy typograficzne, zagmatwany przepływ aplikacji, a nawet awarie.
Otrzymując informację zwrotną, zespół projektowy może rozwiązać problemy przed udostępnieniem oprogramowania rzeczywistym użytkownikom.
Im więcej naprawisz problemów, które rozwiązują rzeczywiste problemy użytkowników, tym wyższa będzie jakość Twojej aplikacji.
Posiadanie aplikacji wyższej jakości po udostępnieniu jej dla ogółu społeczeństwa zwiększy satysfakcję klienta.
Testowanie niefunkcjonalne
Ta sekcja jest oparta na testowaniu aplikacji pod kątem jej niefunkcjonalnych atrybutów. Testowanie niefunkcjonalne obejmuje testowanie oprogramowania pod kątem wymagań, które są z natury niefunkcjonalne, ale ważne, takie jak wydajność, bezpieczeństwo, interfejs użytkownika itp.
Poniżej omówiono niektóre ważne i powszechnie używane typy testów niefunkcjonalnych.
Test wydajności
Służy głównie do identyfikowania wąskich gardeł lub problemów z wydajnością, a nie do wyszukiwania błędów w oprogramowaniu. Istnieją różne przyczyny, które przyczyniają się do obniżenia wydajności oprogramowania -
Opóźnienie sieciowe
Przetwarzanie po stronie klienta
Przetwarzanie transakcji w bazie danych
Równoważenie obciążenia między serwerami
Renderowanie danych
Testowanie wydajnościowe jest uważane za jeden z ważnych i obowiązkowych typów testów pod względem następujących aspektów -
Szybkość (tj. Czas odpowiedzi, renderowanie danych i dostęp)
Capacity
Stability
Scalability
Testowanie wydajności może być jakościowe lub ilościowe i można je podzielić na różne podtypy, takie jak Load testing i Stress testing.
Testowanie obciążenia
Jest to proces testowania zachowania oprogramowania poprzez zastosowanie maksymalnego obciążenia w zakresie dostępu oprogramowania do dużych danych wejściowych i manipulowania nimi. Można to zrobić w warunkach obciążenia normalnego i szczytowego. Ten typ testowania identyfikuje maksymalną wydajność oprogramowania i jego zachowanie w godzinach szczytu.
W większości przypadków testy obciążenia są wykonywane za pomocą zautomatyzowanych narzędzi, takich jak Load Runner, AppLoader, IBM Rational Performance Tester, Apache JMeter, Silk Performer, Visual Studio Load Test itp.
Użytkownicy wirtualni (VUsers) są definiowani w narzędziu do automatycznego testowania, a skrypt jest wykonywany w celu weryfikacji testów obciążenia oprogramowania. Liczbę użytkowników można zwiększać lub zmniejszać jednocześnie lub przyrostowo w zależności od wymagań.
Test naprężeń
Testy warunków skrajnych obejmują testowanie zachowania oprogramowania w nietypowych warunkach. Na przykład może obejmować zabranie niektórych zasobów lub zastosowanie obciążenia przekraczającego faktyczny limit obciążenia.
Celem testów warunków skrajnych jest przetestowanie oprogramowania poprzez przyłożenie obciążenia do systemu i przejęcie zasobów wykorzystywanych przez oprogramowanie do identyfikacji punktu zerwania. Testowanie to można przeprowadzić, testując różne scenariusze, takie jak -
Losowe zamykanie lub ponowne uruchamianie portów sieciowych
Włączanie lub wyłączanie bazy danych
Uruchamianie różnych procesów, które zużywają zasoby, takie jak procesor, pamięć, serwer itp.
Test użyteczności
Testowanie użyteczności jest techniką czarnej skrzynki i służy do identyfikowania wszelkich błędów i ulepszeń w oprogramowaniu poprzez obserwację użytkowników podczas ich użytkowania i działania.
Według Nielsena użyteczność można zdefiniować za pomocą pięciu czynników, tj. Efektywności użytkowania, zdolności uczenia się, zdolności zapamiętywania, błędów / bezpieczeństwa i satysfakcji. Według niego użyteczność produktu będzie dobra, a system będzie zdatny do użytku, jeśli posiada powyższe czynniki.
Nigel Bevan i Macleod uznali, że użyteczność to wymóg jakościowy, który można zmierzyć jako wynik interakcji z systemem komputerowym. Wymóg ten może zostać spełniony, a użytkownik końcowy będzie usatysfakcjonowany, jeśli zamierzone cele zostaną skutecznie osiągnięte przy użyciu odpowiednich zasobów.
Molich w 2000 roku stwierdził, że system przyjazny dla użytkownika powinien spełniać pięć następujących celów, tj. Łatwy do nauczenia, łatwy do zapamiętania, wydajny w użyciu, zadowalający w użyciu i łatwy do zrozumienia.
Oprócz różnych definicji użyteczności, istnieją pewne standardy i modele jakości oraz metody, które definiują użyteczność w postaci atrybutów i atrybutów podrzędnych, takich jak ISO-9126, ISO-9241-11, ISO-13407 i IEEE std. 610.12 itp.
Testowanie interfejsu użytkownika a testowanie użyteczności
Testowanie interfejsu użytkownika obejmuje testowanie graficznego interfejsu użytkownika oprogramowania. Testowanie interfejsu użytkownika zapewnia, że interfejs GUI działa zgodnie z wymaganiami i jest testowany pod względem koloru, wyrównania, rozmiaru i innych właściwości.
Z drugiej strony, testy użyteczności zapewniają dobry i przyjazny dla użytkownika interfejs, który można łatwo obsługiwać. Testowanie interfejsu użytkownika można traktować jako część składową testów użyteczności.
Testowanie bezpieczeństwa
Testy bezpieczeństwa obejmują testowanie oprogramowania w celu zidentyfikowania wszelkich wad i luk z punktu widzenia bezpieczeństwa i podatności. Poniżej wymienione są główne aspekty, które powinny zapewnić testy bezpieczeństwa -
Confidentiality
Integrity
Authentication
Availability
Authorization
Non-repudiation
Oprogramowanie jest zabezpieczone przed znanymi i nieznanymi lukami
Dane oprogramowania są bezpieczne
Oprogramowanie jest zgodne ze wszystkimi przepisami bezpieczeństwa
Sprawdzanie i walidacja danych wejściowych
Ataki typu SQL insertion
Wady wtrysku
Problemy z zarządzaniem sesjami
Ataki typu cross-site scripting
Bufor przepełnia luki w zabezpieczeniach
Ataki typu Directory traversal
Testowanie przenośności
Testowanie przenośności obejmuje testowanie oprogramowania w celu zapewnienia jego ponownego użycia oraz możliwości przeniesienia go z innego oprogramowania. Poniżej przedstawiono strategie, których można użyć do testowania przenośności -
Przenoszenie zainstalowanego oprogramowania z jednego komputera na inny.
Tworzenie pliku wykonywalnego (.exe) w celu uruchamiania oprogramowania na różnych platformach.
Testowanie przenośności można uznać za jedną z części podrzędnych testowania systemu, ponieważ ten typ testowania obejmuje ogólne testowanie oprogramowania pod kątem jego wykorzystania w różnych środowiskach. Sprzęt komputerowy, systemy operacyjne i przeglądarki są głównym celem testów przenośności. Niektóre z warunków wstępnych testów przenośności są następujące:
Oprogramowanie powinno być zaprojektowane i zakodowane, mając na uwadze wymagania dotyczące przenośności.
Na powiązanych komponentach przeprowadzono testy jednostkowe.
Przeprowadzono testy integracyjne.
Środowisko testowe zostało utworzone.