Liceum Klasa III 45 minut PP: II.1 | s. 343

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

Testowanie, debugowanie, przeglad kodu, dokumentacja

📋 Podstawa programowa: II.1
programowanieprojekt indywidualnytesty jednostkowewalidacja
00:00
Wprowadzenie
5 min
00:05
Teoria
10 min
00:15
Testowanie
20 min
00:35
Dokumentacja
10 min
📚

Teoria

Dlaczego testowanie jest wazne?

Testowanie to kluczowy etap tworzenia oprogramowania. Nawet doswiadczeni programisci popelniaja bledy. Testowanie pozwala je wykryc i naprawic zanim program trafi do uzytkownika.

Regula: Im wczesniej znajdziesz blad, tym taniej i latwiej go naprawic. Blad znaleziony podczas testowania kosztuje 10x mniej niz blad znaleziony przez uzytkownika.

1. Rodzaje testow

  • Testy reczne - uruchamiasz program i sprawdzasz rozne scenariusze
  • Testy jednostkowe - automatyczne testy poszczegolnych funkcji
  • Testy brzegowe - sprawdzanie zachowania dla wartosci granicznych (0, pusta lista, bardzo duze liczby)
  • Testy negatywne - sprawdzanie, jak program reaguje na bledne dane

2. Testy jednostkowe w Pythonie

# plik: test_quiz.py
import unittest
from quiz import sprawdz_odpowiedz, wczytaj_pytania

class TestQuiz(unittest.TestCase):

    def test_poprawna_odpowiedz(self):
        pytanie = {"poprawna": "A"}
        self.assertTrue(sprawdz_odpowiedz(pytanie, "A"))
        self.assertTrue(sprawdz_odpowiedz(pytanie, "a"))

    def test_bledna_odpowiedz(self):
        pytanie = {"poprawna": "A"}
        self.assertFalse(sprawdz_odpowiedz(pytanie, "B"))
        self.assertFalse(sprawdz_odpowiedz(pytanie, "C"))

    def test_wczytaj_pytania_pusty_plik(self):
        # Test z nieistniejacym plikiem
        wynik = wczytaj_pytania("nieistniejacy.csv")
        self.assertEqual(wynik, [])

    def test_wczytaj_pytania_poprawne(self):
        # Test z poprawnym plikiem
        wynik = wczytaj_pytania("pytania_test.csv")
        self.assertIsInstance(wynik, list)
        self.assertGreater(len(wynik), 0)

if __name__ == "__main__":
    unittest.main()

3. Debugowanie - szukanie bledow

Najczestsze techniki debugowania:

  • Print debugging - dodawanie print() w kluczowych miejscach kodu
  • Debugger - krokowe wykonywanie programu (np. w VS Code lub IDLE)
  • Analiza komunikatow bledow - czytaj traceback od dolu do gory
  • Metoda polowienia - zakomentuj polowe kodu i sprawdz, w ktorej polowie jest blad

4. Najczestsze bledy w Pythonie

# SyntaxError - blad skladni
print("Hello"    # brakuje nawiasu zamykajacego

# NameError - niezdefiniowana zmienna
print(zmiena)    # literowka w nazwie zmiennej

# TypeError - zly typ danych
"tekst" + 5      # nie mozna dodac stringa i inta

# IndexError - indeks poza zakresem
lista = [1, 2, 3]
print(lista[5])  # indeks 5 nie istnieje

# FileNotFoundError - brak pliku
open("nieistniejacy.txt")  # plik nie istnieje

# ZeroDivisionError - dzielenie przez zero
wynik = 10 / 0

5. Dokumentacja projektu

Dobra dokumentacja zawiera:

  • Opis programu - co robi i do czego sluzy
  • Instrukcja uruchomienia - jak uruchomic program
  • Instrukcja uzytkowania - jak korzystac z programu
  • Opis funkcji - co robi kazda funkcja
  • Znane ograniczenia - czego program nie obsluguje
"""
QUIZ EDUKACYJNY Z GEOGRAFII
===========================
Autor: Jan Kowalski
Data: 2026-02-17
Wersja: 1.0

OPIS:
Program quizu wielokrotnego wyboru z pytan z geografii.
Pytania wczytywane z pliku CSV.

WYMAGANIA:
- Python 3.8+
- Plik pytania.csv w tym samym folderze

URUCHOMIENIE:
  python quiz.py

STRUKTURA PLIKU PYTAN (pytania.csv):
  pytanie;odpA;odpB;odpC;odpD;poprawna_litera
  Stolica Polski?;Krakow;Warszawa;Gdansk;Poznan;B
"""
Code review (przeglad kodu): Wymien sie kodem z kolega/kolezanka i przejrzyjcie nawzajem swoje programy. Swiezy poglad czesto pozwala znalezc bledy, ktorych autor nie zauwazyl.
✏️

Zadania

Latwe

Zadanie 1: Testy reczne

Przygotuj liste 10 scenariuszy testowych dla swojego projektu. Dla kazdego scenariusza okresl: dane wejsciowe, oczekiwany wynik, faktyczny wynik, status (OK/BLAD). Przetestuj swoj program wedlug tej listy.

Srednie

Zadanie 2: Testy brzegowe

Przetestuj swoj program dla wartosci brzegowych: puste dane, bardzo dlugie ciagi znakow, liczby ujemne, znaki specjalne. Napraw wszystkie znalezione bledy.

Srednie

Zadanie 3: Code review

Wymien sie kodem z kolega/kolezanka. Przejrzyj otrzymany kod pod katem: czytelnosci, nazewnictwa zmiennych, obslugi bledow, komentarzy. Napisz 5 uwag/sugestii poprawek.

Trudne

Zadanie 4: Dokumentacja

Napisz pelna dokumentacje swojego projektu: opis, instrukcje uruchomienia i uzytkowania, opis kazdej funkcji (parametry, zwracana wartosc), znane ograniczenia. Dodaj docstringi do kazdej funkcji w kodzie.

🎥

Materialy wideo

Podstawy programowania sterowników PLC w GX Works3 cz 1
Mitsubishi Electric FA Poland
☢️Konfiguracja Mach 3 Mill CNC✔️ poradnik od A do Z (1/4)
Majster Szef TV
🎧

Podcasty

✔️

Quiz - sprawdz sie!

📜

Podstawa programowa

← Lekcja 18: Projekt - implementacja Lekcja 20: Prezentacja multimedialna →