Test-Drevet Utvikling Bowling med
Hvem er vi •Trond Pedersen –Seniorkonsulent, ObjectWare –Medlem av styret i extremeprogramming.no •Johannes Brodwall –Softwarearkitekt for BBS’s fornyelsesprogram –Medlem av styret extremeprogramming.no –Organisator av
Extreme Programming & TDD •Foredraget er en introduksjon til TDD •TDD er en teknikk i XP •TDD står også utmerket på egen hånd eller som tillegg til din favorittmetodikk •TDD: –Write a test, make it pass
JUnit & Eclipse •JUnit – testrammeverk for Java •NUnit – testrammeverk for.NET •Eclipse har utmerket støtte for JUnit, men det har også for eksempel IntelliJ •TDD: –Write a test, make it pass!
PRAKTISK DEMO
Agile software development •Effektive teknikker til daglig bruk: –Test-driven development –Pair programming –Continuous Integration –Stand-up meetings
DUnit – TDD i Delphi unit Project1TestCases; interface uses TestFrameWork; type TTestCaseFirst = class(TTestCase) published procedure TestFirst; end; implementation procedure TTestCaseFirst.TestFirst; begin Check(1 + 1 = 2, 'Catastrophic arithmetic failure!'); end; initialization TestFramework.RegisterTest(TTestCaseFi rst.Suite); end.
Demo: Simpel GUI-test
Demo: Simpel GUI-test private JFrameOperator frame; private JLabelOperator resultLabel; public void testNoProducts() { frame = new JFrameOperator( new NameComponentChooser("CheckOutRegister")); resultLabel = new JLabelOperator( frame, new NameComponentChooser("resultLabel")); assertEquals("0.00", resultLabel.getText()); }
Advanced: Testing GUI with DAO mocks
Å teste GUI med Mock backend public void testAddProducts() { daoMock.getByName("stockings"); daoControl.setReturnValue( new ProductDescription("stockings", 100)); daoControl.replay(); productNameField.enterText("stockings"); enterButton.push(); assertEquals("100.00", resultLabel.getText()); daoControl.verify(); } Kodeeksempel
Oppsummering •Hva er utfordringene? –Hva taper du? –Hva er vanskelig med TDD? •Hva vinner du? –Endringer –Innfallsvinkel –Design –Trygghet •Veien videre Skriv testen først!
Spørsmål?
Mer info •Original Bowling Artikkel: – –Robert Martins bok ”Agile Software Development” •Ytterligere TDD/Bowling Artikler (i C#): – •Bøker –Test-Driven Development: By Example (Kent Beck) –Test-Driven Development: A Practical Guide (Dave Astels) •eXtremeProgramming.no har kildekoden til eksempelet, og du kan spørre oss spørsmål på forumet vårteXtremeProgramming.no • •