Automatizarea testării 4 decembrie 2014

Documente similare
Testare manuala: situatia in care o persoana initiaza fiecare test, interactioneaza cu el si interpreteaza, analizeaza si raporteaza rezultatele. Test

Logică și structuri discrete Logică propozițională Marius Minea marius/curs/lsd/ 3 noiembrie 2014

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Discipline aferente competenţelor Facultate: Facultatea de Electronică şi Telecomunicaţii Universitate: UNIVERSITATEA POLITEHNICA DIN TIMIȘOARA Domeni

Paradigme de Programare

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

LUCRAREA 8 PROGRAMAREA NELINIARĂ ÎN REZOLVAREA PROBLEMELOR DIN ENERGETICĂ. METODE DE ORDINUL Aspecte generale Programarea neliniară are o foart

INFORMATICĂ ŞI MARKETING

Proiectarea Sistemelor Software Complexe

Diapositive 1

CASA CORPULUI DIDACTIC BRAILA PROGRAM DE FORMARE INFORMATICA SI TIC PENTRU GIMNAZIU CLASA A V-A SERIA 1 GRUPA 2 CURSANT: TIMOFTI V. AFRODITA COLEGIUL

Laborator 1 suport teoretic Mediul de dezvoltare Eclipse GLOSAR - Aplicaţie: program obţinut în urma aplicării operației BUILD asupra unui proiect (ve

PowerPoint Presentation

Laborator 3

Paradigme de programare

PowerPoint Presentation

Capitole Speciale de Informatică Curs 4: Calculul scorurilor în un sistem complet de extragere a informaţiilor 18 octombrie 2018 Reamintim că în cursu

Analiză statică Analiza fluxului de date 23 octombrie 2014

EXCEL FĂRĂ SECRETE Grafice şi diagrame

MergedFile

Creational design patterns

Creational design patterns

Microsoft Word - Algoritmi genetici.docx

Caraivan George-Alexandru Grupa 431A Interfața driver-kernel la Linux Introducere Deși pentru unii dintre noi acest lucru poate fi o supriză, cei mai

Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

Biomedical Wi-Fi data transmissons

PowerPoint Presentation

Fâciu N. Maria-Ema CASA CORPULUI DIDACTIC BRĂILA PROGRAM DE FORMARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A SERIA 1 GRUPA 2 CURSANT: Fâciu N. M

Laborator 9: Fire de execuţie Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 20 noiembrie 2011

Microsoft Word - Plus TV Analog Pro Stick Installation _Rom V1.3_.doc

Laborator 5 - Paradigme de Programare

Definiţie: modele analitice care asigură evaluarea unor caracteristici de calitate alese, bazându-se pe date din măsurători ale proiectelor software.

Entrepreneurship and Technological Management

Microsoft Word - Ansamblul software CRONIS

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

Sistem de supraveghere video inteligent cu localizarea automata a evenimentelor de interes SCOUTER, cod proiect PN-II-IN-DPST , contract nr

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Microsoft Word - Pocatilu_IE3_2006.doc

Proiect GSN-08 Ghid de securitate nucleară privind repornirea instalaţiilor nucleare după opririle neplanificate CAPITOLUL I Domeniu, scop, definiţii

LOGICA MATEMATICA SI COMPUTATIONALA Sem. I,

Analiză de flux de date 29 octombrie 2012

proiectarea bazelor de date

Platforma 5. 1 Introducere in MSSQL Introducere Pe parcursul ultimilor ani, se poate observa o cuplare a limbajelor de programare majore cu tipuri de

Unitatea de învăţământ: Colegiul Tehnic de Posta si Telec. Ghe. Airinei Calificarea profesională: Analist programator Modulul: MODELAREA SISTEMELOR IN

..MINISTERUL EDUCAŢIEI NAȚIONALE ŞI CERCETARII STIINTIFICE UNIVERSITATEA DE VEST DIN TIMIȘOARA.I CENTRUL DE DEZVOLTARE ACADEMICĂ. FIȘA DISCIPLINEI 1.

OPERATII DE PRELUCRAREA IMAGINILOR 1

SUBPROGRAME

Lucrarea 10

Limbaje de Programare Curs 8 – Fisiere

Limbaje de Programare Curs 6 – Functii de intrare-iesire

Introducere în limbajul JavaScript

Top

Cuantizare Vectoriala.doc

Declararea variabilelor

A.E.F. - suport laborator nr.8 sem.ii Analiza structurală la flambaj În acest laborator sunt atinse următoarele aspecte: modalitatea de analiză la fla

PROGRAMARE ORIENTATA PE OBIECTE

A.E.F. - suport laborator nr.5 sem.ii Analiza suprafețelor prin utilizarea elementelor 2D În acest laborator sunt atinse următoarele aspecte: realizar

LUMINIŢA SCRIPCARIU

..MINISTERUL EDUCAŢIEI NAȚIONALE ŞI CERCETARII STIINTIFICE UNIVERSITATEA DE VEST DIN TIMIȘOARA.I CENTRUL DE DEZVOLTARE ACADEMICĂ. FIȘA DISCIPLINEI 1.

PowerPoint Presentation

MergedFile

Subiectul 1

PowerPoint Presentation

Programarea şi utilizarea calculatoarelor

Emoji Planet Video Slot™

Nr

GHERCĂ MAGDA CASA CORPULUI DIDACTIC BRĂILA PORTOFOLIU EVALUARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A Neamț SERIA 1 GRUPA 1 CURSANT: GHERCĂ G

Inserarea culorilor in tabele

Microsoft Word - Lab1a.doc

Slide 1

Instructiuni pt. depunerea declaratiei A4200 Declaratia A4200 se construieste pornind de la o colectie de fisiere XML, reprezentand fiecare o zi fisca

Concepte de bază ale Tehnologiei Informației

Transmisia datelor multimedia in retele de calculatoare <Titlu Lucrare>

Microsoft Word - 5_ _Eval_ ETC_master_ESI_AnI-II_completat.doc

PLAN DE AFACERI (model) <maxim 80 de pagini, inclusiv eventualele anexe> I. REZUMAT: aceasta parte se va întocmi la final (Atentie! Rezumatul nu trebu

Microsoft Word - Fisa DRS - ROMANA.docx

Microsoft PowerPoint - TDRC_II-03-Ethernet.ppt

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Curs7

Ruby on Rails Pop Alexandru Pavel Razvan Calculatoare 4

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ Universitatea Babeş-Bolyai Cluj-Napoca superior 1.2 Facultatea Facultatea de Mate

TERMENI DE REFERINȚĂ Servicii de consultanță pentru mentenanța Sistemului de Management al Informațiilor existent (SMI) pentru Asistență Socială siste

Addendum Syllabus 6 Microsoft Excel 2010 REF Syllabus 6.0 Crearea unui nou registru de calcul pe baza unor șabloane disponibile local sau online

CABINET MINISTRU

MINISTERUL EDUCAŢIEI, CULTURII ŞI CERCETĂRII AL REPUBLICII MOLDOVA COORDONAT: 2017 Nr. de înregistrare a planului de învăţământ UNIVERSITATEA DE STAT

E_d_Informatica_sp_SN_2014_bar_10_LRO

I. DATE STATISTICE PRIVIND ACTIVITATEA INSTANŢEI ÎN ANUL 2018 I.1. Volumul de activitate I.1. Volumul de activitate la nivelul instanţei În anul 2018,

Microsoft Word - TIC5

Microsoft Word - 2 ES RO.doc

E_d_Informatica_sp_MI_2015_bar_02_LRO

Microsoft Word _POO_Lab_1_Modificari_v01.htm

Facultatea de Științe Politice, Administrative și ale Comunicării Str. Traian Moșoiu nr. 71 Cluj-Napoca, RO Tel.: Fax:

Matematici aplicate științelor biologie Lab06 MV

Programarea calculatoarelor. Note de curs Marius Minea 1 Introducere în programarea în C 1.1 Funcţii în limbajul C Calcule şi funcţii La origine, rolu

A.E.F. - suport laborator nr.7 sem.ii Utilizarea rețelelor de tip 1D & 2D În acest laborator sunt atinse următoarele aspecte: conectarea unui element

Ghid utilizare aplicație PARKING BUCUREȘTI Aplicație PARKING BUCUREȘTI 1

Communicate at your best - Manual - Cap 3 - RO

COLEGIUL NAŢIONAL „AVRAM IANCU” CÎMPENI – JUD

Object Oriented Programming

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

Transcriere:

Automatizarea testării 4 decembrie 2014

Problematica automatizării Testarea are componente repetitive, deci se justifică automatizarea. Problema e evaluarea cost-beneficiu a automatizării [Kaner] Cer timp: crearea, verificarea funcționării, documentarea testelor E reutilizabilă automatizarea? (cât se modifică programul?) Necesită mentenanță? (modificare GUI, internaționalizare) Automatizarea testării: tratată ca orice proces de dezvoltare Întârzie găsirea erorilor? (scade resursele pentru rularea testelor) Găsește suficiente erori? Sau greul ramâne pe testarea manuală? E suficient de puternică? Sau automatizează doar testele ușoare?

Exemplu: Capture-replay 1) înregistrează acțiunile utilizatorului (mouse/tastatură), și ecranul rezultat (bitmap) nivelul cel mai primitiv alte verificări: cu efortul testorului (întrerupere/inserare) susceptibilă la orice modificare în produs posibile erori de comparare în imaginea rezultată 2) script cu acțiuni la nivel înalt (selectare meniu/buton) mai flexibile, dar nu verifică implicit aspectul grafic (nivel scăzut: font, dimensiune/suprascriere text, etc.) 3) limbaj de scripting pentru a genera automat teste noi Dezavantajele sistemului capture-replay Nu poate continua din erori erorile sunt găsite în procesul manual de înregistrare se automatizează doar reluarea testului bun (regresie) Nu poate defini testele implicite pentru om ( tot restul e OK ) (nu detectează erori nespecificate, sau e inflexibilă ex. bitmap)

Exemplu: Test monkeys Utilitare automate care execută acțiuni la întâmplare (fără cunoștințele unui testor despre funcționalitatea produsului) Dumb monkeys: ignoră complet utilitatea (doar mouse/tastatură) dar pot avea noțiuni de bază despre ferestremeniuri/butoane Smart monkeys: au un model cu stări al aplicației, exercită tranziții între aceste stări ++ pot găsi uneori 10-20% din erori [Nyman, Microsoft, 2000] ++ bună acoperire preliminară (ex: 65% în 15 min, editor texte) ++ teste complet automate, fără efort uman de înregistrare -- dumb monkeys nu știu ce e eroare: doar când sistemul crapă -- erorile sunt dificil de înregistrat și reprodus ++ rulează independent, nesupravegheat, minim de resurse (cost)

Ce putem automatiza în testare? Execuția/rularea testelor ex. în orice cadru de testare de modul utilă pentru testarea de regresie Evaluarea testelor = problema oracolului de testare: testul a trecut sau nu? Netrivial. Adesea necesită inspecție manuală. Riscuri: erori nedetectate (imprecizie, sau aceeași eroare ca programul) avertismente false costul verificării manuale Ex: comparare de semnale continue (în industria automotive) comparare de imagini pentru ecran/imprimantă Generarea testelor Relativ facil: generarea de schelete de test (declarații + apeluri) Mai dificil: generarea inteligentă de date relevante (acoperire)

Alegerea arhitecturii de testare [Kaner] 1) Arhitectură direcționată de date (data-driven) Separă datele de structura testului (la fel ca în programe) Exemplu: Tabel, linii = teste; coloane = parametrii de test Un script generează un test pentru fiecare rând din tabel Minim rezonabil: acoperă fiecare pereche de valori la parametri (pentru fiecare combinație de parametri numărul e exponențial) 2) Definirea unui cadru de testare (framework-based architecture) O bibliotecă de funcții separă testarea de interfața utilizator Ex: open(file), independent de acțiunile pentru deschidere (meniu, clic pe buton, tastatură, etc.) ++ reutilizare pentru acțiunile frecvent folosite ++ nivel de indirectare izolare de utilitarul de testare -- costisitor, amortizare doar la versiuni ulterioare

Testarea pornind de la specificații Automatizabilă (/keykeyword testing) pentru specificații în limbaj definit Pornind de la documentație: specificație tabelară, ex. [Pettichord] Test ID Operation Table Name Type Nulls dtbed101 Add Col TB03 NEW INT COL CHAR(100) Y Important: format suficient de ușor inteligibil pentru specificator Un translator/interpretor de test generează din tabel driverul de test sau face interfața cu utilitarul comercial de testare folosit ++: axat pe cerințe (ce, nu cum), independență de implementare și utilitar de testare, auto-documentat Avansat: generare automată din specificații în limbaj formal (ex. tabele de decizie în RSML, la protocolul de aviație TCAS-II)

Testarea bazată pe modele Modele: automate finite, UML, Statecharts (automate ierarhice), Message Sequence Charts, automate cu timp, rețele Petri, lanțuri Markov... Criterii de generare: acoperirea satisfăcătoare a modelului toate stările / tranzițiile; combinații de k tranziții consecutive (k-switch cover) ++ facilitează generarea testelor relevante -- investiție în construirea și mentenanța modelului Testare prin model checking prin explorarea spațiului stărilor, pornind de la specificații: 1) se pune întrebarea: poate modelul să ajungă într-o stare dată? 2) dacă da, un model checker va genera un exemplu = caz de test

Testarea pornind de la implementare: execuție simbolică Scop: exercitarea programului, satisfăcând un criteriu de acoperire necesită: instrumentarea pentru măsurarea acoperirii Cum: combinație de căi alese la întâmplare + direcționat (pentru atingerea ramurilor neparcurse încă) Execuție simbolică: execuție a programului folosind expresii (cu variabile = simboluri), spre deosebire de valori numerice În execuția simbolică se rețin constrângeri (path conditions) corespunzând ramificațiilor urmate de program Realizabilitatea condițiilor se verifică cu utilitare specializate (satisfiability checkers, constraint solvers) generează date de test care vor exercita calea respectivă sau demonstrează că nu e fezabilă oprește explorarea acelei căi

Execuția simbolică și testarea programelor inițial descrisă de James C. King (1976) programul e executat (de un interpretor special) folosind intrări symbolice arbore de execuție simbolică cu condiții de cale (path conditions) care acumulează condițiile de la fiecare ramificare/decizie execuția se oprește când condiția devine inconsistentă (nerealizabilă) Scopul generării de teste factor ridicat de acoperire uneori, atingerea unei anumite ramuri Larg cercetată (150+ articole), tehnică matură, de succes Utilitare: Java Pathfinder, (j)cute, Crest, KLEE, Pex, SAGE,... pentru C, C#, Java, mai recent JavaScript

Execuția simbolică: variante Execuție integral simbolică explorează independent fiecare cale de execuție c 1? c 2? c 3? c 1 c 2 c 1 c 2 c 1 c 3 c 1 c 3 Problema: toată semantica limbajului trebuie exprimată în formule și un rezolvitor pentru formule arbitrare imposibil matematică complicată, funcții de bibliotecă, interacțiuni cu mediul ex. KLEE: modele pentru 40 de apeluri sistem (2500 LOC)

Execuție simbolică dinamică (concolică) Execuția simbolică e direcțonată de cea concreteă de aici numele concolic Când modelarea simbolică ar fi prea complicată, înlocuiește pasul respectiv cu execuție concretă ex. aritmetică neliniară, funcții de bibliotecă function explore(pc = [c 1, c 2,..., c n ]) for k = n downto 1 do inputs = solve pc = c 1... c k 1 c k (flip c k ) rerun with new inputs; capture new pc explore(pc ) Problema: înlocuind cu valori concrete, se poate să nu mai atingem calea dorită

Concretizarea ca obstacol în execuția simbolică y = hash ( x ) ; // nu s tim ce f a c e hash => y e c o n c r e t i f ( x + y > 0) // c a l e a 1 e l s e // c a l e a 2 Fie prima intrare: x = 20; y = hash(20) = 13 calea 1 Pentru calea 2, negăm x + y > 0, cu y concret (constanta 13) Rezolvitorul poate returna (de ex.) x = -15 dar putem avea hash(15) = 27 și x + y > 0 (nu putem prezice) execuția urmează tot calea 1 reîncercare; în cel mai rău caz, devine testare aleatoare

Când e eficientă automatizarea? În testarea de regresie: necesită doar stocarea testelor și a rezultatelor așteptate + compararea automată a rezultatelor Testarea interfețelor utilizator (v. discuția anterioară) Testarea translatoarelor: generarea automată de intrări pornind de la gramatica limbajului se explorează aleator/statistic combinații de neterminale Load/stress testing: aleatoare, relevantă e cantitatea, nu conținutul Fuzz testing: generarea de cantități mari de intrări aleatoare/ostile, pentru a detecta erori de validare / vulnerabilități de securitate Ex: Randoop [Microsoft]: 4 mil. teste în 150 ore CPU / 15 ore-om 30 de erori în cod testat 200 pers.-an, cu 20 erori/an găsite manual v. și http://research.microsoft.com/en-us/projects/pex/

Automatizarea depanării După automatizarea detecției sprijinul în localizarea erorilor Minimizarea intrărilor de eroare prin căutare binară, determinând jumătatea de intrare care cauzează eroarea (ex. în cazul programelor cu intrări fișiere) Minimizarea diferențelor între o rulare corectă și una eronată tot căutare binară, pentru două intrări cât mai apropiate Localizarea erorilor în spațiu comparând în depanator starea de execuție între rulări corecte și eronate detectând (precis sau statistic) invarianți/tipare corecte, violate de execuția eronată Localizarea erorilor în timp prin compararea secvențelor eronate și identificarea punctelor în care variabile infectate încep să difere / afecteze ieșirea Delta debugging [Zeller]: implementare parțial automată a acestora