100 likes | 236 Views
Test-Driven Development. By: Harri Korpi. Mikä?. Yksikkötestauksen yhdistäminen koodaus käytäntöön Testitapaukset suunnitellaan ja kirjoitetaan ennen koodia Idea: Koko ajan vähän testiä & vähän koodia (& vähän siivoamista) Työkalu: Junit & Ant
E N D
Test-Driven Development By: Harri Korpi
Mikä? • Yksikkötestauksen yhdistäminen koodaus käytäntöön • Testitapaukset suunnitellaan ja kirjoitetaan ennen koodia • Idea: Koko ajan vähän testiä & vähän koodia (& vähän siivoamista) • Työkalu: Junit & Ant • Luokan testitapaukset ajetaan aina käännöksen yhteydessä.
Tavoite • Ongelmakentän sisäistäminen ennen koodauksen aloittamista • Kun koodi menee rikki niin se huomataan • Vapauttaa etsimään uusia ratkaisuja • Vanhat testit kertovat rikottiinko koodi • Tiedetään vielä mitä muutettiin viimeksi kun koodi hajosi • Lopputuloksena toimivampaa ja siistimpää koodia • Työskentely tehokkaampaa: • Vähemmän taaksepäin suuntautuvaa korjaamista
Menetelmät • Testit koodataan toimimaan • Testit koodin toiminnallisena speksinä • Suunnittellaan helposti testattavia luokkia: pieniä&itsenäisiä (OO) • Ei liian isoja testicaseja • Jos vie liian kauan ajaa niin jää helposti ajamatta.
Askeleet 1 1. Suunnittele testitapaukset • huomioi ongelmakohdat. 2. Kirjoita testitapaukset. 3. Käännä • Testit epäonnistuvat alussa 4. Koodaa testit toimimaan
Askeleet 2 5. Refactoroi (=siivoa koodi) • Testitapaukset tukevat 6. Valmis • siirry seuraavaan tehtävään alkaen kohdasta 1. 7. Aja kaikki testitapaukset (10min) Kaikki OK?
Rajoitteet • EI Tietokanta- ja verkkoyhteyksiä • Dummy-luokat • Demonstroivat myös verkon katoamista • Kirjoitetaan vain kerran hyöty säilyy • Käyttöliittymät
Motivaatio • "TDD is more than worth it. You can produce new code that is nearly defect-free. Your designs are simpler, accommodating change more easily. You can often finish new code faster with TDD.” • ”And you can take more risks and try more experiments with the code, to find the best design or squeeze out the best performance. This is because the whole time you work, your automated tests prove that the code functions properly.” • Lähde: http://www.adaptionsoft.com/tdd_why.html
Sovellus tässä projektissa • Timon projekti: JUnit & ANT • Tapauskohtaisesti, omaa harkintaa (etenkin Dummy-luokkien kanssa) • Ei liian raskasta!!! • Tärkeintä testien suunnittelu yhdessä luokkien suunnittelun kanssa • Jokainen ainakin kokeilee ensi iteraatiossa: Mahd. palaute kysely =) • Kolmas iteraatio 2:sen perusteella
Sovellus tässä projektissa • Järjestelmän sisäiset komponentit • Entityt • SessionBeanit • AdminToolin sisällä • Importtaus • ..