system testing vs end end testing
Przegląd Testowanie systemu i testy od końca do końca:
Kompleksowe testowanie i testowanie systemu zawsze idą w parze, ale nawet doświadczony tester może być zdezorientowany ogromnymi korzyściami, jakie oferuje każda z nich i wybrać tylko jedną.
W tym artykule postaramy się przedyskutować między testowaniem od końca do końca a testowaniem systemu. Aby zrozumieć różnicę między nimi, najpierw zrozumiemy, przez jakie etapy przechodzi każdy rozwijany produkt.
W branży oprogramowania zawsze stoimy przed dylematem wyboru między szybszym wydaniem a wydaniem wysokiej jakości, ale zawsze istnieje między nimi równowaga. Wszyscy oczekujemy jednocześnie szybkości i jakości, która jest trudniejsza.
Czego się nauczysz:
- Życie testowanego produktu
- Co to jest testowanie systemu?
- Dlaczego testowanie systemu jest ważne?
- Kiedy rozpocząć testy systemu?
- Co to jest testowanie od końca do końca?
- Dlaczego testy od końca do końca są ważne?
- Kiedy zaczynać i kończyć testy?
- Różnica między testowaniem systemu a testowaniem typu end-to-end
- Testowanie systemu czy kompleksowe testowanie czy jedno i drugie?
- Wniosek
- rekomendowane lektury
Życie testowanego produktu
Cykl życia produktu rozpoczyna się w momencie uzyskania wymagań biznesowych od klienta. Zaangażowany zespół, który jest za to odpowiedzialny, dokona dokładnej analizy tych samych i dopracuje specyfikacje techniczne.
Specyfikacje te pomogą technikom lub programistom w rozpoczęciu pracy przy tworzeniu oprogramowania. Kroki, których tu dotyczy, wyjaśniono poniżej, aby ułatwić zrozumienie.
Krok 1: W oparciu o ogólny opis produktu, oprogramowanie jest podzielone na różne moduły, a następnie na komponenty lub jednostki. Jednostki te są rozwijane niezależnie, dzięki czemu ich rozwój może być kontynuowany równolegle, angażując wielu programistów.
Po opracowaniu jednostki te są testowane indywidualnie, które będą podlegać testom jednostkowym.
Krok 2: Indywidualna walidacja zapewnia, że wszystkie jednostki systemu działają zgodnie z oczekiwaniami, zarówno pod względem funkcjonalności, jak i wykonalności. Te komponenty, moduły lub podsystemy są integrowane z następnym poziomem, a następnie testowane jako zintegrowana jednostka w testowaniu integracji.
Krok 3: Na tym etapie pojawia się testowanie systemu, w którym zintegrowany produkt byłby testowany po raz pierwszy jako całość w środowisku pseudo-produkcyjnym. Ten poziom testowania jest wykonywany w celu sprawdzenia zgodności z funkcjonalnymi i niefunkcjonalnymi wymaganiami biznesowymi.
Krok 4: Jest to poziom testowania przeprowadzany pod kątem akceptacji klienta i dlatego nazywany jest testem akceptacji. Będzie to wykonywane tuż przed przekazaniem oprogramowania klientowi, którym jest środowisko produkcyjne.
Co to jest testowanie systemu?
Testowanie systemu jest czymś, co jest wykonywane po przeprowadzeniu testów integracyjnych, a przed testami akceptacyjnymi dowolnego dostępnego sprzętu lub oprogramowania.
Testowanie systemu przeprowadza się w celu przeanalizowania koordynacji sąsiadujących komponentów jako jednego systemu, aby upewnić się, że spełnia on normy jakości, czy nie. Głównym celem jest wykrycie defektów w międzyzespołach poprzez wykonanie testów funkcjonalnych i niefunkcjonalnych na zintegrowanym produkcie.
Testy niefunkcjonalne są wykonywane w celu upewnienia się, czy rozwijany produkt spełni oczekiwania biznesowe, czy nie. Przeprowadzane są w celu określenia czasu odpowiedzi aplikacji lub sprawdzenia zgodności lub obsługi instalacji, wydajności, regresji, skalowalności, bezpieczeństwa i kilku innych obszarów.
W związku z tym aplikacja musi wyczyścić zarówno poziomy funkcjonalny, jak i niefunkcjonalny, aby mieć pewność, że jeśli w inny sposób spełnia standardy rynkowe, może zepsuć reputację firmy.
Pozwólcie, że wyjaśnię na przykładzie aplikacji mobilnej do rezerwacji taksówki, takiej jak Uber:
Uber zapewnia możliwość rezerwacji taksówek online i ma różne moduły, takie jak śledzenie lokalizacji, bramki płatności, taryfy za taksówkę i profile kierowców, które można przetestować niezależnie jako część testów jednostkowych .
Gdy moduły te działają niezależnie, są one zintegrowane w celu przetestowania i zapewnienia, czy współpracują ze sobą Testy integracyjne.
Co więcej, wymagania klienta zaczną być sprawdzane tylko w testach systemowych, na przykład jeśli klient będzie w stanie znaleźć taksówkę najbliżej jego lokalizacji lub jeśli będzie w stanie dokonać płatności na rzecz Ubera, korzystając z wybranych przez siebie metod płatności itp.
Sprawdzanie poprawności tych scenariuszy zostało omówione w Testowanie systemu .
Dlaczego testowanie systemu jest ważne?
Testowanie systemu jest wymagane, ponieważ programiści / testerzy muszą sprawdzić kilka aspektów przed przejściem na następny poziom.
Kilka aspektów obejmuje:
- Musi mieć pewność, że oprogramowanie działa jako całość.
- Musi sprawdzić, czy produkt nie pomija żadnych wymagań funkcjonalnych i niefunkcjonalnych.
- Musi przetestować produkt w środowisku podobnym do produkcji.
- Musi sprawdzić produkt z danymi produkcyjnymi.
Testowanie systemu obejmuje scenariusze oparte na ryzyku biznesowym, przypadkach użycia lub opisach zachowania produktu na wysokim poziomie. Przypadki związane z interakcjami z różnymi zasobami systemowymi również powinny być częścią testowania systemu.
Dlatego powinien być przeprowadzony przez kogoś, kto ma pełną wiedzę na temat wymaganego produktu zarówno na poziomie architektury, jak i biznesu. Wiedza wewnętrzna na poziomie kodowania nie jest wymagana, ale znajomość systemu jest obowiązkowa dla testera.
Generalnie oddzielny zespół zostałby przydzielony do zadania Testowanie systemu, a zespół zaprojektuje własne plany testów systemowych i przypadki testowe systemu, które będą się różnić od tych wykonanych wcześniej pod względem pokrycia testami. W razie potrzeby można przeprowadzić wiele iteracji testowania systemu w kilku środowiskach.
Kiedy rozpocząć testy systemu?
Testowanie systemu można rozpocząć, gdy:
- Testy jednostkowe zostały pomyślnie zakończone dla wszystkich jednostek bez żadnych otwartych błędów.
- Wszystkie przetestowane komponenty są dobrze zintegrowane, a testy integracji zostały przeprowadzone pomyślnie.
- Do testowania produktu systemowego dostępne jest środowisko pseudo-produkcyjne.
- System Tester jest świadomy wszystkich wejść / wyjść systemu i jest gotowy z artefaktami testowymi.
Co to jest testowanie od końca do końca?
Testowanie oprogramowania jest ważnym parametrem zapewniania jakości oprogramowania. Dobra jakość produktu zawsze daje wyższy poziom satysfakcji zarówno wynalazcom, jak i kupującemu. Innymi słowy, produkt kwalifikowany lub premium to efekt gruntownej regresji i usunięcia wady na każdym poziomie.
Jak wyjaśnia sama nazwa, kompleksowe testy to jeden z poziomów testowania, na którym testowany jest przepływ aplikacji w połączeniu z systemami zależnymi. Ma to na celu zapewnienie płynnej interakcji z aplikacjami backend i front-end, takimi jak bazy danych lub GUI przy użyciu kanałów sieciowych, a zatem jest określane jako Testowanie łańcuchów także.
W przeciwieństwie do testowania systemu, testowanie interfejsu użytkownika nie odgrywa tutaj żadnej znaczącej roli, ale sprawdzane są podstawowe dane, które wprowadzają interfejs w tryb działania. Kompleksowe testy są zwykle przeprowadzane po zakwalifikowaniu produktu do testów systemowych.
Kontynuując nasz przykład Ubera w kompleksowej fazie testów, zweryfikujemy całą podróż klienta
Otwieranie aplikacji na urządzeniu mobilnym użytkownika -> znajdowanie taksówki dla podanego celu podróży -> Śledzenie kabiny przed lub w trakcie jazdy -> ukończenie jazdy i opłacenie jednej z opcji płatności -> na koniec rozliczenie kredytu na koncie kierowcy.
Przejście przez ten kompleksowy przepływ zapewnia klientowi możliwość zaspokojenia jego potrzeb. To testowanie jest ważne, aby zidentyfikować problemy z doświadczeniem klienta, szczególnie związane z wieloma połączonymi systemami.
Dlaczego testy od końca do końca są ważne?
Testowanie typu end-to-end odgrywa ważną rolę, gdy opracowany produkt musi być systemem rozproszonym i musi współpracować z innymi systemami w różnych środowiskach. W takich scenariuszach wymagana jest kontrola 360 stopni, aby zapewnić dokładną interakcję między różnymi platformami i środowiskami.
Główne cele testów end-to-end obejmują:
Porównanie narzędzi do zarządzania wymaganiami open source
- Aby upewnić się, że opracowany produkt jest dobrze skoordynowany z dowolnym jego podsystemem, który może być naszą własnością lub nie.
- Aby sprawdzić, czy wszystkie systemy przepływają z systemów źródłowych do systemów docelowych.
- Aby zweryfikować wymagania z perspektywy użytkownika końcowego.
- Aby zidentyfikować problemy w środowiskach, które są niejednorodne.
W razie potrzeby należy przeprowadzić powtarzalne testy, aby sprawdzić stan aplikacji. Czasami może wystąpić sytuacja, w której widzimy konflikt między programistą a testerem na podstawie zrozumienia obszarów aplikacji, na które ma to wpływ, z powodu drobnych zmian w kodzie.
Deweloperzy mogą uważać zmianę za minimalną, ale ta ewolucja jest na tyle znacząca, aby ponownie wykonać kompleksowe scenariusze testowe dla całego systemu. Może to jednak przesuwać terminy dostaw i może również zwiększać koszty.
Kiedy zaczynać i kończyć testy?
Zazwyczaj przeprowadza się testy typu end-to-end-
- Gdy produkt zostanie zakwalifikowany do testów systemowych, w których uwzględniono wszystkie aspekty funkcjonalne.
- Gdy zależne środowiska zostaną zidentyfikowane i dostępne do wykonania na poziomie przepływu.
- Gdy tester jest wyposażony w wymaganą wiedzę i artefakty testowe.
- Gdy tester posiada odpowiednie narzędzia, które mogą analizować przepływ danych.
Różnica między testowaniem systemu a testowaniem typu end-to-end
Poniżej podano kilka różnic między testowaniem systemu a testowaniem typu end-to-end:
Testowanie systemu | Testowanie od końca do końca |
---|---|
Opracowany produkt jest testowany pod kątem specyficznych wymagań technicznych określonych na podstawie wymagań biznesowych. | Opracowany produkt jest testowany wraz z zależnymi systemami zgodnie z wymaganiami biznesowymi. |
Obejmuje funkcjonalne i niefunkcjonalne aspekty testowania. | Obejmuje poziomy testowania interfejsów z uwzględnieniem wszystkich systemów źródłowych i docelowych. |
Przeprowadzane pod koniec cyklu życia oprogramowania. | Wykonywane po zakwalifikowaniu produktu do testów integracyjnych. |
Wszystkie funkcje zaimplementowane w produkcie byłyby dokładnie analizowane, aby odkryć nieoczekiwane rezultaty. | Przepływy procesów będą sprawdzane wraz z systemami frontend i backend oraz systemami średniego poziomu. |
Tester powinien dobrze rozumieć funkcjonalność tworzonego produktu. | Tester powinien dobrze rozumieć przepływy danych i przepływy pracy w systemie. |
Tester systemu nie musi przejmować się etapami cyklu życia produktu. | Kompleksowy tester musi zrozumieć wszystkie etapy. |
Testowanie systemu czy kompleksowe testowanie czy jedno i drugie?
Często testy systemu i testy kompleksowe są uważane za takie same, ale to nieprawda. Oba są różnymi formami testowania o różnym pokryciu testowym.
Podczas gdy testowanie typu end-to-end sprawdza przepływ czynności od zera do końca systemu obejmującego wszystkie systemy zależne, testowanie systemu sprawdzi tę samą funkcjonalność z innym zestawem danych wejściowych w celu oceny odpowiedzi.
Stąd pokrycie testu dla obu rodzajów testów będą różne.
Wniosek
Tester systemu musi mieć sposób myślenia prawdziwych użytkowników, podczas gdy tester end-to-end musi jednakowo rozumieć systemy wyższego i niższego szczebla.
Jak wyjaśniono powyżej, oba rodzaje testów mają równe znaczenie w cyklu rozwoju produktu i dlatego są wymagane do odkrycia defektów z różnych kategorii.
Mam nadzieję, że masz jasny pomysł, które testy wybrać? W międzyczasie możesz podzielić się swoimi doświadczeniami w sekcji komentarzy poniżej.
rekomendowane lektury
- Najlepsze narzędzia do testowania oprogramowania 2021 (Narzędzia do automatyzacji testów QA)
- Testing Primer Pobierz eBook
- Testy alfa i testy beta (kompletny przewodnik)
- Testy funkcjonalne a testy niefunkcjonalne
- Testowanie obciążenia za pomocą samouczków HP LoadRunner
- Różnica między testami na komputerach stacjonarnych, serwerach klienckich i testach internetowych
- Co to jest test gamma? Ostatni etap testów
- Kompletny przewodnik po testach weryfikacyjnych kompilacji (testy BVT)