Jaka jest różnica między testami jednostkowymi a testami funkcjonalnymi? Czy test jednostkowy może również przetestować funkcję?
407
Jaka jest różnica między testami jednostkowymi a testami funkcjonalnymi? Czy test jednostkowy może również przetestować funkcję?
Odpowiedzi:
Test jednostkowy - testowanie pojedynczej jednostki, takiej jak metoda (funkcja) w klasie, z wykreśleniem wszystkich zależności.
Test funkcjonalny - test integracji AKA, testujący wycinek funkcjonalności w systemie. Spowoduje to przetestowanie wielu metod i może oddziaływać z zależnościami, takimi jak bazy danych lub usługi sieciowe.
źródło
Możesz przeczytać więcej na temat Testowania jednostkowego a testowania funkcjonalnego
Dobrze wyjaśnioną rzeczywistą analogię testów jednostkowych i testów funkcjonalnych można opisać następująco:
Podsumowując
Testy jednostkowe są pisane z perspektywy programisty . Są one wykonywane w celu zapewnienia, że określona metoda (lub jednostka ) klasy wykonuje zestaw określonych zadań.
Testy funkcjonalne są pisane z perspektywy użytkownika . Zapewniają, że system działa tak, jak tego oczekują użytkownicy.
źródło
Test jednostkowy sprawdza niezależną jednostkę zachowania . Jaka jest jednostka zachowania? To najmniejszy element systemu, który można niezależnie testować jednostkowo. (Definicja ta jest rzeczywiście okrągła, IOW to naprawdę nie jest definicja w ogóle , ale wydaje się całkiem dobrze funkcjonować w praktyce, ponieważ można sort-of zrozumieć intuicyjnie.)
Test funkcjonalny testuje niezależny element funkcjonalności.
Jednostka zachowania jest bardzo mała: chociaż absolutnie nie lubię tej głupiej mantry „test jednostkowy na metodę”, z punktu widzenia wielkości jest ona odpowiednia. Jednostka zachowania jest czymś pomiędzy częścią metody a może kilkoma metodami. Co najwyżej obiekt, ale nie więcej niż jeden.
Element funkcjonalny zwykle obejmuje wiele metod i przekrojów na kilka obiektów, a często przez wiele warstw architektonicznych.
Test jednostkowy wyglądałby tak: kiedy wywołam
validate_country_code()
funkcję i przekażę jej kod kraju'ZZ'
, powinna ona zwrócićfalse
.Test funkcjonalny byłby następujący: po wypełnieniu formularza wysyłki kodem kraju
ZZ
powinienem zostać przekierowany na stronę pomocy, która pozwala mi wybrać kod kraju z menu.Testy jednostkowe są pisane przez programistów, dla programistów, z perspektywy programisty.
Testy funkcjonalne mogą być dla użytkownika, w którym to przypadku są pisane przez programistów wraz z użytkownikami (lub może przy użyciu odpowiednich narzędzi i odpowiednich użytkowników, nawet przez samych użytkowników), dla użytkowników, z perspektywy użytkownika. Lub mogą mieć do czynienia z programistami (np. Kiedy opisują jakąś wewnętrzną funkcjonalność, o którą użytkownik nie dba), w którym to przypadku są pisane przez programistów, dla programistów, ale nadal z perspektywy użytkownika.
W pierwszym przypadku testy funkcjonalne mogą również służyć jako testy akceptacyjne i jako wykonywalne kodowanie wymagań funkcjonalnych lub specyfikacji funkcjonalnej, w drugim przypadku mogą również służyć jako testy integracyjne.
Testy jednostkowe zmieniają się często, testy funkcjonalne nigdy nie powinny się zmieniać w ramach głównych wydań.
źródło
TLDR:
Aby odpowiedzieć na pytanie: Testowanie jednostkowe jest podtypem Testowania funkcjonalnego.
Istnieją dwie duże grupy: funkcjonalne i niefunkcjonalne testów. Najlepsza (niewyczerpująca) ilustracja, którą znalazłem, to ta (źródło: www.inflectra.com ):
Po połączeniu funkcji tworzysz moduł = samodzielny element, prawdopodobnie z interfejsem użytkownika, który można przetestować (testowanie modułu). Gdy masz co najmniej dwa oddzielne moduły, następnie sklejasz je ze sobą, a następnie przychodzi:
Następnie integrujesz 3. moduł, a następnie 4. i 5. w dowolnej kolejności, którą ty lub twoja drużyna uznacie za stosowną, a gdy wszystkie układanki zostaną ułożone razem, przychodzi
Jeśli to w porządku, to nadchodzi
źródło
Functional Test
nie jest znormalizowanym terminem i ma inne znaczenie dla różnych ludzi.„Test funkcjonalny” nie oznacza, że testujesz funkcję (metodę) w kodzie. Ogólnie oznacza to, że testujesz funkcjonalność systemu - kiedy uruchamiam
foo file.txt
z wiersza poleceńfile.txt
, być może wiersze są odwrócone. W przeciwieństwie do tego, test pojedynczej jednostki ogólnie obejmuje pojedynczy przypadek jednej metody -length("hello")
powinien zwrócić 5, alength("hi")
powinien zwrócić 2.Zobacz także stanowisko IBM na granicy między testami jednostkowymi a testami funkcjonalnymi .
źródło
Podstawową różnicą jest jednak to, że testy funkcjonalne testują aplikację z zewnątrz, z punktu widzenia użytkownika. Testy jednostkowe testują aplikację od wewnątrz, z punktu widzenia programisty. Testy funkcjonalne powinny pomóc w zbudowaniu aplikacji o odpowiedniej funkcjonalności i zagwarantować, że nigdy nie zostanie ona przypadkowo uszkodzona. Testy jednostkowe powinny pomóc Ci napisać kod, który jest czysty i wolny od błędów.
Zaczerpnięte z książki „Python TDD” Harry'ego Percivala
źródło
Według ISTQB tych dwóch nie można porównać. Testy funkcjonalne nie są testami integracyjnymi.
Test jednostkowy jest jednym z poziomów testów, a testy funkcjonalne są rodzajem testów.
Gruntownie:
podczas
Według ISTQB test elementu / jednostki może być funkcjonalny lub niefunkcjonalny:
Cytaty z Podstaw testowania oprogramowania - certyfikacja ISTQB
źródło
W Railsach folder jednostek służy do przechowywania testów modeli, folder funkcjonalny służy do przechowywania testów sterowników, a folder integracji służy do przechowywania testów obejmujących dowolną liczbę kontrolerów wchodzących w interakcję. Urządzenia są sposobem organizowania danych testowych; znajdują się w folderze urządzeń. Plik test_helper.rb zawiera domyślną konfigurację dla twoich testów. możesz to odwiedzić .
źródło
Myślę o tym w ten sposób: test jednostkowy stwierdza, że kod wykonuje to, co zamierzałeś zrobić (np. Chciałeś dodać parametr aib, w rzeczywistości dodajesz je i nie odejmujesz), testy funkcjonalne sprawdzają, czy cały kod działa razem, aby uzyskać poprawny wynik, dzięki czemu to, co zamierzałeś zrobić, w rzeczywistości uzyskuje właściwy wynik w systemie.
źródło
AFAIK, testy jednostkowe NIE są testami funkcjonalnymi. Pozwól, że wyjaśnię małym przykładem. Chcesz sprawdzić, czy funkcjonalność logowania do aplikacji internetowej działa, czy nie, tak jak użytkownik. W tym celu powinny wyglądać twoje testy funkcjonalne.
Czy nasze testy funkcjonalne powinny sprawdzać, czy możemy zalogować się przy użyciu nieprawidłowych danych? Na przykład. E-mail nie ma symbolu @, nazwa użytkownika ma więcej niż jedną kropkę (dozwolona jest tylko jedna kropka), .com pojawia się przed @ itd.? Ogólnie nie! Tego rodzaju testy wchodzą w skład testów jednostkowych.
Możesz sprawdzić, czy nieprawidłowe testy są odrzucane w testach jednostkowych, jak pokazano w poniższych testach.
Zauważ, że test funkcjonalny 4 faktycznie wykonuje to, co robi test jednostkowy 1. Czasami testy funkcjonalne mogą powtórzyć niektóre (nie wszystkie) testy przeprowadzone przez testy jednostkowe, z różnych powodów. W naszym przykładzie używamy testu funkcjonalnego 4, aby sprawdzić, czy konkretny komunikat o błędzie pojawia się przy wprowadzaniu nieprawidłowych danych wejściowych. Nie chcemy sprawdzać, czy wszystkie złe dane wejściowe są odrzucane, czy nie. To jest zadanie testów jednostkowych.
źródło
TESTÓW JEDNOSTKOWYCH
Testowanie jednostkowe obejmuje testowanie najmniejszej jednostki kodu, którą zwykle są funkcje lub metody. Testy jednostkowe przeprowadzane są głównie przez twórcę jednostki / metody / funkcji, ponieważ rozumieją one rdzeń funkcji. Głównym celem programisty jest objęcie kodu testami jednostkowymi.
Ma ograniczenie polegające na tym, że niektórych funkcji nie można przetestować za pomocą testów jednostkowych. Nawet po pomyślnym zakończeniu wszystkich testów jednostkowych; nie gwarantuje prawidłowego działania produktu. Tej samej funkcji można użyć w kilku częściach systemu, podczas gdy test jednostkowy został napisany tylko do jednego użycia.
TESTY FUNKCJONALNOŚCI
Jest to rodzaj testowania Black Box, w którym testy będą przeprowadzane pod kątem funkcjonalnych aspektów produktu bez zagłębiania się w kod. Testy funkcjonalne przeprowadzane są głównie przez dedykowanego testera oprogramowania. Obejmie to techniki pozytywne, negatywne i BVA wykorzystujące niestandaryzowane dane do testowania określonej funkcjonalności produktu. Pokrycie testowe przeprowadza się w udoskonalony sposób za pomocą testów funkcjonalnych niż testów jednostkowych. Do testowania używa GUI aplikacji, więc łatwiej jest ustalić, za co dokładnie odpowiada konkretna część interfejsu, a nie za określenie funkcji odpowiedzialnej za kod.
źródło
bardzo prosto możemy powiedzieć:
czytaj więcej tutaj .
źródło
Test jednostkowy : - Test jednostkowy jest szczególnie stosowany do testowania komponentu produktu po komponencie, szczególnie podczas opracowywania produktu. Narzędzia typu Junit i Nunit pomogą również przetestować produkt zgodnie z Jednostką. ** Zamiast rozwiązywania problemów po integracji zawsze wygodnie jest je rozwiązać na wczesnym etapie rozwoju.
Testy funkcjonalne: - Jeśli chodzi o testowanie, istnieją dwa główne typy testowania: 1. Test funkcjonalny 2. Test niefunkcjonalny.
Test niefunkcjonalny to test, w którym tester sprawdza, czy produkt wykona wszystkie atrybuty jakości, o których klient nie wspomina, ale te atrybuty jakości powinny tam być. Jak: -wydajność, użyteczność, bezpieczeństwo, obciążenie, obciążenie itp., Ale w teście funkcjonalnym : - klient jest już obecny z jego wymaganiami i są one odpowiednio udokumentowane, zadaniem testerów jest sprawdzenie, czy funkcjonalność aplikacji działa zgodnie z do proponowanego systemu lub nie. W tym celu Tester powinien przetestować zaimplementowaną funkcjonalność z proponowanym Systemem.
źródło
Testy jednostkowe są zwykle wykonywane przez programistów. Celem tego samego jest upewnienie się, że ich kod działa poprawnie. Ogólna ogólna zasada polega na objęciu wszystkich ścieżek kodu za pomocą testów jednostkowych.
Testy funkcjonalne : jest to dobre odniesienie. Testowanie funkcjonalne Objaśnienie
źródło