Sunday, January 28, 2007

FAGBOK:"Pragmatic Unit Testing In Java with JUnit" av Andrew Hunt og David Thomas

Enhetstesting er et viktig verktøy for (Java)programmereren. Denne boken er en grei gjennomgang av enhetstesting og hvorfor det er en god ting.
Den viser hvordan man legger opp tester, hvilke basistester som finnes og hva som bør testes. Den viser hvordan tester bør organiseres og grupperes.

Boken gir en grundig gjennomgang av testrammeverket JUnit som jo er de facto standard for enhetstesting.

Et problem ved enhetstesting er jo å få avgrenset den delen av systemet som skal testes. Til det brukes mocking. Boken beskriver hvordan man kan lage en god mock og hvordan den kan tas inn i systemet som testes. Nøkkelordet er her naturligvis programmering mot interfacer.

Easy-Mock beskrives og boken viser hvordan det kan brukes til å "spille inn" ønskede responser som siden kan "avspilles" i en test.

Denne boken er en del av The Pracmatic Starter Kit. Det skal gi kunnskapene og teknikkene som skal til for å bli en Pragmatic Programmer. Jeg likte den godt. Den ga en god oppsummering og organisering av teknikker som man ofte bruker uten å ha gått skikkelig i dybden. Jeg har nok selv hatt en tendens til å dele enhetstester i to grupper:
1) Så triviell at det er sløsing av tid å skrive den.
2) Så kompleks at det er umulig å lage den.
Jeg håper at boken har gjort meg litt klokere.

Kan kjøpes på amazon.

Amazon sier:
Learn how to improve your Java coding skills using unit testing. Despite it's name, unit testing is really a coding technique, not a testing technique. Unit testing is done by programmers, for programmers. It's primarily for our benefit: we get improved confidence in our code, better ability to make deadlines, less time spent in the debugger, and less time beating on the code to make it work correctly. This book shows how to write tests, but more importantly, it goes where other books fear to tread and gives you concrete advice and examples of what to test--the common things that go wrong in all of our programs. Discover the tricky hiding places where bugs breed, and how to catch them using the freely available JUnit framework. It's easy to learn how to think of all the things in your code that are likely to break. We'll show you how with helpful mnemonics, summarized in a handy tip sheet (also available from our www.pragmaticprogrammer.com website) to help you remember all this stuff. With this book you will:
  • Write better code, and take less time to write it
  • Discover the tricky places where bugs breed
  • Learn how to think of all the things that could go wrong
  • Test individual pieces of code without having to include the whole project
  • Test effectively with the whole team
We'll also cover how to use Mock Objects for testing, how to write high quality test code, and how to use unit testing to improve your design skills. We'll show you frequent "gotchas"--along with the fixes--to save you time when problems come up. We'll show you how with helpful mnemonics, summarized in a handy tip sheet (also available from our www.pragmaticprogrammer.com website). But the best part is that you don't need a sweeping mandate to change your whole team or your whole company. You don't need to adopt Extreme Programming or Test-Driven Development, or change your development process in order to reap the proven benefits of unit testing. You can start unit testing, the pragmatic way, right away.

Terningkast 4

2 comments:

Unknown said...

En annen lur huskeregel rundt enhetstesting og Mocks er:

Ikke enhetstest andres APIer.

Fort fristende og lage mocks for entity beans, sockets osv. Du vil nok se at det gir ikke gode tester.

KEB

Hans Chr said...

Hvorfor ikke? Hvis man har problemer med at bugs dukker opp i andres APIer så kan det da være nyttig å ha en testsuite som kan kjøres f.eks. når man får ny versjon. Nye versjoner kan jo innføre nye feil. Og bringe tilbake gamle....