Ogromne firmy programistyczne, takie jak Google, odnoszą sukces pomimo błędów o niskim priorytecie w swoim oprogramowaniu, ale mniejsze firmy i startupy nie mają tego luksusu.
Klienci oczekują, że produkty zrobią to, co roszczą na stronie sprzedaży lub w dokumentacji. Przy tak wielu dostępnych opcjach, nie zastanawiają się dwa razy nad skokiem statku, jeśli produkt marnuje swój czas i pieniądze. Dlatego przed wydaniem oprogramowania oprogramowanie przechodzi rygorystyczne testy w celu:
podkreśl różnice między pierwotną koncepcją a ostatecznym wynikiem
sprawdzić, czy oprogramowanie działa w sposób zaplanowany przez projektantów
sprawdź produkt końcowy - produkt musi spełniać wymagania klienta
oceniać cechy i jakość
Testowanie odbywa się według ścisłego schematu. Optymalizuje to wykorzystanie cennych zasobów - umiejętności, czasu i pieniędzy, a jednocześnie dostarcza zainteresowanym stronom istotnych informacji, dzięki którym produkt może się rozwijać. Celem jest ułatwienie dobrego doświadczenia końcowego użytkownika poprzez silny program zapewnienia jakości . Przy tak wysokich stawkach menedżerowie kontroli jakości są jednymi z najlepiej zarabiających w branży technicznej. Testowanie zazwyczaj przebiega według następujących kroków:
Analiza wymagań, w której menedżerowie przedstawiają plan wprowadzenia odpowiedniej strategii testowej.
Rozpoczęcie testów i analiza wyników.
Wszelkie defekty są korygowane, a oprogramowanie przechodzi testy regresyjne - system do sprawdzenia programu działa po modyfikacji.
Raport zamknięcia testu zawiera szczegółowy opis całego procesu i jego wyników.
Metody testowania oprogramowania
Oto różne metody oceny zachowania i wydajności produktu.
Testowanie czarnej skrzynki i białej skrzynki to dwie podstawowe metody.
- Testowanie w Black Box - zwane również testowaniem funkcjonalnym lub opartym na specyfikacji, ta metoda koncentruje się na wynikach. Testerzy nie są zainteresowani mechanizmami wewnętrznymi. Sprawdzają tylko, czy oprogramowanie robi to, co powinno. Znajomość kodowania nie jest konieczna, a testerzy pracują na poziomie interfejsu użytkownika.
- Testowanie w białej skrzynce - ta metoda wykorzystuje know-how do kodowania jako część procedury testowej. Kiedy produkt się nie powiedzie, testerzy wchodzą tak głęboko w kod, jak to konieczne, aby znaleźć przyczynę. Programiści robią to sami, ponieważ określają, jak produkt powinien działać. Badanie struktury i szklane pudełko to inne nazwy tej metody.
- Testy statyczne - testerzy badają kod oprogramowania i dokumentację, ale nie wykonują programu. Testy statyczne rozpoczynają się wcześnie podczas opracowywania produktu.
- Testowanie dynamiczne - Oprogramowanie jest wykonywane z różnymi wejściami, a testerzy porównują wyniki z oczekiwanym zachowaniem za pomocą tej metody.
- Testowanie GUI - To testuje charakterystykę GUI - formatowanie tekstu, pola tekstowe, przyciski, listy, układ, kolory, czcionki, rozmiary czcionek i tak dalej. Testowanie GUI jest czasochłonne, a firmy trzecie często podejmują się tego zadania zamiast programistów.
Poziomy testów
Są one niezbędne do zidentyfikowania obszarów słabości i nakładania się na każdym etapie cyklu życia oprogramowania.
- Testowanie jednostkowe - programiści testują najbardziej podstawowe części kodu, takie jak klasy, interfejsy i funkcje / procedury. Wiedzą, jak powinien reagować ich kod i mogą dokonywać korekt w zależności od wydajności.
- Testowanie komponentów - Inne nazwy to testowanie modułów lub programów. Jest podobny do testowania jednostkowego, ale zawiera wyższy poziom integracji. Moduły oprogramowania są testowane pod kątem defektów w celu zweryfikowania ich indywidualnej funkcji.
- Testy integracyjne - identyfikuje błędy, gdy moduły są zintegrowane. Różne testy integracji są oddolne, zstępujące i funkcjonalne przyrostowe.
- Testowanie systemu - komponenty projektu są testowane jako całość w różnych środowiskach za pomocą tej metody. Podlega ona metodzie czarnej skrzynki i jest jednym z ostatecznych testów w tym procesie. Określa, czy system działa tak, jak powinien, w celu spełnienia potrzeb biznesowych i użytkowników.
- Testowanie alfa - personel wewnętrzny testuje oprogramowanie w witrynie programisty w symulowanym lub rzeczywistym środowisku. Następnie programiści naprawiają błędy i inne problemy.
- Testy beta - Znane również jako testy w terenie, klient testuje produkt na własnej stronie w rzeczywistych warunkach. Klient może zaoferować grupie użytkowników końcowych możliwość przetestowania oprogramowania w wersjach pre-release lub beta. Informacje zwrotne dotyczące możliwych ulepszeń są następnie wysyłane do programisty.
- Testy akceptacyjne - również w zakresie testowania czarnej skrzynki klient testuje oprogramowanie, aby sprawdzić, czy programista opracował program zgodnie z wymaganiami.
Typy testów
Te testy oprogramowania koncentrują się na konkretnych celach.
- Testowanie instalacji - inżynier testujący oprogramowanie i menedżer konfiguracji przeprowadzają ten test, aby zapewnić użytkownikowi końcowemu możliwość zainstalowania i uruchomienia programu. Obejmuje obszary takie jak pliki instalacyjne, lokalizacje instalacji i uprawnienia administracyjne.
- Testowanie rozwoju - implementuje szereg zsynchronizowanych strategii wykrywania i zapobiegania defektom. Obejmuje on statyczną analizę kodu, przeglądy w kodzie peer, śledzenie i analizę danych. Celem jest zmniejszenie ryzyka i zmniejszenie kosztów.
- Testowanie użyteczności - w tym teście uwaga skupia się na doświadczeniu użytkownika. Mierzy, jak dobrze zaprojektowany jest GUI i jego łatwość użycia. Test sprawdza dokładność i skuteczność funkcji oraz reakcje emocjonalne badanych osób.
- Testowanie poczytalności - Wskazuje, czy oprogramowanie warte jest czasu i kosztów, aby kontynuować dalsze testy. Zbyt wiele wad i bardziej agresywnych testów nie następuje.
- Testowanie dymu - badanie dymu ujawnia podstawowe awarie, które są na tyle poważne, że uniemożliwiają uwolnienie. Kiedy odbywa się to w nowej wersji, nazywa się to testem weryfikacji wersji.
- Testy regresyjne - kiedy system przechodzi modyfikację, testowanie regresji monitoruje nieoczekiwane zachowanie. Wskazuje niekorzystny wpływ na moduły lub komponenty.
- Testy niszczące - testerzy wprowadzają nieprawidłowe wpisy i dostrzegają zdolność oprogramowania do zarządzania nieoczekiwanymi danymi wejściowymi. To pokazuje programistom, jak solidny jest program zarządzania błędami.
- Testowanie odzyskiwania - w przypadku awarii sprzętu lub innych funkcji ten test pokazuje, w jakim stopniu oprogramowanie może odzyskać i kontynuować działanie.
- Zautomatyzowane testowanie - wykonuje funkcje trudne do ręcznego wdrożenia. Wykorzystuje określone oprogramowanie do uruchamiania testów i dostarczania danych na temat rzeczywistych i oczekiwanych wyników.
- Testy kompatybilności - Oprogramowanie musi działać w różnych środowiskach komputerowych, więc sprawdza zgodność z różnymi systemami. Na przykład, czy oprogramowanie działa z różnymi systemami operacyjnymi i przeglądarkami internetowymi?
- Testy wydajności - jest to dogłębny test sprawdzający wydajność oprogramowania w różnych sytuacjach. Uzyskano informacje na temat reakcji, stabilności, alokacji zasobów i szybkości. Ponadto, podtesty, takie jak objętość, pojemność i testy szczytowe, odgrywają rolę w tym procesie.
- Testowanie bezpieczeństwa - mierzy zdolność oprogramowania do ochrony bezpieczeństwa użytkowników. Oznacza to funkcje autoryzacji, uwierzytelnianie, poufność, integralność, dostępność i niezaprzeczalność.
- Testy dostępności - to nie to samo, co testowanie użyteczności. Określa to, w jakim stopniu użytkownicy o różnych zdolnościach - włączając w to uczenie się i niepełnosprawność fizyczną - mogą korzystać z oprogramowania.
- Internacjonalizacja i testowanie lokalizacji - wyniki pokazują, w jaki sposób oprogramowanie może dostosować się do różnych języków i wymagań regionalnych. Obejmuje to dodawanie komponentów do określonych lokalizacji i tłumaczenie tekstu.
Testowanie oprogramowania jest istotną częścią wprowadzenia produktu na rynek. Bez testerów szeroki zakres dostępnego oprogramowania nie istniałby. Zostań certyfikowanym testerem oprogramowania przez takie organizacje, jak BCS, The Chartered Institute for IT, ISTQB® (International Software Testing Qualification Board) i ASQ (dawniej American Society for Quality).