Testide koodihulk küündib hea kaetavuse korral küllaltki lähedale toote enda omaga. Vahel võib seda isegi rohkem olla. Projektide puhul üritame hallata koodi võimalikult hästi, kuid testid tunduvad esialgu sekundaarsed ning seal kasutatakse praktikaid, mida toote koodis välditakse viimse võimaluseni.
Testimisega alustades luuakse üks projekt, kuhu hakatakse teste kirjutama. Kuna üks projekt on ilmselgelt vähe, siis tekkib seal kompott komponendi-, integratsiooni- ja vastuvõtu testidest. Selle vältimiseks tasuks luua iga liigi jaoks eraldi projekt. Kuna integratsiooni- ja vastuvõtu testid on aeglasemad, siis nende pidev jooksutamine on ajakulukas ning võib pärssida testimist. Seevastu komponenditeste tuleks väga tihedalt jooksutada. Lisaks neile olen teinud ka projekti õppimiseks, näiteks Arc.Learning.Tests kuhu alla panen katsed kuidas mingeid asju lahendada. Neid ei peaks iseenesest üldse jooksutama, kuid neis leidub ka oma väärtus – raamistike muutumisel võib olla see märgutuleks.
Testimise projekte tuleb umbes 3-4 tükki kokku. See annab märku, et iga toote projekti kohta ei tasuks luua komplekti testprojekte, vaid kasutada neid terve lahenduse jaoks.
Arc.Domain, Arc.Infrastructure, Arc.Infrastructure.Dependencies.Structuremap, Arc.Infrastructure.Dependencies.CastleWindsor… – igaühe jaoks testide projektide komplekt tähendaks üle 16 projekti ja see ei oleks enam hallatav. Lisaks mõned projektid sisaldaksid ainult paari testi.
Viimasel ajal olen veel täheldanud, et võltsitud objektide osa hakkab erinevates testide projektides korduma ning mõistlik oleks ka need eraldi projekti alla viia.

Visual Studio soovitab projektide loomisel lahenduse peakausta salvestamiseks. Siiski mõistlik tegevus on jagada need erinevatesse kataloogidesse: Source ja Tests. Sel puhul on build skripte veidi lihtsam kirjutada.
Testide projektide nimetuse osas olen kahe variandini jõudnud: Solution.Unit.Tests või Solution.Tests.Unit. Esimene neist tundub veidi loetavam ja kui nad on eraldi kausta salvestatud, siis ei ole järjekorra osas ka vahet.

Testide enese haldamiseks on järjekordselt kaks mõistlikku lähenemist: testid klassi kohta, testid spsteemi funktsionaalsuse kohta. Viimane neist viitab kontekstide poole, mis on BDD pärusmaa. Vastavalt variandist võiks klasside nimed lõppeda Tests või Specs.
Siinkohal on minu poolsed soovitused lõppenud ja jään ootama teie poolseid lahendusi, kuidas testidest paremini jõud üle käiks. Meeldivat testimist!
Loe veel sarnastel teemadel:
- Mida TDD tähendab?, 18. november
- Miks mulle Rake meeldib, 4. mai
- Iluvõtted testidele, 17. mai
- Ilus arhitektuur, 7. august
- xUnit Test Patterns, 14. jaanuar
KAIZEN FEED
Telli endale Kaizeni uudisvoog
KOMMENTAARIDE FEED
Telli endale kommentaaride voog
KAIZEN TWITTER
Lühiuudised Kaizeni autoritelt
KAIZEN FACEBOOK
Liitu Kaizeniga
MIS ON KAIZEN?
Kaizen on Saiku tarkvaraarendusealane blogi, kus kirjutame erinevatest lähenemistest meisterlikule tarkvaraarendusele.
KATEGOORIAD
- .NET (18)
- Analüüs/Arhitektuur (11)
- Arendus (66)
- Ettevalmistus (1)
- Juhtimine (2)
- Varia (23)
SILDIPILV
- .NET (41)
- ilus kood (23)
- Arendus (23)
- C# (20)
- Analüüs/Arhitektuur (14)
- Testimine (10)
- raamat (8)
- Ruby (8)
- projektijuhtimine (8)
- printsiibid (6)
- produktiivsus (5)
- ReSharper (5)
- PHP (5)
- NHibernate (4)
- objekt-orienteeritud (4)
- pidev integratsioon (4)
- Viited (4)
- agile (4)
- Java (4)
- Geekdinner (4)
- lean (4)
- raamatukogu (4)
- CI (3)
- Cruise Control.NET (3)
- Robert C. Martin (3)
- scrum (3)
- iteratsioon (3)
- suhtlus (3)
- jQuery (2)
- TechEd 2008 (2)
- Visual Studio (2)
- valideerimine (2)
- intervjuu (2)
- analüüs (1)
- ASP.NET (1)
- ümberstruktureerimine (1)
- üritus (1)
- CodeRush (1)
- dokumentatsioon (1)
- Kent Beck (1)
- LINQ (1)
- Martin Fowler (1)
- Moq (1)
- Rhino Mocks (1)
- stackoverflow (1)
- võltsitud objektid (1)
- Whiteboard Wednesday (1)
- hindamine (1)
- tarkvara kvaliteet (1)
- ajagraafikud (1)
- Saiku (1)
- koolitus (1)
- tagasivaate (1)
- koosolek (1)
- dünaamilised keeled (1)
- staatilised keeled (1)
- FluentNHibernate (1)
- facebook (1)
- aastapäev (1)
- Rake (1)
- Oredev 2008 (1)
- toyota way (1)
- raiskamine (1)
- NDepend (1)
- podcasts (1)
- väle tarkvaraarendus (1)
- raido tonts (1)
- minimal marketable feature (1)
- kasutajalugu (1)
- twitter (1)
- Joomla! (1)
- MVC (1)
- andmebaas (1)
- versioonimine (1)
- diskussioon (1)
- regulaaravaldised (1)
- motiveerimine (1)
- mõõdikud (1)
- agileestonia (1)
- riistvara (1)
- koolitused (1)
- kujundus (1)
- kodulehed (1)
- veeb (1)
