Cum de a testa Codul Web?

voturi
11

Are cineva unele sugestii bune pentru scrierea de cod de testare pentru dezvoltarea de baze de date-backend în cazul în care există o dependență grea de stat?

Mai precis, vreau să scrie teste pentru cod care prelua înregistrările din baza de date, dar răspunsurile vor depinde de datele din baza de date (care se poate schimba în timp).

Oamenii fac, de obicei, un sistem de dezvoltare separat, cu o bază de date „înghețate“, astfel încât orice funcție dată ar trebui să se întoarcă întotdeauna exact același set de rezultate?

Sunt destul de sigur că acest lucru nu este o problemă nouă, așa că ar fi foarte interesat să învețe din experiența altor oameni.

Există articole bune acolo, care discuta despre această problemă de dezvoltare bazate pe web, în ​​general?

Eu de obicei, scrie cod PHP, dar aș aștepta toate aceste probleme sunt în mare măsură de limbă și un cadru agnostic.

Întrebat 05/08/2008 la 22:58
sursa de către utilizator
În alte limbi...                            


10 răspunsuri

voturi
5

Ar trebui să se uite în DBUnit, sau să încerce să găsească un echivalent PHP (trebuie să existe unul acolo). Puteți să-l utilizați pentru a pregăti baza de date cu un set specific de date, care reprezintă datele de testare, și astfel fiecare test nu va mai depinde de baza de date și unele de stat existente. În acest fel, fiecare test este de sine stătător și nu se va rupe în timpul utilizării în continuare a bazei de date.

Actualizare: O căutare rapidă Google a arătat o extensie unitate de DB pentru PHPUnit.

Publicat 05/08/2008 la 23:03
sursa de către utilizator

voturi
3

Dacă sunteți în primul rând preocupat de testare strat de date, ar putea să doriți să verificați această carte: Modele xUnit de testare: Refactorizare cod de test . Am fost mereu sigur despre asta eu, dar această carte face o treabă foarte bună de a ajuta la a enumera preocupările precum performanța, reproductibilitate, etc.

Publicat 06/08/2008 la 05:14
sursa de către utilizator

voturi
2

Noi folosim o bază de date (HSQL: în memoria http://hsqldb.org/ ). Hibernate ( http://www.hibernate.org/ ) îl face ușor pentru noi să arate testele noastre unitare la db de testare, cu bonusul adăugat că acestea alerga la fel de rapid ca un fulger ..

Publicat 10/09/2008 la 13:02
sursa de către utilizator

voturi
2

Cred că depinde de ce bază de date pe care îl utilizați, dar Red Gate (www.red-gate.com) face un instrument numit de date SQL Generator. Acest lucru poate fi configurat pentru a umple baza de date cu datele de testare în căutarea sensibile. De asemenea, puteți spune să utilizați întotdeauna aceeași sămânță în generatorul său de numere aleatorii, astfel încât datele dvs. „aleatoare“ este același de fiecare dată.

Apoi, puteți scrie testele unitare pentru a face uz de aceste date fiabile, repetabile.

În ceea ce privește testarea pe partea de web a lucrurilor, eu sunt în prezent în căutarea Seleniu (selenium.openqa.org). Aceasta pare a fi o cross-browser suita de test capabil , care va ajuta la funcționalitatea de testare tine. Cu toate acestea, la fel ca toate aceste instrumente de testare site -ul web, nu există nici o modalitate de a testa cât de bine aceste lucruri se uite în toate browserele fără turnare ochiul uman peste ei!

Publicat 06/08/2008 la 14:44
sursa de către utilizator

voturi
1

În general, sunt de acord cu Petru, ci pentru crearea și ștergerea datelor de testare nu ar folosi în mod direct SQL. Eu prefer să folosesc unele API CRUD, care este utilizat în produs pentru a crea date ca fiind similar cu producția cât posibil ...

Publicat 10/09/2008 la 12:31
sursa de către utilizator

voturi
1

Aș propune să utilizeze trei baze de date. O bază de date de producție, o bază de date de dezvoltare (umplut cu unele date semnificative pentru fiecare dezvoltator) și o bază de date de testare (cu mese goale și poate câteva rânduri care sunt întotdeauna necesare).

O modalitate de a testa codul de baze de date este:

  1. Introduceți câteva rânduri (folosind SQL) pentru a inițializa starea
  2. Rulați funcția pe care doriți să testați
  3. Compara așteptat cu rezultate reale. Aici ai putea folosi cadrul normal de unitate de testare
  4. Curățați rândurile care au fost modificate (astfel încât, pe termen următoare nu se va vedea pe termen anterior)

Cleanup poate fi realizat într - un mod standard (desigur, numai în baza de date de testare) cu DELETE * FROM table.

Publicat 19/08/2008 la 19:40
sursa de către utilizator

voturi
1

Iată strategia mea (am folosi JUnit, dar sunt sigur că există o modalitate de a face echivalentul în PHP):

Am o metodă care se execută înainte de toate testele unitare pentru o clasă DAO specifică. Se pune baza de date dev într-o stare cunoscută (adaugă toate datele de testare, etc.). Așa cum am alerga teste, am ține evidența cu privire la orice date adăugate la starea cunoscută. Aceste date este curățat până la sfârșitul fiecărui test. După ce toate testele pentru clasa au rulat, o altă metodă elimină toate datele de testare în baza de date dev, lăsându-l în starea în care era înainte de testele au fost efectuate. Este un pic de lucru pentru a face toate astea, dar eu scriu de obicei metodele dintr-o clasă de DBTestCommon în cazul în care toate clasele mele de test DAO pot ajunge la ele.

Publicat 11/08/2008 la 14:30
sursa de către utilizator

voturi
1

Ai putea încerca http://selenium.openqa.org/ este mai mult pentru testarea GUI , mai degrabă decât o aplicație de testare strat de date , dar nu înregistrează acțiunile dvs. , care apoi pot fi redate pentru a automatiza teste pe platforme diferite.

Publicat 06/08/2008 la 13:06
sursa de către utilizator

voturi
1

Dacă aveți posibilitatea de configurare a bazei de date cu o cantitate cunoscută înainte de a rula testele si darama la final, atunci veți ști ce date cu care lucrați.

Apoi, puteți utiliza ceva de genul Seleniu pentru a testa cu ușurință de la UI-ul (presupunând că web-based aici, dar există o mulțime de instrumente de testare UI acolo pentru alte UI-arome) si de a detecta prezența unor înregistrări tras înapoi de la baza de date.

Este cu siguranta merita înființarea, fie o versiune de testare a bazei de date - sau de a face scripturile de test a popula baza de date cu datele cunoscute, ca parte a testelor.

Publicat 05/08/2008 la 23:08
sursa de către utilizator

voturi
1

Am exact aceeași problemă cu munca mea și mi se pare că cea mai bună idee este de a avea un script PHP pentru a re-crea baza de date și apoi un script separat, în cazul în care am arunca de date nebun la ea pentru a vedea dacă se rupe.

Nu am folosit niciodată nici o unitate de testare sau alte elemente asemănătoare, astfel nu se poate spune dacă funcționează sau nu rău.

Publicat 05/08/2008 la 23:03
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more