Documente Academic
Documente Profesional
Documente Cultură
Scopul testorului este de a depista erorile softului cât mai devreme posibil şi se asigură că ele au
fost fixate şi luate măsuri în legătură cu aceasta.
Calitatea softului este indicată doar prin testarea acestuia. Un caz de test trebuie sa definească
neapărat ieşirea sau rezultatul dorit. Un programator ar trebui sa evite sa-şi testeze propriul
program.
Satisfacerea cerințelor clientului este cheia reușitei oricărei afaceri. Obținerea încrederii
clientului prin oferirea un soft bun, de calitate.
Erorile depistate și fixate în faza de descriere a specificațiilor nu costă practic nimic. Erorile
depistate după livrarea produsului mărește costul acestora de la mii la milioane de dolari.
Companiile de programare nu ar trebui să-şi testeze produsele proprii.
Fiecare rezultat al testului trebuie examinat foarte minuţios. Cazurile de test trebuie să fie scrise
atât pentru condiţii de intrare valide cât şi pentru cele invalide şi neaşteptate.
Desfacurarea activitatii pe parcursul practicii a fost impartita in doua “categorii” “
- teorie – am stabilit ca o zi pe saptamana sa ne fie prezentat cate un curs despre : domeniul
IT, asigurarea calitatii in IT, tipuri de testare , metode de testare... .
- testarea propriu-zisa a platformei Kinderunity, prin utilizarea platformei ca un utilizator
obisnuit si raportarea defectelor.
Standardul IEEE 610 – 1990: “Un set de intrari ale testului, conditii de executie si rezultate
asteptate, dezvoltat pentru un obiectiv anume, cum ar fi sa exercite o anume cale a unui program
sau sa verifice corespondenta cu o cerinta specifica.”
Standardul IEEE 829-1983: “Intrari specificate de documentatie, rezultate asteptate si un set de
conditii de executie pentru un item al testului.”
Ron Patton (2001): “Cazurile de testare sunt intrarile specifice pe care le veti incerca si
procedurile ce vor urma cand testati produsul software.”
De fapt, un test este o intrebare pe care o punem aplicatiei. Scopul ei
este de a aduna informatii.
Calitatea unui produs este uneori definita ca “ totalitatea caracteristicilor sale prin care el
satisface o serie de necesitati definite sau impuse”.
Calitatea unui produs software este data de « capacitatea sa de a putea fi utilizat eficient,
efectiv si confortabil, de catre un set de utilizatori, pentru un set de scopuri, in conditii
specificate ».
Caracteristicile de calitate ale unui produs software sunt proprietati ale produsului la care
utilizatorii sunt sensibili.
De exemplu : usurinta de utilizare, fiabilitatea, timpul de raspuns, s. a.
Exista diferite modele de clasificare a caracteristicilor (atributelor) de calitate ale unui produs
software. Modelele includ adesea si masuri pe baza carora se stabileste gradul in care produsul
intruneste fiecare atribut de calitate. Fiecare model poate avea un set de atribute diferit la nivelul
cel mai inalt al clasificarii, de asemenea selectia si definitiile atributelor pot sa difere la toate
nivelele.
Calitatea ceruta pentru un produs software trebuie sa fie definita in documentul de definitie a
cerintelor software (SRD). De asemenea, trebuie specificate definitiile atributelor de calitate,
metodele de masurare si criteriile de acceptare pentru atribute.
Caracteristici de calitate ale produselor software
Incercarile de standardizare a terminologiei referitoare la calitatea produselor software au
condus la standardul ISO 9126 (InformationTechnology-Software Product Quality, Part 1:
Quality Model, 1998). Standardul contine definitii in special pentru produsul final.
Sunt definite 6 caracteristici de calitate, impartite in 21 de subcaracteristici.
1) Functionalitatea: realizarea scopului de baza pentru care a fost realizat produsul
Oportunitatea: prezenta unui set de functii adecate pentru tascuri specificate
Precizia: furnizarea unor rezultate sau efecte corecte sau agreate
Interoperabilitatea: capacitatea produsului de a interactiona cu sisteme specificate
Securitatea: capacitatea de a preveni accesul neautorizat, accidental sau deliberat, la
programe sau date
Conformitatea: adeziunea la standarde, conventii, legi si protocoale
Testarea White Box (cutia transparentă sau cutia deschisă) – tehnica de creare a cazurilor de test
asupra codului programului pentru a detecta orice scenariu cu potenţial eşec.
Testarea prin metoda cutiei albe (sau cutiei de sticlă/transparenta), sau testarea structurală este o
tehnică de testare care verifică structura internă și modul de prelucrare a datelor (În opozitie cu
testarea black-box descrisa mai sus). Pentru a efectua o astfel de testare, evaluatorul trebuie să
știe cum a fost făcut programul și să aiba experienta în programare. Testerii introduc elemente de
testare în cod care îi ajuta să determine dacă instrucțiunile s-au executat corect pânăîn punctele
introduse. Este similar cu testarea unui circuit electronic în care se masoara din loc în loc
parametrii pentru a evalua funcționarea corecta.
Se poate aplica la nivelul de unitate, de integrare și de sistem, dar cel mai des se
folosește la nivelul unității. Deși astfel se descopera multe erori și probleme, nu se
detectează partile neimplementate sau specificații și cerințe lipsa.
În categoria cutiei albe sunt incluse:
- Testarea fluxului de control
- Testarea cailor pe care le poate lua programul
- Testarea căii de date
- Testarea tratării corecte a erorilor
Testarea gray-box
Testarea prin metodă cutia cutiei gri presupune ca testerul să cunoască algoritmii
și structurile de date din interiorul programului, dar să testeze ca un utilizator (ca la
black-box). Nu are nevoie de acces la codurile sursa. Manipularea datelor de intrare și
de ieșire nu se califică în testarea gray-box, intrucât acestea se afla inafară sistemului
(cutiei), insa modificarea structurii de date se incadreaza în aceasta categorie, pentru
că, în mod normal, un utilizator nu ar putea schimba datele dinafara sistemului.
Testarea gray-box poate include și ingineria inversa pentru a determina, de pildă,
valorile maxime și mesajele de eroare.
Cunoscand conceptele din spatele produsului software, un tester poate face
alegeri mai bune și în cunostinta de cauza în ceea ce priveste tipurile de teste care
trebuie efectuate. În general, unui astfel de tester i se permite pregătirea unui mediu de
test propriu (de exemplu, sa adauge propriile date intr-o baza de date și apoi să creeze
propriile scripturi SQL pentru a vedea răspunsurile).
Tipuri de testare
Stilurile dominante de testare black box sunt:
Testare functionala - se referă la cerințele funcționale ale aplicației și cuprinde faptul cît
de bine sistemul execută funcțiile sale. Acesta include comenzi de utilizare, manipulare
de date, căutări și procese de afaceri, integrări.
Testare de manuala
Testare de stress
Testare de regresie - (black & white box) reprezintă procesul de re-testare dupa remedieri
sau modificări ale produsului sau ale mediului său.
Se numesc astfel testele executate după corectarea erorilor, pentru a se verifica dacă în cursul
corectării nu au fost introduse alte erori. Aceste teste sunt efectuate de regulă în timpul
întreţinerii. Pentru uşurarea lor este necesar să se arhiveze toate testele efectuate în timpul
dezvoltării programului, ceea ce permite, în plus, verificarea automată a rezultatelor testelor
regresive. Duce la automatizare.
Testare de sistem - (black box) testarea completă a sistemului (echipă de testeri).
Acestea sunt teste ale sistemului de programe şi echipamente complet. Sistemul este instalat
şi apoi testat în mediul său real de funcţionare. Sunt teste de conformitate cu specificaţia
cerintelor de sistem (software) :
- teste functionale, prin care se verifica satisfacerea cerintelor functionale
- teste prin care se verifica satisfacerea cerintelor ne-functionale :
de performanţă,
de fiabilitate,
de securitate, etc.
Adesea, testele de sistem ocupă cel mai mult timp din întreaga perioadă de testare.
Testare de performanta
Testare automata
Determinarea cazurilor de test
Testarea unui modul, a unui subsistem sau chiar a întregului program presupune stabilirea unui
set de cazuri de test.
Un caz de test cuprinde:
- un set de date de intrare;
- funcţia / funcţiile exersate prin datele respective;
- rezultatele (datele de ieşire) aşteptate;
În principiu (teoretic) testarea ar trebui să fie exhaustivă, adică să asigure exersarea
tuturor căilor posibile din program. Adesea o astfel de testare este imposibilă, de aceea trebuie să
se opteze pentru anumite cazuri de test. Prin acestea trebuie să se verifice răspunsul programului
atât la intrări valide cât şi la intrări nevalide.
Sunt două metode de generare a cazurilor de test, care nu se exclud, de multe ori fiind
folosite împreună. Ambele metode pot sta la baza unor instrumente de generare automată a
datelor (cazurilor) de test:
1. Cazurile de test se determină pe baza specificaţiei componentei testate, fără cunoaşterea
realizării ei; acest tip de testare se numeşte testare “cutie neagra” (“black box”).
2. Cazurile de test se determină prin analiza codului componentei testate. Acest tip de
testare se mai numeşte şi testare “cutie transparentă”, sau testare structurală.
De ce testam?
- Ca sa gasim defecte!
- Pentru a reduce impactul defectelor aparute la client, pentru a
nu afecta costurile si profiturile ☺.
- Pentru a creste fiabilitatea sistemului.
- Pentru a creste calitatea produsului.
- Pentru a ne asigura ca un produs este conform cu cererile
clientilor.
Cand sa ne oprim din testare?
- Am acoperit ceea ce ne stabilisem.
- Rata de gasire a defectelor a scazut sub o rata stabilita.
- Echipele implicate in proiect cad de acord ca produsul poate fi
livrat.
- Managementul decide ca produsul sa fie livrat.
METODE DE TESTARE SI
CICLUL DE VIATA AL PRODUSELOR INFORMATICE (SOFTWARE)
Pro-uri
· Simplu și ușor de înțeles și de utilizat
· Ușor de gestionat din cauza rigiditatea modelului. Fiecare fază are rezultate specifice și a unui
proces de revizuire.
· Fazele sunt prelucrate și completate unul la un moment dat.
· Funcționează bine pentru proiecte mai mici, în cazul în care cerințe sunt foarte bine înțelese.
· Etape bine definite si in mod clar inteles repere.
· Ușor de a aranja sarcini.
· Procesul și rezultatele sunt bine documentate.
Contra
· Nici un software de lucru se produce până târziu în timpul ciclului de viață.
· Nu este un bun model pentru proiecte complexe și orientate spre obiect.
· Modelul slab pentru proiecte lungi și în curs de desfășurare.
· Nu este potrivit pentru proiectele în care cerințele sunt la un risc moderat ridicat de schimbare.
· Este dificil să se măsoare progresele înregistrate în cadrul etapelor.
· Nu se poate acomoda schimbarea cerințelor.
· Ajustarea domeniului de aplicare în timpul ciclului de viață se poate termina un proiect.
Modul iterativ
În modelul iterativ, proces iterativ începe cu o implementare simpla a unui set mic de cerințele
software și iterativ consolidează versiunile în evoluție până când sistemul complet este
implementat și gata pentru a fi utilizate.
Un model de ciclu de viață iterativ nu încearcă să înceapă cu o specificație de cerințe. In schimb,
dezvoltarea începe prin definirea și punerea în aplicare doar o parte a software-ului, care este
apoi revizuit în scopul de a identifica cerințe suplimentare. Acest procedeu este apoi repetat,
producând o nouă versiune a software-ului de la sfârșitul fiecărei iterație a modelului.
Metodologia Agile
Agile este metodologia de dezvoltare de software.
Un ghid organizational care sprijina un mediu in care exista sau pot exista prea multa schimbare.
Ca raspuns la schimbarea continua a mediului, Agile Software incurajeaza interactiunea si
colaborarea frecventa cu clientii, livrare constanta a produselor si serviciilor.
Agile Software Development este o familie de metodologii de project management în ingineria
software, bazată pe dezvoltarea incrementală și care îmbrățișează și promovează schimbările ce
evoluează de-a lungul întregului ciclu de viață al unui proiect. Aceste metodologii se
caracterizează prin divizarea problemei în subprobleme mici și planificarea lor pe durate scurte.
Se evită planificarea în detaliu pe termen lung, deoarece inerent în dezvoltarea de software apar
întârzieri frecvente din cauza schimbărilor și detalierii cerințelor clientului.
Este foarte eficient în cazul în care clientul își schimbă frecvent cerința lui.
Caracteristici cheie:
• Codul de proprietate colectivă și libertatea de schimbare.
• Abordarea incrementală (de exemplu, povești de utilizator sunt puse în aplicare treptat)
• De automatizare (de exemplu, TDD - Test de Driven Development).
• Orientarea spre client (de exemplu, internă și utilizatorii externi și analiști de afaceri sunt
clienții dumneavoastră imediate)
• Proiectarea trebuie să fie simplu. Proiectarea este o activitate în curs de desfășurare cu
constanta de re-factoring pentru a atinge regulile de cod simplitate ca nici o dublare, verificată
prin teste automate, separarea responsabilităților, precum și numărul minim de clase, metode și
linii.
Scopul principal este ca, la terminarea fiecărui ciclu de dezvoltare (denumit iterație, și a cărui
durată este de obicei ordinul câtorva săptămâni) să existe o versiune cât de cât funcțională (deși
incompletă) a software-ului dezvoltat (cu număr minim de buguri).
O altă caracteristică importantă este comunicarea frecventă între membrii echipei, care, în
multe cazuri, se întâlnesc într-o scurtă ședință zilnică, denumită stand-up sau scrum în care
fiecare prezintă pe scurt progresul său în ultima zi de lucru și problemele cu care s-a confruntat.
Acestora li se alătură și un reprezentant al clientului, care trebuie să fie informat de aspectele
dezvoltării, pentru a ști ce modificări este realist să ceară și cât de mult ar putea costa ele. Astfel,
toată lumea are cunoștințe despre fiecare aspect al dezvoltării aplicației și poate prelua munca
altuia sau ajuta pe altcineva.
PROTOCOL INTERNET
Protocolul Internet sau IP este un protocol prin care datele sunt trimise de la un calculator la
altul prin intermediu Internetului. Fiecare calculator (cunoscut sub denumirea de „gazdă”), are pe
Internet cel puțin o adresă IP unică, care îl identifică între toate computerele din rețea. Când
cineva trimite sau primește informații (de ex.: poștă electronică, pagini web) mesajul este
împărțit în blocuri de mici dimensiuni denumite pachete. Fiecare pachet cuprinde adresa
expeditorului și pe cea a destinatarului. Fiecare pachet este trimis, prima dată la un calculator-
pasarelă, care înțelege o mică parte din internet.
Calculatorul pasarelă citește destinația pachetelor și trimite pachetele către o altă pasarelă, și
așa mai departe, până ce pachetul ajunge la pasarela vecină cu computerul destinatar.
Adresa IP este utilizată la nivelul programelor de prelucrare în rețea. În schimb, la nivelul
utilizatorilor cu acces la Internet, identificarea calculatoarelor se face printr-un nume de gazdă
gestionat de sistemul DNS.
Funcționare
Comunicația în Internet funcționează după cum urmează: nivelul transport preia șiruri de date
și le divide în datagrame. Teoretic, datagramele pot avea fiecare până la 64 KO, dar în practică
ele nu depășesc 1500 de octeți (pentru a intra într-un cadru Ethernet). Fiecare datagramă este
transmisă prin Internet, fiind eventual fragmentată în unități mai mici pe parcurs. Când toate
aceste „fragmente” ajung la mașina destinație ele sunt reasamblate de nivelul rețea în datagrama
originală. Datagrama este transparentă nivelului transport, care o inserează în șirul de intrare al
procesului receptor.
Cea mai mică adresă este 0.0.0.0, iar cea mai mare 255.255.255.255. Adresa IP 0.0.0.0 este
folosită de gazde atunci când sunt pornite. Adresele IP cu 0 ca număr de rețea se referă la rețeaua
curentă. Aceste adrese permit ca mașinile să acceseze propria rețea fără a cunoaște numărul de
rețea (dar trebuie cunoscută clasa rețelei pentru a ști câte zerouri trebuie introduse). Adresele
care constau numai din 1-uri permit difuzarea în rețeaua curentă, în mod uzual o rețea locală.
Toate adresele de forma 127.xx.yy.zz sunt rezervate pentru testări în buclă locală. Pachetele
trimise către această adresă nu sunt trimise prin cablu ele sunt prelucrate local și tratate ca
pachete sosite.
O datagramă IP (un pachet) constă dintr-o parte de antet și o parte de text. Antetul are o parte
fixă de 20 octeți și o parte opțională de lungime variabilă.
Fiecare gazdă și ruter din internet are o adresă IP, care codifică adresa sa de rețea și de gazdă.
Combinația este unică: în principiu nu există două mașini cu aceeași adresă IP. Toate adresele IP
sunt de 32 biți și sunt folosite în câmpurile „Adresă sursă” și „Adresă destinație” a pachetelor IP.
Este important de observat că o adresă IP nu se referă la o gazdă. Se referă, de fapt, la o interfață
de rețea. Cu alte cuvinte, dacă o gazdă este în două rețele, trebuie să folosească două adrese IP .
Rețelele sunt dinamice și este posibil ca 2 pachete IP de la aceeași sursă să plece pe căi
diferite (BGP – protocolul porților de graniță) și să ajungă la aceeași destinație. Pachetele IP
(dupa cum s-a mai spus) nu au garanția că vor ajunge la destinație, acest lucru fiind lăsat în
seama protocoalelor adiacente (TCP UDP etc).
Automatizarea testării
Scopul testării automate este de a minimiza cantitatea de muncă manuală în executara testului
și acoperirea unei game mai mari de valori pentru a face testul prin aplicarea unui număr mai
mare de teste. Testara automată are un impact major asupra metodelor de testare concepute și al
uneltelor folosite pentru testare. Prin testarea automată se detectează blocările programelor și
operațiile curente oferind informații de diagnosticare.
Un model de testare poate fi reprezentat astfel:
PREZENTAREA PLATFORMEI KINDERUNITY
Scenariu
I- CREEAZĂ PROGRAM