Ce teste unitare, teste de integrare, teste de fum, și teste de regresie? Care sunt diferențele între ele și ce instrumente pot folosi pentru fiecare dintre ele?
De exemplu, eu folosesc JUnit și NUnit pentru unitate de testare și testarea de integrare. Sunt acolo orice fum de testare sau de regresie instrumente de testare?
Integrarea * test: Test corect inter-operațiunea de mai multe subsisteme. Există întregul spectru, de la testarea de integrare între două clase, pentru a testare de integrare cu mediul de producție.
Fum de testare (aka bun-simț verifica): Un simplu test de integrare în cazul în care vom verifica doar că, atunci când sistemul de testare este invocată se întoarce în mod normal și nu explodeze.
Fum de testare este atât o analogie cu electronice, în cazul în care primul test apare atunci când se alimentează un circuit (dacă se fumează, se's proaste!)...
... și, apparently, cu instalații sanitare, în cazul în care un sistem de conducte este literalmente umplut de fum și apoi verificat vizual. Dacă ceva nu fumeaza, sistemul este permeabil.
Regresie test: Un test care a fost scris atunci când un bug a fost stabilit. Se asigură că acest bug specific nu va avea loc din nou. Numele complet este "non-regresie de testare". Acesta poate fi, de asemenea, un test făcut înainte de a schimba o aplicație pentru a asigurați-vă că aplicația oferă același rezultat.
Pentru asta, voi adauga:
Acceptarea de testare: Test de faptul că o caracteristică sau un caz de utilizare este corect implementat. Este similar cu un test de integrare, dar cu un accent pe caz de utilizare pentru a oferi mai degrabă decât pe componentele implicate.
Sistem de testare: Teste un sistem ca o cutie neagră. Dependențele pe alte sisteme sunt adesea batjocorit sau stinse în timpul testului (în caz contrar ar fi mai mult un test de integrare).
Pre-zbor de verificare: Teste care se repetă într-o producție-mediu, pentru a atenua 'se bazează pe masina mea' sindrom. De multe ori acest lucru este realizat prin acceptare sau de fum de testare într-o producție mediu.
Toată lumea va fi ușor diferite definiții, și există multe zone gri. Cu toate acestea:
Un nou test de categoria I'am devenit conștienți de este:
Exemple ar putea fi:
apocrife istorice trivia: "fum de testare" vine de la submarin inginerie (moștenit de la instalații sanitare) în cazul în care literal fum ar fi pompat în corpul navei pentru a vedea dacă a venit din nou, care ar fi mai degrabă un eșec dramatic pentru un submarin!
Răspuns de la unul dintre cele mai bune site-Uri pentru Software-ul de Testare Tehnici:
Tipuri de Software de Testare – Lista Completă [Click Aici](http://www.testingexcellence.com/types-of-software-testing-complete-list/)
It's destul de o lungă perioadă de descriere, am'm, nu va inserați codul de aici: dar poate fi util pentru cineva care vrea să cunoască toate tehnicile de testare.
Sper'll fi de ajutor :)
Unitate de testare: Verificarea componenta respectivă (de exemplu,clasa), create sau modificate funcții cum a fost proiectat. Acest test poate fi manual sau automat, dar nu trece dincolo de limita de componenta.
Integrare testare: Verificarea că interacțiunea dintre anumite componente funcție de cum a fost proiectat. Testele de integrare poate fi realizată la nivel de unitate sau la nivel de sistem. Aceste teste pot fi manuale sau automate.
Regresie de testare: Verificarea că noi defecte, nu sunt introduse în cod existent. Aceste teste pot fi manuale sau automate.
În funcție de SDLC (cascada, rup, agile, etc) special teste pot fi efectuate în 'faze' sau poate fi realizată, mai mult sau mai puțin, în același timp. De exemplu, unitate de testare poate fi limitată la dezvoltatorii care apoi rândul său, codul pe la testere pentru integrarea și testarea de regresie. Cu toate acestea, o altă abordare ar fi dezvoltatorii de a face unitate de testare și un anumit nivel de integrare și testare de regresie (folosind un TDD abordare, împreună cu integrarea continuă și automată unitate și teste de regresie).
Setul de instrument va depinde în mare măsură pe codebase dar există multe instrumente open source pentru unit testing (JUnit). HP's (mercur) QTP sau Borland's Silktest sunt ambele instrumente automate pentru integrarea și testarea de regresie.
test de unitate: testarea de modul individual sau independent component într-o aplicație este cunoscut pentru a fi o unitate de testare , unitatea testarea va fi efectuată de către producător.
test de integrare: combinând toate modulele și testarea aplicației pentru a verifica comunicarea și fluxul de date între modulele sunt de lucru în mod corespunzător sau nu , această testare, de asemenea, efectuate de către dezvoltatori.
test ÎN fum test se verifica aplicarea în mică adâncime și lățime modul, În fum de testare verifică funcționalitatea principal al aplicației , dacă nu există nici o blocare problemă în aplicarea ei va raporta la echipa de dezvoltator , și echipa de dezvoltare va repara și de a remedia defectul, și dă-l înapoi la echipa de testare, iar acum echipa de testare va verifica toate modulele pentru a verifica tat modificările efectuate într-un modul va avea un impact în alte module sau nu. ÎN FUM de TESTARE cazuri de testare sunt scriptate
testarea de regresie executarea același cazuri de testare în mod repetat pentru a asigura tat neschimbate module nu produce nici un defect. TESTAREA de REGRESIE vine sub testarea functionala
Unitate de testare este direcționat la cel mai mic parte a punerii în aplicare posibil. In java acest lucru înseamnă că testează o singură clasă. În cazul în care clasa depinde de alte clase acestea sunt falsificate.
Atunci când apeluri de test mai mult de o clasa, sa o test de integrare.
Plin apartamente de testare poate dura o lungă perioadă de timp pentru a rula, astfel încât după o schimba multe echipe rula rapid pentru a finaliza teste pentru a detecta semnificative pagube. De exemplu, ați încălcat Uri la resurse esențiale. Acestea sunt teste de fum.
Teste de regresie rula pe fiecare construi și de a permite să refactor eficient de capturare ce te rupe. Orice fel de test poate fi de regresie test, dar mi se pare teste unitare sunt cele mai utile în găsirea sursa de vina.
Unitate de testare: Verificarea componenta respectivă (de exemplu,clasa), create sau modificate funcții cum a fost proiectat. Acest test poate fi manual sau automat, dar nu trece dincolo de limita de componenta.
Integrare testare: Verificarea că interacțiunea dintre anumite componente funcție de cum a fost proiectat. Testele de integrare poate fi realizată la nivel de unitate sau la nivel de sistem. Aceste teste pot fi manuale sau automate.
Regresie de testare: Verificarea că noi defecte, nu sunt introduse în cod existent. Aceste teste pot fi manuale sau automate.
În funcție de SDLC (cascada, rup, agile, etc) special teste pot fi efectuate în 'faze' sau poate fi realizată, mai mult sau mai puțin, în același timp. De exemplu, unitate de testare poate fi limitată la dezvoltatorii care apoi rândul său, codul pe la testere pentru integrarea și testarea de regresie. Cu toate acestea, o altă abordare ar fi dezvoltatorii de a face unitate de testare și un anumit nivel de integrare și testare de regresie (folosind un TDD abordare, împreună cu integrarea continuă și automată unitate și teste de regresie).
Un tip de test care pare a fi demn de menționat în acest thread este stresul/performanta/teste de încărcare care ar putea fi pus pur și simplu ca să afle limitele dincolo de care o anumită bucată de software-ul pauze. Rețineți că, în termeni de scule este esențial pentru a determina cu precizie domeniul de aplicare a ceea ce se propune pentru testele de stres la un sistem de perspectivă. De exemplu, în cazul unui "aplicație web" de testare de stres poate include în domeniul său de aplicație server de web în sine și astfel de scule ar putea să intervină în acest scop. Aici este un post frumos despre http sarcina de testare
Am vrut doar să adăugați și să dea ceva mai mult context, de ce avem aceste niveluri de testare, ce înseamnă cu adevărat cu exemple
Mike Cohn în cartea sa "Reușita cu Agil" a venit cu "Testarea Piramida" ca o modalitate de abordare teste automate în proiecte. Există diverse interpretări ale acestui model. Modelul explică ce fel de teste automate trebuie să fie create, cât de repede se poate oferi feedback cu privire la aplicarea sub test și cine scrie aceste teste. În principiu, există 3 nivele de testare automată este necesar pentru orice proiect și sunt după cum urmează.
Teste Unitare- Aceste test cea mai mică componentă a aplicației software. Acest lucru ar putea fi literalmente o funcție într-un cod care calculează o valoare în funcție de unele intrări. Această funcție este parte din mai multe alte funcții de hardware-ul/software-ul codebase care face cererea.
De exemplu - Să ia un web bazate pe calculator. Cele mai mici componente ale acestei aplicații, care trebuie să fie unitatea de testat ar putea fi o funcție care efectuează plus, un alt care efectuează scăderea și așa mai departe. Toate aceste funcții mici, puse împreună face aplicația calculator.
Din punct de vedere istoric producător scrie aceste teste deoarece acestea sunt de obicei scrise în același limbaj de programare ca software-ul de aplicație. Unitatea de framework-uri de testare, cum ar fi JUnit și NUnit (pentru java), MSTest (pentru C# și .NET) si Iasomie/Mocha (pentru JavaScript) sunt utilizate pentru acest scop.
Cel mai mare avantaj al testelor unitare sunt, ei alerga foarte repede sub UI și putem obține un feedback rapid cu privire la aplicarea. Acest lucru ar trebui să reprezinte mai mult de 50% din teste automate.
API/Teste de Integrare- Aceste testa diverse componente de sistem software împreună. Componentele ar putea include testarea bazelor de date, API (Application Programming Interface), 3rd party, instrumente și servicii, împreună cu cererea.
De exemplu - În calculatorul nostru exemplu de mai sus, aplicația web poate utiliza o bază de date pentru a stoca valori, utilizați API pentru a face unele de partea de server validări și poate utiliza un instrument 3rd party/serviciu de a publica rezultatele la cloud pentru a face disponibile pe diferite platforme.
Din punct de vedere istoric un producător sau tehnice de asigurare a calității ar scrie aceste teste folosind diferite instrumente, cum ar fi Poștaș, SoapUI, JMeter și alte instrumente, cum ar fi Testim.
Aceste rula mult mai rapid decât UI teste ca au rula în continuare sub capota, dar se poate consuma un pic mai mult timp decât de teste unitare, deoarece are pentru a verifica comunicarea între diferite componente independente ale sistemului și să se asigure că dispun de integrare. Aceasta ar trebui să cuprindă mai mult de 30% din teste automate.
UI Teste- În cele din urmă, avem teste care să valideze UI de aplicare. Aceste teste sunt de obicei scrise pentru a testa end-to-end curge prin aplicarea.
De exemplu - În aplicația calculator, un capăt la altul flux ar putea fi, deschiderea browser-> Introducerea cererii calculator url -> Logare cu nume de utilizator/parola -> Deschiderea aplicației calculator -> Efectuarea unor operațiuni pe calculator -> verificarea acestor rezultate din UI -> Logare a aplicației. Acest lucru ar putea fi un capat la sfârșitul fluxului că ar fi un candidat bun pentru UI automation.
Din punct de vedere istoric, tehnic QA sau testere manual scrie UI teste. Ei folosesc open source cadre, cum ar fi Seleniu sau UI de testare platforme, cum ar fi Testim pentru autor, executa și de a menține teste. Aceste teste dau mai mult feedback-ul vizual după cum puteți vedea cum sunt testele de funcționare, diferența între temperatura și rezultatele reale prin capturi de ecran, busteni, rapoarte de încercare.
Cea mai mare limitare a UI teste este, ele sunt relativ lent în comparație cu Unitatea și API la nivel de teste. Deci, acesta ar trebui să cuprindă doar 10-20% din totalul de teste automate.
Următoarele două tipuri de teste pot varia în funcție de proiect, dar ideea este-
Teste De Fum
Acest lucru poate fi o combinație a celor de mai sus 3 nivele de testare. Ideea este de a rula în fiecare cod de check-in și pentru a asigura critică funcționalități ale sistemului sunt încă de lucru cum era de așteptat, după noile modificări de cod sunt îmbinate. Au de obicei nevoie pentru a rula cu 5 - 10 minute pentru a obține mai rapid feedback-ul pe eșecuri
Teste De Regresie
Ele sunt de obicei rula o dată pe zi cel puțin și se acoperă diverse functionalitati ale sistemului. Se asigura aplicația este încă de lucru cum era de așteptat. Sunt mai multe detalii decat teste de fum și acoperă mai multe scenarii de aplicare, inclusiv non-critice.
De fum și de bun-simț de testare sunt atât de efectuat după un software construi pentru a identifica dacă pentru a începe testarea. Sanatatea poate fi sau nu executat după fum de testare. Ele pot fi executate separat sau în același timp - bun-simț fiind imediat după fum.
Pentru sanatatea testare este mai în profunzime și durează mai mult timp, în cele mai multe cazuri este bine meritat să fie automatizate.
Fum de testare, de obicei, durează nu mai mult de 5-30 minute pentru execuție. Este mult mai general: se verifică un număr mic de funcții de bază ale întregului sistem, în scopul de a verifica că stabilitatea software-ul este destul de bun pentru teste suplimentare și că nu există probleme, blocarea rula planificate cazuri de testare.
Sanatatea testare este mai detaliată decât fum și poate dura de la 15 minute până la o zi întreagă, în funcție de amploarea și de a construi noi. Este mai specializat tip de testarea de acceptare, efectuată după progresia sau re-testare. Se verifică caracteristicile de bază ale anumitor funcționalități noi și/sau bug fixat împreună cu unele strâns legate de acestea caracteristici, în scopul de a verifica dacă acestea funcționează ca necesare operaționale logica, înainte de testarea de regresie pot fi executate la o scară mai mare.
Unitate de Testare: întotdeauna Se efectuează de către producător, după dezvoltarea lor de făcut pentru a afla problema din partea lor de testare înainte de a face orice cerință gata pentru QA.
Testarea de integrare: înseamnă tester trebuie să verifice modul de a sub-modulului de verificare atunci când unele date/funcție de ieșire sunt conduce la un modul la alte module. Sau în sistemul dumneavoastră dacă utilizați instrument de terță parte care utilizează sistemul de date pentru a integra.
Fum de Testare: tester efectuate pentru a verifica dacă sistemul de nivel înalt testarea și încercarea de a afla dop de spectacol bug înainte de a face modificări sau codul merge live.
Testarea de regresie: Tester efectuate de regresie pentru verificarea funcționalității existente datorită schimbărilor implementate în sistem pentru nou accesoriu sau modificări în sistem.
teste Unitare Unitatea testele sunt de nivel foarte scăzut, aproape de sursa de aplicație. Ele constau în testarea individuală metode și funcții de clase, componente sau module utilizate de către software-ul. Unitate teste sunt în general destul de ieftine pentru a automatiza și poate fi rulat foarte ușor de către o integrare continuă server.
teste de Integrare teste de Integrare a verifica că diferite module sau servicii utilizate de aplicație funcționează bine împreună. De exemplu, pot fi testarea interacțiunea cu baze de date sau de a face sigur că microservices lucreze împreună așa cum era de așteptat. Aceste tipuri de teste sunt mai scump pentru a rula ca au nevoie de mai multe părți ale cererii pentru fi de până și să fie difuzate.
teste Funcționale testele Funcționale se concentreze pe cerințele de afaceri de o aplicație. Ei doar verifica puterea de ieșire a unei acțiuni și nu verificați stările intermediare ale sistemului, atunci când se efectuează asta de acțiune.
Există uneori o confuzie între testele de integrare și teste funcționale ca ambele au nevoie de mai multe componente pentru a interacționa cu fiecare alte. Diferența este că un test de integrare poate pur și simplu verificați că nu se poate interoga baza de date în timp ce un test de funcționare ar se așteaptă pentru a obține o anumită valoare din baza de date definite de cerințele produsului.
End-to-end de teste End-to-end de testare a reproduce un comportament de utilizator cu software-ul într-o aplicație completă mediu. Se verifică dacă diverse fluxurile de utilizator lucreze cum era de așteptat și poate fi la fel de simplu ca și încărcarea unei web sau pagina de logare sau mult mai complexe scenarii verificarea e-mail notificări, plăți on-line, etc...
End-to-end teste sunt foarte utile, dar ele're scump pentru a efectua și poate fi greu pentru a menține atunci când au're automatizate. Este recomandat să au o cheie de câteva end-to-end de teste și să se bazeze mai mult pe nivelul inferior tipuri de testare (unitate și integrare teste) să fie în măsură să identifice rapid rupere modificări.
testarea de Acceptare teste de Acceptare sunt teste formale executate la verificați dacă sistemul satisface acestuia cerințele de afaceri. Ei au nevoie de întreaga aplicație pentru a fi de până și să fie difuzate și să se concentreze pe replicarea utilizatorul comportamente. Dar ele pot, de asemenea, merge mai departe și de a măsura performanța sistemului și să respingă modificările în cazul în care anumite obiective nu sunt cunoscut.
testarea de Performanță teste de Performanță verificați comportamente de sistem atunci când este sub sarcină semnificativă. Aceste teste sunt non-funcționale și pot avea diferite forme, pentru a înțelege fiabilitatea, stabilitatea și disponibilitatea de platforma. Pentru de exemplu, se poate observa timpul de răspuns atunci când execută o mare numărul de cereri, sau de a vedea modul în care sistemul se comportă cu o semnificative de date.
teste de Performanță sunt, prin natura lor, destul de costisitoare pentru punerea în aplicare și run, dar ele pot ajuta să înțelegeți dacă noile modificări sunt de gând să erori de sistem.
Fum de testare teste de Fum sunt de bază, teste care verifica bază funcționalitatea aplicației. Ele sunt menite să fie rapid pentru a executa, iar scopul lor este de a oferi asigurarea că marile caracteristici ale sistemului dumneavoastră sunt de lucru cum era de așteptat.
teste de Fum pot fi utile imediat după o construcție nouă este precupețit pentru a decide dacă este sau nu puteți rula mai multe teste scumpe, sau chiar după o implementare pentru a se asigura că acestea aplicația se execută în mod corespunzător nou implementat mediu.
sursa: https://www.atlassian.com/continuous-delivery/software-testing/types-of-software-testing
Unitate De Testare:- unitate de testare se face de obicei de către dezvoltatorii parte,în cazul în care ca testeri sunt parțial evoluat în acest tip de testare în cazul în care testarea se face unitate cu unitate. În java Junit test de cazuri pot fi, de asemenea, posibil pentru a testa dacă codul scris este perfect proiectat sau nu.
Testarea De Integrare:- Acest tip de testare este posibilă după unitate de testare, atunci când toate/unele componente sunt integrate.Acest tip de testare se va asigura că, atunci când componentele sunt integrate,nu se afectează reciproc capacitățile de lucru sau funcționaliști.
Fum De Testare:- Acest tip de testare este făcut în trecut, atunci când sistemul este integrat cu succes și gata pentru a merge pe server de producție. Acest tip de testare se va asigura că fiecare funcționalitate importantă de la început până la sfârșit este de lucru bine, și sistemul este gata pentru a implementa pe server de producție.
Testarea De Regresie:- Acest tip de testare este important să se testeze că nedorite/nedorite defecte nu sunt prezente în sistem atunci când producător fix unele probleme. Această testare, de asemenea, asigurați-vă că toate bug-uri sunt rezolvate cu succes si din cauza asta nici alte probleme au avut loc.
Unele răspunsuri bune deja, dar aș dori în continuare să le rafineze:
Unitate de testare este singura formă de cutie alba de testare aici. Ceilalți sunt în cutie neagră de testare. Cutie alba de testare înseamnă că știi intrare, știi mecanismele interioare ale mecanismului și poate inspecta și știi de ieșire. Cu black box testing știi doar ce intrare și de ieșire ar trebui să fie.
Deci, în mod clar unitate de testare este numai alb cutie de testare aici.
Fum de testare a fost explicat deja aici și este simplu. Regresie test vine sub integrare testare.
Teste automate pot fi împărțite în doar 2.
Test de unitate și de Integrare Testare. (asta e tot ce conteaza)
Eu aș numi folosi expresia "timp de testare"(LT) pentru toate testele de integrare testare, testare funcțională, regresie test, UI test , etc. Și unitate de testare ca "scurt test".
Un LT exemplu ar putea fi, în mod automat de încărcare a unei pagini web, vă conectați la cont si cumpara o carte. Dacă trece testul, este mult mai probabil pentru a rula pe live-ul la fel(de aici 'un somn mai bun' de referință). Lung = distanța între pagina web(start) și de baze de date(end).
Și aceasta este o mare de articol pentru a discuta beneficiile de integrare testare(test) pe unitate de testare