Testarea programului este o etapă decisivă în procesul de realizare a fiecărui program. ea se face folosind tehnici mai mult sau mai puțin evoulate, dar obiectivul este mereu același, de a identifica erorile existente în vederea corectării lor.
Pentru a arăta cât de complexă este testarea voi lua construcția unui program banal și anume scrierea unui program pentru calculul mediei aritmetice ponderate. Programul se pregătește pentru a fi testat. În acest sens se scriu instrucțiuni care afișează date citite și rezultate intermediare.
În primul rând se verifică dacă citirea datelor de intrare este corectă în acest sens:
- se imprimă valoarea lui n care arată câte componente are seria de date;
- în cazul în care n este negativ sau nul se afișează un mesaj și se reia citirea sa;
- se imprimă variabila de control, valorile termenilor seriei și frecvențelor;
- în cazul frecvențelor nule se afișează un mesaj;
- în cazul variabilei de controș negative se afișează un mesaj;
- se analizează dacă datee au fost corect citire și dacă sunt complete.
Testarea are menirea de a scoate în evidență tot felul de erori de citire a datelor, unele dintre ele fiind așa de bizare că ne minunăm de cum s-au scris asemenea secvențe de instrucțiuni.
În al doilea rând se verifică dacă variabilele au fost inițializate, folosind textul sursă. În cazul aplicației se verifică dacă:
- variabila unde se calculează suma frecvențelor este inițializată și unde se face inițializarea;
- variabila unde se calculează produsul valoare, frecvență este inițializată și unde.
În al treilea rând se scriu instrucțiuni de afișare rezultate intermediare privind:
- produsele valoare, frecvență;
- sumă de produse;
- sumă de frecvențe;
- variabilă de control.
Cestea permit să se verifice că ceea ce este ăn specificații se și produce în program. Sunt situații în care nu se folosesc toți termenii din serie sau din contră se utilizează termeni care nu sunt inițializați prin citire, din cauza condiției eronate pusă la variabila de control.
În al patrulea rând, înainte de a face împărțirea sumei de produse la suma de frecvențe se verifică dacă suma de frecvențe este nulă. Dacă această sumă este nulă se scrie un mesaj și se încheie execuția. În mod normal testarea frecvențelor ar cam trebui să nu necesite această testare. Numai că atunci când transformăm secvențele într-o procedură și cel ce face inițializările nu se asigură că frecvențele vor fi numai pozitive, procedura va avea o problemă, adică o împărțire prin zero și este impardonabil la așa o procedură de simplă.
În al cincilea rând se imprimă rezultatul final, media, care oricul se imprima, dar se imprimă și sumele și chiar și alte date referitoare la elementul minim, elementul maxim sau ce-o mai vrea clientul.
În vremurile de demult toate acestea erau la inspirația programatorului, care se apuca să introducă instrucțiuni de scriere de mesaje și de rezultate intermediare dacă și numai dacă programul său crăpa la execuție. Acum, în lumea modernă nu mai este așa. Programatorul fie scrie câteva instrucțiuni care fac ele totul, fie există programe de asistare a scrierii care îl ghidonează pe programator făcându-i sugestii dintre cele mai necesare, care-l feresc de a cădea în păcatul:
- utilizării de variabile neinițializate;
- de a ieși din definirile câmpurilor;
- de a avea neconcordanțe între listele de parametri;
- de a face împărțiri la zero;
- de a avea neconcordanțe de tip;
- de a defini și nu folosi variabile;
- de a avea cod mort în program.
Cu un program îngrijit scris și înțesat de instrucțiuni de afișare și de testare variabile, se trece la testarea propriu-zisă a programmului care constă în:
- a lua un set de date de test și de a-l rula;
- a verifica dacă exte concordanță între ceea ce este tipărit în specificații și ceea ce dă programul;
- a găsi neconcordanțele;
- a stabili cazuzele neconcordanțelor;
- a efectua corecțiile;
- a relua alte seturi de date de test;
- a repeta operațiile de la prima;
- de a încheia testarea când nu mai apar erori de niciun fel.
În vremurile de demult srierea programului și testarea programului o făcea măria-sa programatorul. Acum este o diviziune a muncii, programarea fiind separată de testare.
Testarea programului este esențială. Testarea face ca programul să fie acceptat sau programul să fie respins. În cazul programului de calcul pentru media aritmetică ponderată se consideră seturile de date de test ale căror rezultate sunt ușor de verificat.
Se iau>
n=25
x[0]=x[1]=x[2]=...=x[24]=1
f[0]=f[1]=f[2]=...=f[24]=1
se verifică ușor dacă se citesc toate datele , dacă sumele sunt corect calculate și dacă media aritmetică ponderată este și ea corectă.
Al doilea set de date de test corespunde situației în care:
n=25
x[0]=1
x[1]=2
x[2]=3
...
x[24]=24
f[0]=1
f[1]=2
f[2]=3
...
f[24]=24
Cele două sume se calculează prima ca suma primelor 25 numere naturale Sxf= n(n+1)(n+2)/6 ți a doua ca sumă a primelor 25 de numere naturale sf=n(n+1)/2, media aritmetică fiind med=(n+2)/3.
Următorul set de date de test are n=24 și valorile seriei alternează cu valori pozitive și negative, iar frecvențele sunt în perechi:
n=24
x[0]=1
x[1]=-1
x[2]=2
x[3]=-2
...
x[22]=12
x[23]=-12
f[0]=1
f[1]=1
f[2]=2
f[3]=2
......
f[22]=12
f[23]=12
Sxf va fi zero, sf va fi n(n+2)/4, iar media aritmetică ponderată va fi și ea tot zero. Cu cât sunt mai multe astfel de seturi de date de test cu atât e mai bine. Abia după aceea se trece la testarea programului cu tot felul de serii despre care rezultatele se află în cărți de statistică și numai în ultimul stadiu se vor utiliza seriile oarecare, căci verificarea rezultatelor nu va mai fi necesară la nivel de detaliu așa ca la testările de început.
Pentru a arăta cât de complexă este testarea voi lua construcția unui program banal și anume scrierea unui program pentru calculul mediei aritmetice ponderate. Programul se pregătește pentru a fi testat. În acest sens se scriu instrucțiuni care afișează date citite și rezultate intermediare.
În primul rând se verifică dacă citirea datelor de intrare este corectă în acest sens:
- se imprimă valoarea lui n care arată câte componente are seria de date;
- în cazul în care n este negativ sau nul se afișează un mesaj și se reia citirea sa;
- se imprimă variabila de control, valorile termenilor seriei și frecvențelor;
- în cazul frecvențelor nule se afișează un mesaj;
- în cazul variabilei de controș negative se afișează un mesaj;
- se analizează dacă datee au fost corect citire și dacă sunt complete.
Testarea are menirea de a scoate în evidență tot felul de erori de citire a datelor, unele dintre ele fiind așa de bizare că ne minunăm de cum s-au scris asemenea secvențe de instrucțiuni.
În al doilea rând se verifică dacă variabilele au fost inițializate, folosind textul sursă. În cazul aplicației se verifică dacă:
- variabila unde se calculează suma frecvențelor este inițializată și unde se face inițializarea;
- variabila unde se calculează produsul valoare, frecvență este inițializată și unde.
În al treilea rând se scriu instrucțiuni de afișare rezultate intermediare privind:
- produsele valoare, frecvență;
- sumă de produse;
- sumă de frecvențe;
- variabilă de control.
Cestea permit să se verifice că ceea ce este ăn specificații se și produce în program. Sunt situații în care nu se folosesc toți termenii din serie sau din contră se utilizează termeni care nu sunt inițializați prin citire, din cauza condiției eronate pusă la variabila de control.
În al patrulea rând, înainte de a face împărțirea sumei de produse la suma de frecvențe se verifică dacă suma de frecvențe este nulă. Dacă această sumă este nulă se scrie un mesaj și se încheie execuția. În mod normal testarea frecvențelor ar cam trebui să nu necesite această testare. Numai că atunci când transformăm secvențele într-o procedură și cel ce face inițializările nu se asigură că frecvențele vor fi numai pozitive, procedura va avea o problemă, adică o împărțire prin zero și este impardonabil la așa o procedură de simplă.
În al cincilea rând se imprimă rezultatul final, media, care oricul se imprima, dar se imprimă și sumele și chiar și alte date referitoare la elementul minim, elementul maxim sau ce-o mai vrea clientul.
În vremurile de demult toate acestea erau la inspirația programatorului, care se apuca să introducă instrucțiuni de scriere de mesaje și de rezultate intermediare dacă și numai dacă programul său crăpa la execuție. Acum, în lumea modernă nu mai este așa. Programatorul fie scrie câteva instrucțiuni care fac ele totul, fie există programe de asistare a scrierii care îl ghidonează pe programator făcându-i sugestii dintre cele mai necesare, care-l feresc de a cădea în păcatul:
- utilizării de variabile neinițializate;
- de a ieși din definirile câmpurilor;
- de a avea neconcordanțe între listele de parametri;
- de a face împărțiri la zero;
- de a avea neconcordanțe de tip;
- de a defini și nu folosi variabile;
- de a avea cod mort în program.
Cu un program îngrijit scris și înțesat de instrucțiuni de afișare și de testare variabile, se trece la testarea propriu-zisă a programmului care constă în:
- a lua un set de date de test și de a-l rula;
- a verifica dacă exte concordanță între ceea ce este tipărit în specificații și ceea ce dă programul;
- a găsi neconcordanțele;
- a stabili cazuzele neconcordanțelor;
- a efectua corecțiile;
- a relua alte seturi de date de test;
- a repeta operațiile de la prima;
- de a încheia testarea când nu mai apar erori de niciun fel.
În vremurile de demult srierea programului și testarea programului o făcea măria-sa programatorul. Acum este o diviziune a muncii, programarea fiind separată de testare.
Testarea programului este esențială. Testarea face ca programul să fie acceptat sau programul să fie respins. În cazul programului de calcul pentru media aritmetică ponderată se consideră seturile de date de test ale căror rezultate sunt ușor de verificat.
Se iau>
n=25
x[0]=x[1]=x[2]=...=x[24]=1
f[0]=f[1]=f[2]=...=f[24]=1
se verifică ușor dacă se citesc toate datele , dacă sumele sunt corect calculate și dacă media aritmetică ponderată este și ea corectă.
Al doilea set de date de test corespunde situației în care:
n=25
x[0]=1
x[1]=2
x[2]=3
...
x[24]=24
f[0]=1
f[1]=2
f[2]=3
...
f[24]=24
Cele două sume se calculează prima ca suma primelor 25 numere naturale Sxf= n(n+1)(n+2)/6 ți a doua ca sumă a primelor 25 de numere naturale sf=n(n+1)/2, media aritmetică fiind med=(n+2)/3.
Următorul set de date de test are n=24 și valorile seriei alternează cu valori pozitive și negative, iar frecvențele sunt în perechi:
n=24
x[0]=1
x[1]=-1
x[2]=2
x[3]=-2
...
x[22]=12
x[23]=-12
f[0]=1
f[1]=1
f[2]=2
f[3]=2
......
f[22]=12
f[23]=12
Sxf va fi zero, sf va fi n(n+2)/4, iar media aritmetică ponderată va fi și ea tot zero. Cu cât sunt mai multe astfel de seturi de date de test cu atât e mai bine. Abia după aceea se trece la testarea programului cu tot felul de serii despre care rezultatele se află în cărți de statistică și numai în ultimul stadiu se vor utiliza seriile oarecare, căci verificarea rezultatelor nu va mai fi necesară la nivel de detaliu așa ca la testările de început.
(29 noiembrie 2017)
No comments:
Post a Comment