Școala Româno-Britanică
Modulul 1 Clasa a IX-a | Python

Ora 13: Criterii de elaborare a testelor și urmărirea evoluției variabilelor

Ce vei învăța astăzi: Cum alegem date de test (valide, invalide, cazuri limită) și cum urmărim evoluția variabilelor într-un tabel

Rezultat practic: Verifici corectitudinea programelor tale cu date de test potrivite și descoperi erorile de logică prin tabelul de urmărire a variabilelor (Competența 5.3).

Competența 5.3 Săptămâna 7

Înainte de a începe

De ce contează? Un program netestat cu date valide, invalide și cazuri limită poate conține erori de logică invizibile la prima rulare; tabelul de urmărire a variabilelor le scoate la iveală pas cu pas.

Ce știi deja?

În lecția anterioară („Pseudocod, organigramă și Python - elemente de corespondență”) ai transformat pseudocod în Python. Pentru algoritmul „maximul a trei numere”, ce valori extreme ai alege ca date de test?

Ideea-cheie: Testarea folosește date valide, invalide și cazuri limită, iar tabelul de urmărire notează valoarea fiecărei variabile la fiecare pas pentru a descoperi erorile de logică.
SINTEZĂ TEORETICĂ ȘI EXEMPLE GHIDATE

Ce vei învăța astăzi?

După această lecție vei ști să elaborezi teste pentru programele tale, alegând date valide, invalide și cazuri limită, și vei folosi tabelul de urmărire a variabilelor pentru a găsi erorile de logică.

Date de test valide, invalide și cazuri limită
Tabelul de urmărire a variabilelor
Găsirea erorilor de logică
Testarea programelor pas cu pas

Criterii de elaborare a testelor

Un program este corect doar dacă funcționează pentru toate datele de intrare posibile, nu doar pentru câteva cazuri convenabile. De aceea, în etapa de testare, alegem cu grijă datele de test, acoperind trei categorii esențiale: date valide, date invalide și cazuri limită.

Analogie: testarea unei podele

Imaginează-ți că ai construit o podea și vrei să verifici dacă este stabilă. Nu ar fi suficient să calci o singură dată în mijloc! Ai testa și colțurile, și marginea, și un loc unde podeaua pare mai slabă. La fel, un program trebuie testat cu date obișnuite (mijlocul), dar și cu valori extreme (colțurile) și cu date greșite (punctele slabe).

Categorie de test Ce verifică Exemplu pentru „media a două numere"
Date valide Funcționarea normală a programului a = 8, b = 10 → media 9.0
Date invalide Cum reacționează programul la date greșite a = -5 (dacă se cer numere naturale)
Cazuri limită Valorile extreme admise de problemă a = 0, b = 0 → media 0.0

De reținut: un program care „merge" pentru un singur exemplu nu este neapărat corect. Doar testarea cu toate cele trei categorii de date ne dă încredere în corectitudinea lui.

Tabelul de urmărire a variabilelor

Definiție: Tabelul de urmărire a variabilelor (numit și „tabel de execuție") este o metodă prin care notăm, pas cu pas, valoarea fiecărei variabile pe măsură ce programul se execută. Este cel mai bun instrument pentru a descoperi erorile de logică.

Exemplu: suma 1 + 2 + 3 (n = 3) Variabile: i, s

Pornim cu s = 0. Urmărim cum se schimbă s și i la fiecare pas al buclei:

i = 1 s = 0 + 1 = 1
i = 2 s = 1 + 2 = 3
i = 3 s = 3 + 3 = 6
final s = 6 - suma corectă 1 + 2 + 3 = 6
Pasul i s Observație
Început - 0 s se inițializează (adică primește o valoare de pornire) cu 0
După pasul 1 1 1 adunăm i = 1
După pasul 2 2 3 adunăm i = 2
După pasul 3 3 6 adunăm i = 3, bucla se termină

Cum descoperim o eroare de logică?

Să presupunem că am uitat să inițializăm s cu 0. Tabelul ne-ar arăta imediat că la primul pas s = 0 + 1 ar deveni o valoare greșită, iar rezultatul final nu ar mai fi 6. Fără tabel, am rula programul de multe ori fără să înțelegem unde este problema.

Exemplu complet: maximul a trei numere

Aplicăm criteriile de testare pe un program complet: citim trei numere și afișăm maximul. Mai întâi scriem algoritmul, apoi programul, apoi verificăm cu date de test.

Algoritm și program

Algoritmul MaximTreiNumere: citește a, b, c maxim = a dacă b > maxim atunci maxim = b dacă c > maxim atunci maxim = c scrie maxim
Program Python complet (rulabil)
a = int(input())
b = int(input())
c = int(input())

maxim = a
if b > maxim:
    maxim = b
if c > maxim:
    maxim = c

print(maxim)

Observă: pornim cu maxim = a, apoi comparăm pe rând b și c. Dacă vreunul este mai mare, actualizăm (adică schimbăm valoarea cu una nouă) maximul.

Categorie de test Date Rezultat așteptat
Date valide a = 5, b = 9, c = 3 9
Date valide (caz invers) a = 2, b = 1, c = 7 7
Caz limită (toate egale) a = 4, b = 4, c = 4 4
Caz limită (valori extreme) a = 0, b = 0, c = 0 0

Verifică: rulează programul cu fiecare set de date din tabel și compară rezultatul obținut cu cel așteptat. Dacă toate coincid, programul este corect.

Exercițiu de completare - testele

Completează enunțul cu cuvintele potrivite:

Un program se testează cu ______, care verifică funcționarea normală, cu ______, care verifică reacția la date greșite, și cu ______, care verifică valorile extreme. Metoda prin care notăm valoarea fiecărei variabile pas cu pas se numește ______ a variabilelor.

Bancă de cuvinte:
date valide date invalide cazuri limită tabel de urmărire

Exercițiu de completare - programul

Completează programul pentru suma cifrelor lui n:

n = int(input())
______ = 0  # inițializăm suma
while n > 0:
    s = s + n ______ 10  # adunăm ultima cifră
    n = n ______ 10  # eliminăm ultima cifră
______(s)

Bancă de cuvinte:
s % // print

Test de înțelegere

Test rapid - testare și urmărirea variabilelor:

1. Care este scopul testării cu date invalide?

2. Ce verificăm cu cazurile limită?

3. Tabelul de urmărire a variabilelor ne ajută să...

Ai grijă la: Să testezi doar cu date valide: datele invalide (note în afara intervalului, text în loc de număr) și cazurile limită (0, valori maxime) sunt tocmai cele care descoperă cele mai multe erori.

Aprofundare

De ce un singur test nu este suficient? În lumea reală, programele au milioane de utilizatori și milioane de combinații posibile de date. Un program care funcționează corect pentru un caz poate eșua complet la altul: o împărțire la zero, o valoare prea mare sau un text în loc de număr. De aceea, testarea sistematică cu date valide, invalide și cazuri limită este o parte esențială a profesiei de programator.

Tabelul de urmărire - instrumentul de la bacalaureat. La examen, tabelul de urmărire a variabilelor este metoda cerută pentru a demonstra că înțelegi cum funcționează un algoritm. Se notează fiecare variabilă pe coloane și fiecare pas al execuției pe rânduri, apoi se completează valorile. Dacă valorile finale coincid cu cele așteptate, algoritmul este corect.

Depanarea interactivă. Mediile moderne (Thonny, VS Code, PyCharm) au un debugger (instrument care rulează programul pas cu pas și afișează valorile variabilelor) care face automat tabelul de urmărire: afișează linia curentă și valorile variabilelor în timp real. El folosește exact aceeași logică, doar că nu trebuie să notăm manual valorile - programul o face pentru noi.

APLICARE ȘI REZOLVARE DE PROBLEME

PbInfo - Suma cifrelor unui număr

Enunț:

Cerință: Se citește numărul natural n. Să se afișeze suma cifrelor sale.

Date de intrare:

Programul citește de la tastatură numărul n.

Date de ieșire:

Programul va afișa suma cifrelor lui n.

Restricții și precizări:

n este un număr natural.

Exemplu:

Intrare:

1234

Ieșire:

10
Cum gândim soluția:
  1. Inițializăm suma s cu 0
  2. Cât timp n > 0, adunăm la s ultima cifră (n % 10) și eliminăm cifra (n // 10)
  3. Verificăm cu tabelul de urmărire: pentru n = 1234, s devine 4, apoi 7, 9, 10
  4. Afișăm suma
Scrie soluția în Python:
Soluție corectă:
n = int(input())

s = 0
while n > 0:
    s = s + n % 10
    n = n // 10

print(s)

Ce învățăm: testăm cu n = 1234 (rezultat 10) și cu cazul limită n = 0 (rezultat 0). Tabelul de urmărire arată cum scade n și cum crește s pas cu pas.

PbInfo - Maximul a trei numere

Enunț:

Cerință: Se citesc trei numere naturale. Să se afișeze valoarea maximă dintre ele.

Date de intrare:

Programul citește de la tastatură cele trei numere.

Date de ieșire:

Programul va afișa maximul celor trei numere.

Restricții și precizări:

Numerele sunt numere naturale.

Exemplu:

Intrare:

5 9 3

Ieșire:

9
Cum gândim soluția:
  1. Citim cele trei numere
  2. Pornim cu maxim = a
  3. Comparăm pe rând b și c, actualizând maximul când este cazul
  4. Testăm cu date valide și cu cazul limită a = b = c
Scrie soluția în Python:
Soluție corectă:
a = int(input())
b = int(input())
c = int(input())

maxim = a
if b > maxim:
    maxim = b
if c > maxim:
    maxim = c

print(maxim)

Ce învățăm: testăm cu mai multe seturi de date: (5, 9, 3) → 9, (2, 1, 7) → 7 și cazul limită (4, 4, 4) → 4. Dacă toate rezultatele sunt corecte, programul funcționează.

EXERCIȚII PRACTICE

Exercițiul Practic: Testarea și urmărirea variabilelor

Sarcini de lucru

Elaborează teste pentru un program și construiește tabelul de urmărire a variabilelor

Sarcina 1: Elaborează testele

Cerință: Pentru programul „media a trei note", alege câte un exemplu de date valide, un caz limită și un caz de date invalide, cu rezultatul așteptat pentru fiecare.

Soluție pentru Sarcina 1:

Exemplu de răspuns corect:

Date valide: notele 8, 10, 9 → media 9.0
Caz limită: notele 0, 0, 0 → media 0.0
Date invalide: o notă negativă, de exemplu -2
(programul ar trebui să fie avertizat că notele sunt
între 1 și 10)

Verifică: cazul limită testează valorile extreme, iar datele invalide verifică dacă programul reacționează corect la intrări greșite.

Sarcina 2: Tabelul de urmărire

Cerință: Construiește tabelul de urmărire a variabilelor pentru programul cu buclă for care calculează suma 1 + 2 + ... + n, pentru n = 4.

Soluție pentru Sarcina 2:
Pasul        | i | s
Început      | - | 0
După pasul 1 | 1 | 1
După pasul 2 | 2 | 3
După pasul 3 | 3 | 6
După pasul 4 | 4 | 10

Suma 1 + 2 + 3 + 4 = 10 - corect!

Verifică: valorile finale ale tabelului trebuie să coincidă cu rezultatul corect. Dacă nu, urmărește din nou fiecare pas pentru a găsi eroarea.

Scrie pe caiet - De reținut

Titlul lecției

Ora 13: Criterii de elaborare a testelor și urmărirea evoluției variabilelor

Definiția lecției

Un program este corect doar dacă funcționează pentru toate datele de intrare posibile, nu doar pentru câteva cazuri convenabile. De aceea, testarea se face cu date din trei categorii esențiale: date valide, care verifică funcționarea normală, date invalide, care verifică reacția programului la date greșite, și cazuri limită, care verifică valorile extreme admise de problemă. Tabelul de urmărire a variabilelor este metoda prin care notăm, pas cu pas, valoarea fiecărei variabile pe măsură ce programul se execută, fiind cel mai bun instrument pentru a descoperi erorile de logică. De exemplu, la calculul sumei 1 + 2 + 3, tabelul arată cum pornește s de la 0 și devine 1, apoi 3, apoi 6, iar dacă valoarea finală nu coincide cu cea așteptată, mergem înapoi prin tabel până găsim pasul greșit. Exact ca la verificarea stabilității unei podele, nu ne oprim după un singur test, ci încercăm toate zonele: mijlocul, colțurile și punctele slabe.

Definiții esențiale

  • Date valide - date normale pentru care programul funcționează conform cerinței.
  • Date invalide - date greșite pentru care verificăm reacția programului.
  • Cazuri limită - valorile extreme admise de problemă (minime sau maxime).
  • Tabelul de urmărire a variabilelor - metoda prin care notăm valoarea fiecărei variabile la fiecare pas al execuției.
  • Un program este corect doar dacă trece testele cu toate cele trei categorii de date.

Algoritmul cheie - pseudocod

Algoritmul MaximTreiNumere: citește a, b, c maxim = a dacă b > maxim atunci maxim = b dacă c > maxim atunci maxim = c scrie maxim

Algoritmul cheie - cod Python

a = int(input())
b = int(input())
c = int(input())

maxim = a
if b > maxim:
    maxim = b
if c > maxim:
    maxim = c

print(maxim)

Greșeli comune de evitat

  • Testarea programului cu un singur exemplu și considerarea lui corect pe baza acestuia.
  • Omiterea cazurilor limită, unde apar cele mai multe erori (de exemplu valori egale sau zero).
  • Uitarea inițializării acumulatorilor: s trebuie pornit cu 0, altfel rezultatul este greșit.
  • Ignorarea erorilor de logică pe motiv că „programul rulează" - rularea nu înseamnă corectitudine.

Sfaturi practice și trucuri

  • Construiește întotdeauna tabelul de urmărire pe hârtie pentru valori mici, înainte de a rula programul.
  • Alege cel puțin un test din fiecare categorie: valid, invalid și caz limită.
  • Dacă rezultatul este greșit, mergi înapoi prin tabel până găsești pasul unde valoarea devine neașteptată.
  • Folosește debugger-ul din Thonny sau VS Code - el construiește automat tabelul de urmărire pentru tine.

Exemplu practic

O aplicație de buget lunar primește cheltuielile utilizatorului și calculează totalul. Programatorul o testează cu date valide (cheltuieli obișnuite), cu date invalide (un text în loc de sumă) și cu cazuri limită (zero lei cheltuiți), apoi verifică fiecare pas cu tabelul de urmărire a variabilelor:

s = 0
for i in range(1, 4):
    s = s + i
print(s)