Workshop: Test-first approach Pietu Pohjalainen
Testaus perinteisesti Tarkoituksena löytää virheitä ohjelmasta mutta mikä on virhe? Sijoittuu tavallisesti ohjelmistoprojektin loppupäähän Yleisesti tunnustetusti tylsää puuhaa
Test-first approach Tarkoituksena käyttää automaattisia yksikkötestejä määrittelyvälineenä Koska yksikkötestit ovat toteutettu ohjelmakoodina, voidaan ne myös suorittaa Näin nähdään toteutettavan ohjelman valmiusaste määrittelyynsä nähden Käytännössä: test a bit – code a bit
Työkaluja Javalle Käännösprosessin automatisointiin ant Yksikkötestien määrittelemiseen JUnit Artikkeli: ’JUnit Test Infected: Programmers Love Writing Tests’
Käännösprosessi ANTilla Tiedosto build.xml määrittelee käännöskohteita ja niiden välisiä riippuvuuksia esim. compile, test, javadoc jne. Komentoriviltä (tai IDEstä) käynnistetään prosessi komennolla % ant test Nyt suoritetaan test-kohteessa määritellyt toiminnnot
Yksikkötestin rakenne package tests; import junit.framework.*; public class UnitTest extends TestCase { protected void setUp() { } public void testMultiplication() { src.MainClass main = new src.MainClass(); testvalue = Integer.MAX_VALUE; assertTrue( main.multiplyByTwo(testvalue) == testvalue*2 ); } protected void tearDown() { }
JUnitin käyttäminen Kehyksen mukana tulee graafinen työkalu testien ajamiseen Kun JUnit.jar löytyy CLASSPATHista, ajetaan % java junit.swingui.Testrunner Voidaan suorittaa myös komentoriviltä
Työkaluja muille kielille Useimmille muille kielille löytyy jokin xUnit Käännösten automatisointiin esim. make Näille työkaluille ei kuitenkaan ole saatavilla ryhmän puolesta yhtä kattavaa ohjausta Automatisointi kannattaa kuitenkin, käytetystä kielestä ja ympäristöstä riippumatta