Použití JUnit a Mock frameworků pro testování Java EE architektury

Post on 06-Jul-2015

413 views 2 download

description

Použití JUnit a Mock frameworků pro testování Java EE architektury - obhajoba bakalářské práce

transcript

Pouzitı JUnit a Mock frameworkupro testovanı Java EE architektury

predobhajoba bakalarske prace

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D.

Ostravska univerzita

7. 6. 2008

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 1 / 32

Obsah

1 Testovanı softwaru, typy testu

1 Zpusoby testovanı Java EE architektury

1 JUnit testovanı

1 Mock testovanı

1 Porovnanı JUnit a Mock testovanı

1 Testovanı Java EE architektury

1 Nastroje

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 2 / 32

Testovanı softwaru, typy testu

Testovanı softwaruproces pro zajistenı kvality softwaruzpusob, jak v systemu odhalit chyby

Typy testujednotkove testyintegracnı testysystemove testy

end-to-end testyvykonnostnı testyzatezove testybezpecnostnı testytesty pouzitelnosti

akceptacnı testy

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 3 / 32

Jednotkove testovanı

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 4 / 32

Integracnı testovanı

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 5 / 32

Systemove testovanı

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 6 / 32

Problem pri testovanı Java EE architektury

ProblemZavislost kodu aplikace na objektech kontejneru neboaplikacnıho serveru (Web, EJB, JNDI).

Zavislost servletu na objektech kontejnerupublic class MyServlet extends HttpServlet {

public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {

...}

}

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 7 / 32

Zpusoby testovanı Java EE architektury

testovanı v izolaci (JUnit, Mock Objects)testovanı uvnitr kontejneru (Cactus)testovanı vne kontejneru (ServletUnit)

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 8 / 32

JUnit testovanı

Princip JUnitizolovanı testovane komponenty (trıdy)overenı pomocı tvrzenı (assertion)

TDD – Test Driven DevelopmentPrincip test first

1 Pridanı testu2 Spustenı testu (novy test neprojde)3 Implementace produktivnıho kodu4 Spustenı testu (novy test projde)5 Refaktorovanı kodu

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 9 / 32

JUnit 3.8

public class MyTest extends TestCase {

protected void setUp() {...

}

protected void tearDown() {...

}

public void testDoSomething() {...

}}

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 10 / 32

JUnit 4.x@RunWith(JMock.class)public class MyTest {

@Beforepublic void initialize() {}

@Afterpublic void cleanAllMess() {}

@Testpublic void doSomething() {

...}

}autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 11 / 32

Zavislost objektu

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 12 / 32

Mock testovanı

Double objektystub: natvrdo napsany kod, prazdna implementace,vracı defaultnı hodnoty (0, false, null)fake: „zkratkovita“, zjednodusena implementacemock: implementuje rozhranı nahrazovaneho objektu,definuje chovanı objektu

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 13 / 32

Pouzitı Mock objektu (jMock)

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 14 / 32

Porovnanı JUnit a Mock testovanıTest Driven Development (TDD)

verifikace stavu (hodnoty)pouzıvanı realnych objektuvyvoj smerem middle-outkomplexnı znovupouzitelne prıpravkyvytvarenı metod vracejıcıch hodnotu

Behavior Driven Development (BDD)verifikace chovanıpouzıvanı Mock objektuvyvoj smerem outside-innepouzıvanı prıpravkuvytvarenı metod pracujıcıch nad objekty

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 15 / 32

Rızene objekty

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 16 / 32

Simulace zivotnıho cyklu EJB

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 17 / 32

Navrhovy vzor Remote Facade

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 18 / 32

Java Naming and Directory Interface

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 19 / 32

Nahrazenı JNDI stromu

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 20 / 32

Prekrytı kodu zavisleho na JNDI I.

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 21 / 32

Prekrytı kodu zavisleho na JNDI II.

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 22 / 32

Servlet – zpracovanı pozadavku I.

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 23 / 32

Servlet – zpracovanı pozadavku II.

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 24 / 32

Navrhovy vzor Front Controller

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 25 / 32

Nastroje

Buildovacı a testovacı nastrojeIDE: Eclipse, NetBeans, IntelliJ IDEA, JBuilderTestovacı framework: JUnit, TestNG, jMock, EasyMockBuildovacı nastroje: Ant, Maven

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 26 / 32

Eclipse

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 27 / 32

JUnit (Eclipse)

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 28 / 32

JUnit (konzole)

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 29 / 32

Ant (Eclipse)

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 30 / 32

Ant (konzole)

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 31 / 32

ZdrojeKnihy

J. B. Rainsberger. JUnit Recipes. Manning Publications.2004. ISBN 1932394230.Lasse Koskela. Test Driven: TDD and Acceptance TDDfor Java Developers. Manning Publications. 2007. ISBN1932394850.Kent Beck. Programovanı rızene testy. GradaPublishing, a.s. 2004. ISBN 80-247-0901-5.Bill Burke, Richard Monson-Haefel. EnterpriseJavaBeans 3.0 (5th Edition). O’Reilly Media, Inc. 2006.ISBN 059600978X.Martin Fowler. Patterns of Enterprise ApplicationArchitecture. Addison-Wesley Professional. 2002. ISBN0321127420.

autor: Vıt Kotacka, ved.: RNDr. Jaroslav Prochazka, Ph.D. (OsU)Pouzitı JUnit a Mock frameworku pro testovanı Java EE architektury7. 6. 2008 32 / 32