Spis treści

View page as slide show

Testowanie - testy jednostkowe

Test jednostkowy (ang. unit test) to w programowaniu metoda testowania tworzonego oprogramowania poprzez wykonywanie testów weryfikujących poprawność działania pojedynczych elementów (jednostek) programu - np. metod lub obiektów w programowaniu obiektowym lub procedur w programowaniu proceduralnym. Testowany fragment programu poddawany jest testowi, który wykonuje go i porównuje wynik (np. zwrócone wartości, stan obiektu, wyrzucone wyjątki) z oczekiwanymi wynikami - tak pozytywnymi, jak i negatywnymi (niepowodzenie działania kodu w określonych sytuacjach również może podlegać testowaniu)

Test jednostkowy to fragment kodu, który sprawdza inny fragment kodu”

Więcej: Test jednostkowy

Aksjomaty testowania

Czym są testy jednostkowe?

Testy jednostkowe (ang. unit test) porównują oczekiwany wynik funkcji z rzeczywistym rezultatem. Na przykład sprawdźmy funkcję sumującą dwie liczby całkowite. W łatwy sposób można ustalić dane wejściowe oraz oczekiwany wynik:

Testy czarnej skrzynki.

Cechy

Dobrze napisane testy

Test-driven development

Technika zwinna (agile), zaliczana także do programowania ekstremalnego.

  1. najpierw test sprawdzający dodawaną funkcjonalność (test nieudany)
  2. implementacja funkcjonalności (test udany)
  3. refaktoryzacja napisanego kodu, żeby spełniał on oczekiwane standardy.

Zalety:

Źródło: Test-driven development Wstęp do Test Driven Development (MSDN)

Środowiska testowe

Narzędzia i biblioteki wspierające tworzenie testów, ich organizację, automatyzację wykonywania, raportowanie

List_of_unit_testing_frameworks

Testy jednostkowe w Visual Studio

Przykład

public class BasicOperations
    {
        public int Add(int numberA, int numberB)
        {
            return numberA + numberB;
        }
        public int Subtract(int numberA, int numberB)
        {
            return numberA - numberB;
        }
        public int Multiply(int numberA, int numberB)
        {
            return numberA * numberB;
        }
        public int Divide(int numberA, int numberB)
        {
            return numberA / numberB;
        }
    }

Typy asercji

Zazwyczaj przyjmuje formę wyrażenia logicznego, które zwraca albo prawdę albo fałsz. Stanowi więc doskonałe narzędzie, dzięki któremu możemy w prosty sposób, wychwycić błędy w pisanych aplikacjach.

Zakres dostępu

Pokrycie kodu (code coverage)

Pokrycie kodu mierzy, ile procent kodu zostało sprawdzone przez testy jednostkowego. Przyjmuje się, że dobrze napisane testy powinny mieć pokrycie rzędu przynajmniej 70% . Wyróżniamy dwa sposoby wyliczania pokrycia:

Bibliografia