Testowanie aplikacji i systemów - Testy jednostkowe, komponentów, systemowe, akceptacyjne, alfa i beta

1. Testowanie jednostkowe to sposób na sprawdzenie, czy nasze funkcje kodu działają poprawnie i bezpiecznie. Pozwala nam to wykrywać i poprawiać błędy w naszych algorytmach i logice. Testy jednostkowe powinny być wykonywane często podczas programowania, aby szybko zauważyć i naprawić problemy. 

Zalety testów jednostkowych:
  • programiści mogą uruchomić testy jednostkowe po każdej zmianie kodu
  • można je uruchomić nawet kilka razy na minutę
  • kod testów jest łatwy do napisania
  • w przyszłości można zapobiec zmianom w funkcjonalności
2. Testy komponentów to sposób na sprawdzenie, jak działają poszczególne elementy aplikacji w kontekście zastosowania. Testy te są wykonywane dla każdego elementu osobno, aby wykryć i poprawić wady w module i oprogramowaniu. Robione przez testera i mogą być odseparowane od reszty systemu przez symulowane interfejsy. Po testowaniu komponentów następują testy integracji

3. Testy integracyjne to sposób na sprawdzenie, jak działają różne części systemu lub systemy ze sobą. Wymagają one uruchomienia całego klastera węzłów i są czasochłonne. Sprawdzają również interfejsy i interakcje między komponentami (system operacyjny, system plików i sprzętu lub interfejsów pomiędzy
systemami). Testy integracyjne są wykonywane po zintegrowaniu dwóch lub więcej modułów. Mają dwa podejścia: “z góry” i “na dół”.
  • typu "wielki wybuch" - wszystkie elementy lub moduły są włączone równocześnie, po czym wszystko jest testowane jako całość (czasochłonne i trudne do śledzenia przyczyn awarii z powodu późnej integracji)
  • typu wstępującego - odbywa się od dołu kontroli przepływu do góry (podstawowe funkcje testowane są pod koniec cyklu)
  • testy integracji typu zstępującego - testowanie odbywa się od góry do dołu, po kontroli przepływu lub strukturę (np. od menu głównego lub GUI). W tym podejściu rozwój oprogramowania oraz testowanie można zrealizować razem, tak aby produkt lub aplikacja były skuteczne i zgodne ze specyfikacją klienta.
  • testowanie przyrostowe - testowanie przyrostowe to sposób na sprawdzenie, jak działają programiści zintegrowani, którzy pracują kolejno i testują po każdym kroku. Testowanie przyrostowe ma zaletę, że szybko wykrywa wady, ale wadą jest to, że wymaga tworzenia i używania gałęzi i skierowań.
4. Testy zgodności i integracji systemu obiektowego oprogramowania są przeprowadzane w celu sprawdzenia, czy wszystkie komponenty systemu działają zgodnie z nową lub zmienioną specyfikacją systemu. Celem takich testów jest prototyp i symulowanie obiektowo-zorientowanych specyfikacji tak, by odkryć nowe metody skutecznego i efektywnego testowania obiektowo-zorientowanych, opartych na komponentach systemów informatycznych.

5. Testowanie integracji systemu to proces sprawdzający, czy wszystkie powiązane systemy utrzymują integralność danych i mogą współpracować z innymi systemami. Proces ten zapewnia, że wszystkie składowe są prawidłowo zintegrowane i działają zgodnie z oczekiwaniami. SIT koncentruje się na badaniu zależności między komponentami i często wykorzystuje testy regresji. Testowanie regresywne ułatwia dodawanie nowych przypadków testowych, a SIT skupia się na dostępie do rzeczywistych danych przekazywanych przez komponenty i wstępnym połączeniu. Głównym celem badania SIT jest testowanie automatyzacji zagregowanych elementów i zależności, jakie występują między nimi.

Przypadki testowe SIT są opracowywane przy takich użyciu technik projektowania
testów, jak na przykład:
➢ testowanie przypadków użycia 
➢ testy obciążeniowe 
➢ testy użyteczności 
➢ testowanie wielokości oraz inne.

6. Testy systemowe to rodzaj testów, który pozwala sprawdzić zachowanie kompletnego i w pełni zintegrowanego oprogramowania na podstawie specyfikacji wymagań. Głównym celem jest ocena ryzyka i specyfikacji wymagań, procesu biznesowego, przypadków użycia i innych opisów wysokiego szczebla. Testy systemowe należą do testowania typu czarnej skrzynki, gdzie analizowane jest zewnętrzne działanie oprogramowania na podstawie dokumentów wymagań i punktu widzenia użytkownika. Testowanie to przeprowadzane jest po testowaniu integracyjnym i weryfikuje wymagania funkcjonalne i niefunkcjonalne. Testerzy koncentrują się na znalezieniu błędów na podstawie zachowania aplikacji, projektowania oprogramowania i oczekiwań użytkownika.

7. Główne typy testów systemowych:
  • Testy użyteczności skupia się głównie na łatwości użytkownika do korzystania z aplikacji,
  • elastyczności w prowadzeniu kontroli i zdolności systemu do spełnienia swoich celów i wymagań.
  • Testy regresywne są wykonane, aby upewnić się, że żadna ze zmian, wprowadzonych w trakcie procesu rozwoju, nie spowodowała nowego błędy. To również pokazuje, że stare błędy się nie pojawiły przy dodaniu nowych modułów oprogramowania w czasie.
  • Testy odzyskiwania są po to, by pokazać, że oprogramowanie jest dobre, godne zaufania i może skutecznie odzyskać od ewentualnych awarii.
  • Testy migracyjne są wykonywane w celu zapewnienia, że oprogramowanie może zostać przeniesione ze starszych systemów do aktualnej infrastruktury systemu bez żadnych problemów.
  • Testy funkcjonalne albo kompletne testy funkcjonalne starają się „pomyśleć” o ewentualnych brakujących funkcjach.
  • Testy sprzętu / oprogramowania skupiają się na interakcji pomiędzy sprzętem i oprogramowaniem w czasie testowania systemu.
8. Testy akceptacyjne najczęściej koncentruje się na testowaniu walidacji. Mogą pojawić się w więcej niż jednym poziomie:
  • Testowanie akceptacyjne użyteczności składnika może być wykonane podczas testów komponentów.
  • Testy akceptacyjne nowej poprawności funkcjonalnej mogą się prowadzić w testowaniu systemu.
Rodzaje testów akceptacyjnych:
  • Test akceptacji użytkownika - skupia się przede wszystkim na funkcjonalności w sposób przydatności do użycia systemu przez użytkowników biznesowych
  • Test akceptacji Operacyjnej - sprawdza czy system spełnia wymagania dotyczące pracy
  • Test Akceptacji Kontraktu - jest wykonywany na podstawie kryteriów akceptacji zamówienia dla produkcji niestandardowego opracowanego oprogramowania.
  • Testy Akceptacyjne Zgodności - odbywają się w kontekście przepisów prawa, które muszą być przestrzegane, takich jak regulacje rządowe, prawne lub bezpieczeństwa.
9. Alfa testowanie to jedna z najczęściej stosowanych strategii testowania oprogramowania, która odbywa się na stronie dewelopera i ma na celu symulację prawdziwych użytkowników przy użyciu technik czarnej i białej skrzynki. Deweloper obserwuje problemy użytkowników i zapisuje je do dalszej analizy. Testowanie to odbywa się na etapie, kiedy rozwój produktu praktycznie się zakończył, a drobne zmiany w projekcie mogą być wprowadzane w wyniku alfa testów. Testy alfa składają się z dwóch części:
  • testowanie przez wewnętrznych programistów (szybkie wychwycenie błędów)
  • oprogramowanie jest przekazywane do pracowników kontroli jakości
10. Zalety alfa testów:
  • zapewniają lepszy wgląd na temat niezawodności oprogramowania na wcześniejszym etapie
  • pomagają w symulacji w czasie rzeczywistym zachowań użytkowników i środowiska, 
  • wykrywają wiele poważnych błędów, 
  • mają zdolność do wczesnego wykrywania błędów w odniesieniu do projektowania i funkcjonalności.
Alfa testy nie służą do głębokiego testowania!

11. Beta testy odbywają się na stronie klienta, który instaluje system/oprogramowanie i używa go w
warunkach pracy w rzeczywistości. Pozwala to odkryć jakiekolwiek z punktu widzenia użytkownika
błędy lub problemy, który nie chciałby mieć w swojej ostatecznej, wydanej wersji aplikacji.

Rodzaje beta testów:
  • Tradycyjne beta testowanie – produkt jest sprzedawany na rynku docelowym, a zebrane dane są zebrane we wszystkich aspektach. Dane te mogą być wykorzystane w celu ulepszenia produktu.
  • Publiczne beta testowanie – produkt jest publicznie wydany na świat zewnętrzny za pośrednictwem kanałów internetowych oraz dane mogą być zbierane od kogokolwiek. Na podstawie informacji zwrotnych można ulepszyć produkt.
  • Techniczne beta testy – produkt jest podany do wewnętrznej grupy organizacji i zbiera się informacje / dane z pracowników tej organizacji.
  • Skoncentrowane beta testowanie – produkt jest wprowadzony na rynek do zbierania opinii na temat konkretnych funkcji programu. Na przykład, dodatkowa, niezwykle ważna funkcjonalność oprogramowania.
  • Następująca edycja beta – produkt jest wprowadzone na rynek, a dane są zbierane w celu usprawnienia w zakresie przyszłej wersji produktu.