Co to jest testowanie jednostkowe?

Co to jest testowanie jednostkowe?

Testów jednostkowych to rodzaj testowania oprogramowania, podczas którego testowane są poszczególne jednostki lub komponenty oprogramowania. Celem jest sprawdzenie, czy każda jednostka kodu oprogramowania działa zgodnie z oczekiwaniami. Testowanie jednostkowe odbywa się podczas opracowywania (fazy kodowania) aplikacji przez programistów. Testy jednostkowe izolują sekcję kodu i weryfikują jej poprawność. Jednostką może być pojedyncza funkcja, metoda, procedura, moduł lub obiekt.

W modelach SDLC, STLC, V testy jednostkowe są pierwszym poziomem testów przeprowadzanych przed testami integracyjnymi. Testowanie jednostkowe jest białeBox technika testowania, która jest zwykle wykonywana przez programistę. Chociaż w praktycznym świecie ze względu na brak czasu lub niechęć programistów do testów, inżynierowie ds. kontroli jakości przeprowadzają również testy jednostkowe.

Co to jest testowanie jednostkowe

Wyjaśnienie wideo dotyczące testowania jednostkowego

Po co przeprowadzać testy jednostkowe?

Testów jednostkowych jest ważne, ponieważ twórcy oprogramowania czasami próbują zaoszczędzić czas, wykonując minimalne testy jednostkowe i jest to mit, ponieważ niewłaściwe testowanie jednostkowe prowadzi do wysokich kosztów Wada ustalanie w trakcie Testowanie systemu, Testy integracyjne a nawet testy beta po zbudowaniu aplikacji. Jeśli na wczesnym etapie programowania zostaną przeprowadzone odpowiednie testy jednostkowe, ostatecznie oszczędza to czas i pieniądze.

Oto kluczowe powody, dla których warto przeprowadzać testy jednostkowe w inżynierii oprogramowania:

Poziomy testów jednostkowych
Poziomy testów jednostkowych
  1. Testy jednostkowe pomagają naprawiać błędy na początku cyklu rozwojowego i oszczędzać koszty.
  2. Pomaga programistom zrozumieć bazę kodu testowego i umożliwia szybkie wprowadzanie zmian
  3. Dobre testy jednostkowe służą jako dokumentacja projektu
  4. Testy jednostkowe pomagają w ponownym użyciu kodu. Przeprowadź migrację obu kodów i swoje testy do nowego projektu. Poprawiaj kod, aż testy zostaną uruchomione ponownie.

Jak przeprowadzić testy jednostkowe

Aby przeprowadzić testy jednostkowe, programiści piszą sekcję kodu w celu przetestowania określonej funkcji w aplikacji. Programiści mogą również wyizolować tę funkcję, aby przetestować bardziej rygorystycznie, co ujawnia niepotrzebne zależności między testowaną funkcją a innymi jednostkami, dzięki czemu można wyeliminować zależności. Programiści zazwyczaj używają Framework testów jednostkowych opracowywać zautomatyzowane przypadki testowe do testów jednostkowych.

Testowanie jednostkowe jest dwojakiego rodzaju

  • Instrukcja obsługi
  • zautomatyzowane

Testowanie jednostkowe jest zwykle zautomatyzowane, ale nadal można je wykonywać ręcznie. Inżynieria oprogramowania nie faworyzuje jednego nad drugim, ale preferowana jest automatyzacja. Ręczne podejście do testów jednostkowych może obejmować dokument instruktażowy krok po kroku.

W ramach podejścia zautomatyzowanego

  • Programista pisze sekcję kodu w aplikacji tylko po to, aby przetestować funkcję. Później komentuje i ostatecznie usuwa kod testowy, gdy aplikacja jest wdrażana.
  • Programista może również wyizolować funkcję, aby przetestować ją bardziej rygorystycznie. Jest to bardziej szczegółowa praktyka testów jednostkowych, która polega na kopiowaniu i wklejaniu kodu do własnego środowiska testowego niż do środowiska naturalnego. Izolowanie kodu pomaga w ujawnieniu niepotrzebnych zależności pomiędzy testowanym kodem a innymi jednostkami lub przestrzeniami danych w produkcie. Zależności te można następnie wyeliminować.
  • Programista zazwyczaj używa środowiska UnitTest Framework do opracowywania zautomatyzowanych przypadków testowych. Korzystając ze struktury automatyzacji, programista koduje kryteria do testu w celu sprawdzenia poprawności kodu. Podczas wykonywania przypadków testowych platforma rejestruje przypadki testowe, które zakończyły się niepowodzeniem. Podsumowując, wiele frameworków automatycznie flaguje i raportuje te błędy nieudane przypadki testowe. W zależności od wagi awarii platforma może zatrzymać kolejne testy.
  • Przebieg testów jednostkowych polega na: 1) Utwórz przypadki testowe 2) Review/Rework 3) Linia bazowa 4) Wykonaj przypadki testowe.

Techniki testowania jednostkowego

Kurs Techniki testowania jednostkowego Można je podzielić na trzy główne części: testowanie czarnej skrzynki, polegające na testowaniu interfejsu użytkownika oraz danych wejściowych i wyjściowych, testowanie białej skrzynki, polegające na testowaniu zachowania funkcjonalnego aplikacji oraz testowanie szarej skrzynki, służące do wykonywania zestawów testowych, metod testowych, przypadków testowych i analizy ryzyka.

Poniżej wymieniono techniki pokrycia kodu stosowane w testach jednostkowych:

  • Zasięg oświadczenia
  • Zakres decyzji
  • Zasięg oddziałów
  • Pokrycie stanu
  • Skończony zasięg maszyny stanowej

Więcej w zob https://www.guru99.com/code-coverage.html

Przykład testu jednostkowego: makiety obiektów

Testowanie jednostkowe polega na tworzeniu próbnych obiektów w celu testowania sekcji kodu, które nie są jeszcze częścią kompletnej aplikacji. Próbne obiekty uzupełniają brakujące części programu.

Na przykład możesz mieć funkcję wymagającą zmiennych lub obiektów, które nie zostały jeszcze utworzone. W testach jednostkowych będą one uwzględniane w postaci fałszywych obiektów utworzonych wyłącznie na potrzeby testów jednostkowych przeprowadzanych w tej sekcji kodu.

Narzędzia do testowania jednostek

Dostępnych jest kilka programów do automatycznych testów jednostkowych, które pomagają w testowaniu jednostkowym w testowaniu oprogramowania. Poniżej przedstawimy kilka przykładów:

  1. Junita:Junit to bezpłatne narzędzie testowe służące do Java język programowania. Zawiera twierdzenia umożliwiające identyfikację metody testowej. To narzędzie najpierw testuje dane, a następnie wstawia je do fragmentu kodu.
  2. NJednostka: NUnit jest powszechnie używanym frameworkiem do testów jednostkowych dla wszystkich języków .net. Jest to narzędzie typu open source umożliwiające ręczne pisanie skryptów. Obsługuje testy oparte na danych, które można uruchamiać równolegle.
  3. JMockit: JMockit jest narzędziem do testowania jednostek typu open source. Jest to narzędzie do pokrywania kodu z metrykami linii i ścieżek. Umożliwia kpienie API ze składnią nagrywania i weryfikacji. To narzędzie oferuje pokrycie linii, pokrycie ścieżki i pokrycie danych.
  4. EMMA: EMMA to zestaw narzędzi typu open source do analizowania i raportowania napisanego kodu Java język. Emma obsługuje typy pokrycia, takie jak metoda, linia, blok podstawowy. To jest Java-based, więc nie ma zależności od bibliotek zewnętrznych i może uzyskać dostęp do kodu źródłowego.
  5. Jednostka PHP: PHPUnit to narzędzie do testowania jednostkowego dla programisty PHP. Pobiera małe fragmenty kodu zwane jednostkami i testuje każdą z nich osobno. Narzędzie umożliwia także programistom korzystanie ze wstępnie zdefiniowanych metod asercji w celu sprawdzenia, czy system zachowuje się w określony sposób.

To tylko niektóre z dostępnych narzędzi do testów jednostkowych. Jest ich o wiele więcej, szczególnie dla Języki C i Java, ale z pewnością znajdziesz narzędzie do testowania jednostkowego odpowiadające Twoim potrzebom programistycznym, niezależnie od używanego języka.

Rozwój oparty na testach (TDD) i testowanie jednostkowe

Testowanie jednostkowe w TDD wiąże się z szerokim wykorzystaniem frameworków testowych. Framework testów jednostkowych służy do tworzenia zautomatyzowanych testów jednostkowych. Frameworki testów jednostkowych nie są specyficzne dla TDD, ale są dla niego niezbędne. Poniżej przyglądamy się temu, co TDD wnosi do świata testów jednostkowych:

  • Testy są pisane przed kodem
  • Polegaj w dużym stopniu na frameworkach testowych
  • Testowane są wszystkie klasy w aplikacjach
  • Możliwa jest szybka i łatwa integracja

Mit dotyczący testów jednostkowych

Mit: Wymaga to czasu, a ja zawsze mam przekroczone terminy
Mój kod jest solidny! Nie potrzebuję testów jednostkowych.

Mity ze swej natury są fałszywymi założeniami. Założenia te prowadzą do błędnego koła w następujący sposób:

Mit testowania UNIT

Prawda jest taka, że ​​testy jednostkowe zwiększają szybkość rozwoju.

Programiści myślą, że testy integracyjne wyłapią wszystkie błędy i nie wykonają testu jednostkowego. Po zintegrowaniu jednostek, wyśledzenie i naprawienie bardzo prostych błędów, które można łatwo znaleźć i naprawić w testowanej jednostce, zajmuje bardzo dużo czasu.

Zaleta testów jednostkowych

  • Deweloperzy, którzy chcą dowiedzieć się, jakie funkcje zapewnia jednostka i jak z niej korzystać, mogą przyjrzeć się testom jednostkowym, aby uzyskać podstawową wiedzę na temat interfejsu API jednostki.
  • Testowanie jednostkowe pozwala programistom na refaktoryzację kodu w późniejszym terminie i upewnienie się, że moduł nadal działa poprawnie (tj. Testy regresji). Procedura polega na pisaniu przypadków testowych dla wszystkich funkcji i metod, tak aby za każdym razem, gdy zmiana powoduje błąd, można go było szybko zidentyfikować i naprawić.
  • Ze względu na modułowy charakter testów jednostkowych możemy testować części projektu bez czekania na ukończenie pozostałych.

Wady testów jednostkowych

  • Nie można oczekiwać, że testy jednostkowe wykryją każdy błąd w programie. Nie jest możliwe oszacowanie wszystkich ścieżek wykonania nawet w najbardziej trywialnych programach
  • Testy jednostkowe ze swej natury skupiają się na jednostce kodu. Dlatego nie może wychwycić błędów integracji ani błędów na poziomie całego systemu.

Zaleca się stosowanie testów jednostkowych w połączeniu z innymi działaniami testowymi.

Najlepsze praktyki testowania jednostkowego

  • Przypadki testów jednostkowych powinny być niezależne. W przypadku jakichkolwiek ulepszeń lub zmian w wymaganiach nie powinno to mieć wpływu na przypadki testów jednostkowych.
  • Testuj tylko jeden kod na raz.
  • Postępuj zgodnie z jasnymi i spójnymi konwencjami nazewnictwa testów jednostkowych
  • W przypadku zmiany kodu w którymkolwiek module należy upewnić się, że istnieje odpowiednia jednostka Przypadek testowy dla modułu, a moduł przejdzie testy przed zmianą implementacji
  • Błędy zidentyfikowane podczas testów jednostkowych muszą zostać naprawione przed przejściem do następnej fazy w SDLC
  • Zastosuj podejście „testuj jako swój kod”. Im więcej kodu napiszesz bez testowania, tym więcej ścieżek musisz sprawdzić pod kątem błędów.

Najlepsze praktyki testowania jednostkowego

Podsumowanie

  • TESTOWANIE JEDNOSTKOWE definiuje się jako rodzaj testowania oprogramowania, podczas którego testowane są poszczególne jednostki lub komponenty oprogramowania.
  • Jak widać, w testowaniu jednostkowym może być wiele elementów. Może być skomplikowane lub raczej proste w zależności od testowanej aplikacji oraz strategii testowania, narzędzi i filozofii. Testowanie jednostkowe jest zawsze konieczne na pewnym poziomie. To pewne.