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
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.
- 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.