Technikum Klasa II 45 minut PP: II.1 | s. 343

Lekcja 21: Programowanie - projekt indywidualny (3): testowanie

Testowanie programu, debugowanie, obsluga bledow

📋 Podstawa programowa: II.1
dokumentacjaprogramowanieprojekt indywidualnytesty
00:00
Wprowadzenie
5 min
00:05
Teoria testowania
10 min
00:15
Testowanie projektow
25 min
00:40
Podsumowanie
5 min
📚

Teoria

Dlaczego testowanie jest wazne?

Testowanie to proces sprawdzania, czy program dziala poprawnie i zgodnie ze specyfikacja. Jest to kluczowy etap tworzenia oprogramowania - nawet najlepsi programisci popelniaja bledy.

Statystyka: Wedlug badan, naprawa bledu znalezionego na etapie testowania jest 10x tansza niz naprawa tego samego bledu po wdrozeniu programu. Testowanie to inwestycja, nie strata czasu!

Rodzaje bledow w programach

  • Bledy skladniowe (Syntax Errors) - ble skladnia Pythona (brak dwukropka, zle wciecie). Python wskazuje linie bledu.
    # Blad skladniowy:
    if x > 5    # brak dwukropka!
        print("Duze")
  • Bledy wykonania (Runtime Errors) - program sie uruchamia, ale pada w trakcie (dzielenie przez 0, brak pliku, zly indeks).
    # Blad wykonania:
    lista = [1, 2, 3]
    print(lista[10])  # IndexError!
  • Bledy logiczne (Logic Errors) - program dziala, ale daje zle wyniki. Najtrudniejsze do znalezienia!
    # Blad logiczny:
    def srednia(a, b):
        return a + b / 2  # powinno byc (a + b) / 2

Techniki debugowania

  1. Print debugging - dodawanie print() w kluczowych miejscach:
    def oblicz(dane):
        print(f"DEBUG: dane = {dane}")  # co wchodzi?
        wynik = sum(dane) / len(dane)
        print(f"DEBUG: wynik = {wynik}")  # co wychodzi?
        return wynik
  2. Debugger - narzedzie w IDE (np. w VS Code, PyCharm) pozwalajace na wykonywanie kodu krok po kroku, podgladanie zmiennych
  3. Rubber duck debugging - wytlumacz problem gumowej kaczce (lub koledze) - czesto sam znajdziesz rozwiazanie!
  4. Analiza komunikatu bledu - czytaj Traceback od DOLU: ostatnia linia mowi CO sie stalo, linie wyzej - GDZIE

Przypadki testowe

Dla kazdej funkcji przygotuj przypadki testowe (test cases):

  • Dane typowe - normalne, oczekiwane dane wejsciowe
  • Dane brzegowe - wartosci graniczne (0, 1, pusta lista, bardzo duza liczba)
  • Dane bledne - co sie stanie gdy uzytkownik poda tekst zamiast liczby? pustego stringa?

Przyklad tabeli testow

| Nr | Opis testu              | Dane wejsciowe | Oczekiwany wynik | Rzeczywisty wynik | OK? |
|----|-------------------------|----------------|------------------|--------------------|-----|
| 1  | Srednia z 3 liczb       | [4, 6, 8]      | 6.0              | 6.0                | TAK |
| 2  | Srednia z 1 liczby      | [5]            | 5.0              | 5.0                | TAK |
| 3  | Pusta lista             | []             | Komunikat bledu  | ZeroDivisionError  | NIE |
| 4  | Ujemne liczby           | [-3, -7]       | -5.0             | -5.0               | TAK |

Obsluga bledow - try/except

def bezpieczna_srednia(lista):
    """Oblicza srednia z obsluga bledow."""
    try:
        if not lista:
            raise ValueError("Lista nie moze byc pusta!")
        return sum(lista) / len(lista)
    except TypeError:
        print("Blad: lista musi zawierac liczby!")
        return None
    except ValueError as e:
        print(f"Blad: {e}")
        return None
✏️

Zadania

Obowiazkowe

Zadanie 1: Tabela przypadkow testowych

Przygotuj tabele z minimum 8 przypadkami testowymi dla swojego projektu. Uwzglednij dane typowe, brzegowe i bledne. Dla kazdego przypadku wpisz: opis, dane wejsciowe, oczekiwany wynik.

Obowiazkowe

Zadanie 2: Przeprowadz testy

Uruchom program z kazdym przypadkiem testowym. Uzupelnij tabele o rzeczywiste wyniki i status (OK/BLAD). Dla kazdego bledu: zidentyfikuj przyczyne i napraw kod.

Obowiazkowe

Zadanie 3: Obsluga bledow

Dodaj do programu obsluge bledow (try/except) we wszystkich miejscach, gdzie moze wystapic blad: wczytywanie danych od uzytkownika, operacje na plikach, obliczenia. Program nie powinien sie "wywalac" - powinien wyswietlic czytelny komunikat.

Dodatkowe

Zadanie 4: Code review - wzajemna recenzja

Wymien sie kodem z kolega/kolezanka z klasy. Przejrzyj kod drugiej osoby i przygotuj recenzje: (a) co jest dobrze napisane, (b) jakie bledy znalazles, (c) co mozna poprawic (czytelnosc, wydajnosc, bezpieczenstwo). Przekaz recenzje autorowi.

🎥

Materialy wideo

🔥 Kurs PHP #8 👉 Programowanie obiektowe: magiczne metody i dziedziczenie obiektów #kursphp
Jakub 'unknow' Mrugalski (UW-TEAM.org)
Google AI Studio: twórz, testuj i wdrażaj prawdziwą aplikację AI (pełny przewodnik)
Eric Tech
🎧

Podcasty

✔️

Quiz - sprawdz sie!

📜

Podstawa programowa

← Lekcja 20: Projekt indywidualny (2): implementacja Lekcja 22: Prezentacja projektow programistycznych →