1 / 39

Testipõhine arendus .NET platvormil

Testipõhine arendus .NET platvormil. Mart Karu mart.karu (ät) soluvi.com Soluvi. Kes räägib?. Mart Karu Tegutseb: ühingutes Metamathic ja Soluvi doktoriõppes TTÜ-s Teinud tarkvara aastast 1995 .NET platvormil aastast 2003. Mis plaanis?. Sissejuhatav ülevaade (Mis?)

laasya
Download Presentation

Testipõhine arendus .NET platvormil

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Testipõhine arendus .NET platvormil Mart Karu mart.karu (ät) soluvi.com Soluvi

  2. Kes räägib? • Mart Karu • Tegutseb: • ühingutes Metamathic ja Soluvi • doktoriõppes TTÜ-s • Teinud tarkvara aastast 1995 • .NET platvormil aastast 2003

  3. Mis plaanis? • Sissejuhatav ülevaade (Mis?) • Praktiline rakendamine (Kuidas?) • Uued arengud (Kuidas nutikamalt?) • Küsimused ja vastused

  4. Mis? • Testipõhine arendus – Test Driven Development (TDD) • Tarkvara-arenduse võte • Pärineb XP / Agile praktikutelt • Põhineb automatiseeritud testidel • Lühikesed ja kiired tsüklid

  5. Red-Green-Refactor! Punane Mõtle mida tarkvara peaks tegema ja kirjuta ebaõnnestuv test Kirjuta lihtsaim testi rahuldav programmikood Korrasta Roheline Korrasta lähtekoodi, kui märkad segadust või halbu võtteid

  6. Mis on “test”? • Moodultest (Unit Test) • Integratsioonitest (Integration Test) • Vastuvõtutest (Acceptance Test)

  7. Moodultest • Testib ühte kõige väikseimat osa • Iga testiklassi kohta üks testitav klass (ja tavapäraselt ka vastupidi) • Iga testimeetod testib ühte kindlat testitavat meetodit • Ei pea olema arusaadav tellijale • On kiire

  8. Integratsioonitest • Testib kombineeritult moodulite või klasside omavahelist koostööd. • Läbib mitmeid tarkvarakihte ja protsesse

  9. Funktsionaal- või vastuvõtutest • Testib süsteemi lõppkasutaja nägemuse järgi • Automatiseerib kasutajaliidese tegevusi • Ütleb kas süsteem vastab seatud funktsionaalsetele nõuetele.

  10. Protsess Vastuvõtutestid Integratsiooni- testid Moodultestid

  11. Millest koosneb test? • Arrange – olukorra seadistamine • Act – tegevuse käivitamine • Assert – olukorra kontrollimine

  12. DEMO Mõned lihtsad tsüklid

  13. Miks TDD hea on? • Soodustab head disaini • enne teostust tuleb mõelda • evolutsiooniline disain • disain on lihtne • aitab keskenduda olulisele • mängib läbi klientsüsteemi(-klassi) töö • soodustab head objektorienteeritud disaini – loose coupling, high cohesion

  14. Miks TDD hea on? • Aitab verifitseerida • vähem vigu • spetsifitseerib tarkvara käitumist • iga tarkvaralõigu toimimine on kontrollitav • tagasiside tehtud tööst

  15. Miks TDD hea on? • Psühholoogia • suurendab kindlust töös • tõstab motivatsiooni • Tõstab produktiivsust • kiirem tagasiside muutuste korral • kiirem arendamine

  16. Osa 2 Praktiline Rakendamine

  17. Testimisvahendid • NUnit • MbUnit • MSTest • xUnit

  18. Testidega katmine (Coverage) • NCover ja NCover • PartCover • Visual Studio

  19. Hea testi tunnused • Automatiseritud ja taaskorratav • Lihtne hallata • Töötab kiirelt • Igaüks võib kasutada ükskõik millal • Töötab isoleeritult • Katab piisavalt testitavat koodi

  20. Automatiseerimine • Pidev Integratsioon (Continuos Integration, CI) • kiire tagasiside • turvavõrk • Build taskid • Testandmed

  21. Testide haldamine • Testid enne koodi • Testid eraldi projekti • Kommunikeeri kavatsusi • MeetodiNimi_Juhtum_OodatudTulem • Ka teste tuleb korrastada • Testid ei tohiks kattuda • Üks Assert iga testimeetodi kohta • Osaline testide jooksutamine

  22. Moodultest: Kiirus • Moodultestides tuleb vältida: • IO-d • andmebaasisuhtlust • protsesside / threadide vahelist testimist • Aitavad testiteisikud (Test Double) • aeglaste sõltuvuste asendamiseks • objektidevahelise suhtluse kontrolliks

  23. Testiteisikud • Dummy Object • Test Stub • Test Spy • Mock Object • Fake Object

  24. DEMO Testiteisikud

  25. Tarkvara-arhitektuur ja TDD MODEL VIEW Moodulestid Moodultestid Template Domain Template Integr. testid Template Helper Moodultestid Domain Service Integr. testid ASP.NET Vastuvõtutestid Vastuvõtutestid Integr. testid CONTROLLER DAO Interface Controller Controller Moodulestid DB ? Integr. testid

  26. Testidetasüsteemi testifitseerimine • Muudetavad piirkondade leidmine • Muutepunktide selgitamine • Integratsioonitestid muutepunktidele • Väliste sõltuvuste lõhkumine • Sisemiste sõltuvuste lõhkumine • Testidega katmine • Moodultestid, muudatused ja refactor

  27. Kuidas kasutusele võtta? • Oluline on kogu organisatsiooni tugi • Koolitus / õpe, paaritamine • Vältida kohustuslikuks tegemist • Geriljavõtted

  28. Ettevaatust! • Testiteisikute liigne kasutamine • Testide haldamine • Katvuse meetrika • Tavapärane testimine

  29. Osa 3 Uued ja põnevad asjad

  30. Behaviour Driven Development (BDD) • TDD edasiarendus • Spetsifikatsiooni kvaliteet • Äri- ja tehnikavaldkond ühel sõnavaral • Ilmutatud kujul ja verifitseeritav (äri)väärtus süsteemis • (Eel)analüüsi mahu optimeerimine

  31. BDD vahendid • Vastuvõtutestid • Cucumber (ruby) • SpecFlow • Moodul- ja integratsiooni-testid • rSpec (ruby) • SpecUnit .NET • SubSpec • Mspec • Specter (boo)

  32. Cucumber • Testide kirjeldamine loetavas inimkeeles • Teste (heal juhul) kirjutavad tellijad • Testid = nõuded • Stsenaariumid automatiseeritakse kasutades sobivaimat testimisraamistikku

  33. Cucumber. Kasutamine.NET platvormil • IronRuby + Cucumber • Testid käitivatakse .NET keskkonnas • Testide sammud on kirjutatud Ruby-s • Ruby MRI + Cucumber + Cuke4Nuke • Cucumberi testid käivitatakse Ruby keskkonnas • Testide sammud on kirjutatud C#-s

  34. DEMO Cucumber .NET-is

  35. rSpec • Valdkonnapõhine keel (DSL) • saab esitada käivitatavaid näiteid testitava koodi käitumisest. • Võimaldab hierarhilisi kontekste ja seadeid • Võimaldab dokumenteerida teste

  36. DEMO rSpec .NET-is

  37. Kokkuvõte • Rõõmsat TDD/BDD kasutamist!

  38. Kasulikud viited • nunit.org • www.ayende.com/projects/rhino-mocks.aspx • behaviour-driven.org • rspec.info • cukes.info • ironruby.net • The Rspec Book • The Art of Unit Testing • XUnit Test Patterns

  39. www.eneta.ee/foorum

More Related