Sunt familiarizat cu conceptele (luat de testare cursuri de la facultate), dar eu nu sunt sigur cum să le utilizeze încă de când n-am lucrat niciodata pe un "reală" TDD proiect.
Eu sunt pe cale de a începe dezvoltarea unui proiect folosind Ruby on Rails (cel mai probabil folosind 2.3). Această aplicație va fi folosit pentru a gestiona date, a utilizatorilor și a unor fișiere. Nu o't fi prea complicat la început, dar s-ar putea scara mult în următoarele 6 luni, astfel încât simt că este momentul potrivit pentru a obține mai mult în TDD.
Am'am o idee de bază despre cum se face, dar tot am nevoie de niște sfaturi și sfaturi:
Ce Ruby on Rails TDD 101 articolul ar trebui să citesc?
De ce am nevoie pentru a testa?
Ce bijuterie/plugin ar trebui să folosesc?
Ar trebui să folosesc rspec? Altceva?
Odată am'am luat toate testele clase, cum să mă duc și să le implementați? (de exemplu: Continuu de Integrare)
Cum consumatoare de timp TDD este într-adevăr?
Am nevoie să citesc o carte despre asta, sau poate am obține totul doar de joc în jurul cu ea și citind tutoriale on-line? Dacă am nevoie pentru a citi o carte, ce carte?
Îmi place de învățare cu exemple lucru ar putea cineva spune-mi cum aș putea să merg și să ia o TDD abordare pentru a rezolva această problemă:
am Companiile. Am Contacte. O contact pot fi legate la 1 companii. O compania poate avea mai multe contacte. Am vrei pentru a crea moduri de a crea contacte, companii și link-ul de contacte pentru companii.
Nu't trebuie să utilizeze acest exemplu, în răspunsul dumneavoastră, dar ar ajuta :)
Ce Ruby on Rails TDD 101 articolul ar trebui să citesc?
Voi începe cu un ghid pentru testarea șine aplicații.
De asemenea, Railscast are un excelent screencast despre cum să folosiți diferite instrumente de testare.
de Ce am nevoie pentru a testa?
Voi începe cu modele, deoarece acestea sunt ușor pentru a testa. O regulă simplă este că aveți nevoie pentru a acoperi fiecare declarație în cazul în test.
Tu ar trebui să testeze scopul de metodă (pentru a vă asigura că funcționează cum era de așteptat), precum și cazuri de margine.
De asemenea, asigurați-vă că don't ajunge peste teste.
Ce bijuterie/plugin ar trebui să folosesc? Ar trebui să folosesc rspec? Altceva?
Atunci când începe, trebuie doar să utilizați Test Unit
. Puteți utiliza rspec
sau castravete
după ce vă familiarizați cu elementele de bază.
Autotest
este un instrument de frumos pentru a avea, dacă vrei să fii cu adevărat test driven. Dar aceasta este o 'frumos au' nu este necesar.
Odată am'am luat toate testele clase, cum să mă duc și să le implementați?
Nu sunt sigur despre întrebare. Nu't de obicei implementa teste. Odată ce aveți toate dvs. de testare clase simplu tip 'greblă test' pentru a rula toate testele.
Cum consumatoare de timp TDD este într-adevăr?
Se economisește timp într-adevăr. Dacă vă place puzzle labirint, știi că este aproape întotdeauna mai ușor să o rezolve, dacă te duci de la finish la start. Același cu TDD. Fără Test Driven sunt în mod constant de gândire 'ce ar trebui să fac în continuare'. Cu Test de Condus, testul vă va spune ce să faci în continuare (mi se rupe dacă logica nu este acolo, deci ai nevoie doar de a stabili rupt o parte). De asemenea, aveți mai puține bug-uri care vă va salva o mulțime de timp pe termen lung.
nu am nevoie să citesc o carte despre asta, sau pot obține totul doar de joc în jurul cu ea și de lectură on-line tutoriale? Dacă am nevoie pentru a citi o carte, ce carte?
Nu ai nevoie de o carte. Cel mai eficient mod de a învăța ceva este: fă-o. Du-te înapoi la carte sau resurse on-line o dată vă confruntați cu o întrebare sau o problemă. Acest lucru este agil.
În exemplu, lucruri care au nevoie de testare sunt: O persoană de contact poate fi conectat la 1 companii, O companie poate avea mai multe contacte, de a crea moduri de a crea contacte și link-ul de contact pentru companii.
class CompanyTest <Test::Unit
def test_relationship # test associations/relationships
c = companies(:some_company)
assert_equal [a list of contacts], c.contacts # make sure a company can have multiple contacts
end
end
class ContactTest<Test::Unit
def test_relationships
c = contact(:some_contact)
assert_equal some_company, c.company # make sure the contact link to 1 company
end
def test_create/add
# test create contacts, here you need to make sure the contact is created correctly, and linked to company correctly
end
end
Am'am produs un 6-episodul serie video, care a fost predată ca o clasă publică în San Francisco, în vara anului 2010. Materialul cuprinde testarea și producător de eficiență în Șine 2.3 utilizarea RSpec 1.3. Ușor datat, dar principalele concepte se aplică pentru Șine cu 3 Rspec 2.x
http://www.rubyfocus.biz/class_video/2010/07/19/rails_tdd_class_1.html
Recomand această carte: Ruby on Rails Tutorial. Am'm aproape gata cu ea. Cartea folosește TDD la tot cartea. Dă-o încercare!
TDD este vorba de scrierea testelor. Acest principiu obligă să scrie propriul dvs. de client înainte de a scrie codul de aplicație. Ciclul se scriu, în general, un test pentru un API care nu't există, testul așteaptă ca aceasta să eșueze, du-te să scrii cod API, rulați din nou testul și asigurați-vă că trece. Apoi scrie următorul test... și așa mai departe.
S-ar putea fi, de asemenea, interesat în această Șine de ghidare.
Eu folosesc :
Ce bijuterie/plugin ar trebui să folosesc?
Am' - am bucurat întotdeauna de trebuia.
Cum consumatoare de timp TDD este într-adevăr?
Motivul pentru care am'am favorizat întotdeauna TDD dezvoltare este faptul că se concentrează cum voi implementa o anumită bucată de cod. Am o anecdotice sentimentul că ori de câte ori am aderă mai puternic la TDD principii am petrece mai puțin timp de refacere mai târziu. Cantitatea de timp petrecut este tot în cât de bine ai scrie teste unitare, deși. Dacă unitatea teste don't capta comportamentul așteptat, tot timpul petrecut pe ele este irosit.