test essentials @mdevcon 2012

Post on 26-Jun-2015

151 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Test EssentialsDeveloper Perspective

Maxim Zaks@iceX33!

zaks@itemis.de

itemis AGMDSD!

OpenSource!Eclipse!Agile!Mobile

What‘s your deal?

iOS!Android!

WP7!WebDeveloper

Why should we test?

document your intentions!eat your own dog food!confidence by feedback!

safe refactoring!debugging

How can we test?

Test FirstRed, Green, Refactor!Goes perfect with Unit

Testing and Pair Programming

Test AfterWhite Box Testing!

It is better than nothing!!And sometimes even necessary:!

Regression Test!Integration Test!

Acceptance Test (UI/UX Test)

Test because you have a test phase

!

Just don‘t do that!!Code have to be written

with Test in mind!Black Box Test = QA

Test to explore

!

Example driven development!

Update safely to newer versions

What do we need for testing?

DSL to define the test!Runner to execute the test!

Reports to visualize results

Test Frameworks forms the DSL

xUnit Frameworks

Class is a test case!

Each public „test“ Method is a single test!

Test case may hold state, setup and tear down methods

Kent Beck

JUnit / OCUnithttp://www.junit.org/

What we should keep in mind using xUnit

Test Methods should be atomic, as we don‘t know the order they will be executed!

Test methods should be simple. No Conditions and no loops!

Method and class names are used for reporting!

Consider to use mocking and matching frameworks to make tests more concise

What‘s mocking all about?

Unit testing is all about isolation!

We wan‘t to test a boss who depend on his assistant!

We provide him a spy assistant and monitor how he interacts!

Dependency Injection is the concept that let us do isolation in non dynamic language

Mockitohttp://code.google.com/p/mockito/

And what was it with matching?

Matchers let us express expectations in a very concise way!

Matchers will generate a pretty report when expectation is not fulfilled!

Matching framework let us define our own matchers

Hamcrest Matcherhttp://code.google.com/p/hamcrest/

What‘s wrong with xUnit

xUnit Frameworks are the basis for Test Driven Development!

Perfect from technical perspective!

But hard to use for communication (remember: „document your intensions“)

Behavior Driven

DevelopmentIt‘s all about

Communication!don‘t test!

specify your code

Dan North

BDD Frameworks

There are two main flavors behind BDD Frameworks:!

Describe what you expect it should do (RSpec family)!

Given/When/Then (Cucumber family)

describe what you expect it should do

Internal DSL which let you write executable or pending specifications!

Good fit for Unit testing!

Comes with mocking and matching solutions inside!

Let you define nonlinear context creation

Jasmine Spechttp://pivotal.github.com/jasmine/

Kiwihttps://github.com/allending/Kiwi

Given/When/Then

Breaks down into:!

Feature!

User story!

Scenario!

Steps (Given/When/Then)

External DSL

Given/When/Then frameworks work perfectly with external DSLs!

These frameworks can evaluate Plain Text, Wiki Pages or Excel spread sheets and execute the steps

Scenario definition

JBehave Stepshttp://jbehave.org/

Let‘s sum up on Testing Frameworks

xUnit Frameworks (with handy helpers)!

Describe what you expect it should do!

Given/When/Then!

And as always there is one more thing, UX/UI Testing

UI Test Framework

Selenium!

KIF!

UIAutomation!

Zucchini Framework

UX / UI Testing

Launch the application in the runtime!

Select UI element!

Perform actions!

Wait for UI component to appear!

Assert visual or structural appearance

One small advice: If you can record and

replay a test case. Just Don‘t!

Zucchini Frameworkhttp://www.zucchiniframework.org/

Zucchini Framework

Zucchini Report

Zucchini Report

I hope I could convince you that Test is important

and exciting

Some concepts as Military Metaphors

Leave no men behind

100% code coverage

Protect your rear(back)

Test protects you from butterfly effect

Sniper vs. Cluster Bomb

Unit vs. Integration Test

Q&A

Thank you!!!We are consulting :)

top related