javacro'14 - taking testing to its limits – aleš justin

13
Taking testing to its limits Aleš Justin, Red Hat http://javacro.org/ http://javacro.org/

Category:

Technology


0 download

DESCRIPTION

Google App Engine (GAE) is a popular PaaS offering. While its scalable and reliable environment is hidden behind custom API, this makes GAE apps hard to port over to other non-GAE environments. What if one could implement such similar environment? And you could simply move your GAE application’s .war file to this new environment and it would just work? But the question we need to ask ourselves first, how do we know that such alternative environment works in the first place? Java EE has had its Technology Compatibility Kit (TCK) from day one. This time we’ll introduce you to GAE TCK and show you how to run it against an alternative JBoss CapeDwarf GAE API implementation. The GAE TCK is built completely on open source software, and it is a collaboration between Red Hat and Google on making the GAE API and its implementations better. The goal is not just to run the tests, but also engage users and developers with a bunch of exciting extensions that range from cool html reporting to bytecode manipulation of external tests. If you care about GAE, testing, Arquillian, ShrinkWrap, this is the session not to miss!

TRANSCRIPT

Page 1: JavaCro'14 - Taking testing to its limits – Aleš Justin

Taking testing to its limits

Aleš Justin, Red Hat

http://javacro.org/http://javacro.org/

Page 2: JavaCro'14 - Taking testing to its limits – Aleš Justin

Agenda

• Testing?

• GAE TCK

• JUnit, ShrinkWrap, Arquillian

• Code coverage, reports, CI, …

Page 3: JavaCro'14 - Taking testing to its limits – Aleš Justin

Testing?

• Do you test?

• Never enough time

• Hard to test

• “If there is no test, it doesn’t work”

• ~50% test code

• New frameworks to actually test

Page 4: JavaCro'14 - Taking testing to its limits – Aleš Justin

GAE TCK

• GAE?

• Google App Engine

• JBoss CapeDwarf

• Open source GAE API impl

• Does it work?

• Voila TCK - www.appengine-tck.org

Page 5: JavaCro'14 - Taking testing to its limits – Aleš Justin

JUnit

• Simple as @Test

• Together with Maven Surefire plugin

• Extendable

• @RunWith

• Assert, Assume, @Ignore, …

Page 6: JavaCro'14 - Taking testing to its limits – Aleš Justin

ShrinkWrap

• Binaries abstraction

• No more Ant or Maven assemblies

• Nice and simple, yet powerful API to create *programmatic* deployments

Page 7: JavaCro'14 - Taking testing to its limits – Aleš Justin

Arquillian

• Environment / runtime abstraction

• Proper and easy in-container testing

• “Container” imp

• A ton of existing container impls

• Invocation protocol

• Servlet, JMX, @RunAsClient, etc

Page 8: JavaCro'14 - Taking testing to its limits – Aleš Justin

Arquillian

• Transparent container usage

• Exactly one container impl on classpath

• JUnit, TestNG support

• Extendable

• Drone, Graphene, etc

Page 9: JavaCro'14 - Taking testing to its limits – Aleš Justin

TCK Features

• NOTE — It’s all *generic*

• Not tied to GAE API or TCK

• TODO of moving this into separate project

Page 10: JavaCro'14 - Taking testing to its limits – Aleš Justin

Code coverage

• Display API usage

• Bytecode check

• Fast

• No runtime involved

• Link against source code

• JSP check

Page 11: JavaCro'14 - Taking testing to its limits – Aleš Justin

Reports

• Graphical results presentation

• Pie and XY chart

• Drill-down for more info

• Pushed from TeamCity CI

• Custom push TeamCity plugin

• Endpoints stubs

Page 12: JavaCro'14 - Taking testing to its limits – Aleš Justin

Utils

• Multisuite

• One big deployment

• Environment info and extension

• “Events”

• @WithinNamespace, @UserIsLoggedIn

• Transformers

• Turn plain JUnit test into ARQ test

Page 13: JavaCro'14 - Taking testing to its limits – Aleš Justin

Q&A

[email protected] / @alesj

• www.capedwarf.org

• www.appengine-tck.org

• https://github.com/GoogleCloudPlatform/appengine-tck