Arquillian: Helping web developers and QA get along

1,285 views

Published on

Modern development practices include testing our Web applications as a fundamental part of the application development lifecycle. Web UIs though can be particularly difficult to test with basic tools. Arquillian is an award-winning integration testing framework and Selenium WebDriver is an outstanding tool for UI test automation. Together they offer a base for high-quality tests.

This session looks to the Arquillian Universe for help. Equipped with the Arquillian extensions - Drone, Graphene and Warp - we will show you tests that cover both client-side (REST) and server-rendered (JSF) web applications. With a single test it is now possible to assert state (both in the server and on the client) at arbitrary points within the request lifecycle!

We will look at current best practices for how to achieve a rapid turnaround when doing test development by minimizing the effort required to write tests, and thereby increase productivity and thus making these tests future-proof. Additionally we will show tools and techniques that provide a separation of concerns between test authors (developers) and test automators (QA). How to execute a single test in both arbitrary server containers as well as arbitrary client browsers. And how it can enable us to run test suites in constrained environments like cloud-based continuous integration providers.

Published in: Engineering, Technology, Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,285
On SlideShare
0
From Embeds
0
Number of Embeds
131
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Arquillian: Helping web developers and QA get along

  1. 1. ARQUILLIAN Helping to get Web Developers and QA along Lukáš Fryč
  2. 2. Real Life Testing
  3. 3. Testing = ?
  4. 4. Testing = hard Testing = boring Testing = slow Testing = expensive
  5. 5. Automation for a Rescue! Developers = test authoring QE = test execution
  6. 6. easy fun fast $0 How?
  7. 7. Testing = Learning Testing = Understanding Testing = Debugging Testing = Documentation Testing = Collaboration
  8. 8. Testing = Developing
  9. 9. “The purpose of testing is to enable change. Verifying correctness is just a nice side effect.” ~Jeremy Norris “The purpose of testing is to enable change. Verifying correctness is just a nice side effect.” ~Jeremy Norris
  10. 10. Mocks.
  11. 11. Mocks. Really?
  12. 12. No Mocks Movement Real Tests
  13. 13. Test Harness cover 85 of your needs%
  14. 14. Arquillian Platform
  15. 15. Core Test runners Junit / TestNG / Spock
  16. 16. Containers Portability WildFly / GlassFish / WAS / WLS
  17. 17. Extensions Reusing existing tools Hard-workers
  18. 18. Run Modes...
  19. 19. Run as Client
  20. 20. Black Box
  21. 21. @RunWith(Arquillian.class) @RunAsClient public class BlackBoxTest { @Deployment(testable = false) public static Archive<?> deployment() {} }
  22. 22. In-container
  23. 23. White Box
  24. 24. @RunWith(Arquillian.class) public class WhiteBoxTest { @Deployment(testable = true) public static Archive<?> deployment() {} }
  25. 25. Warp mode = hybrid
  26. 26. Gray Box
  27. 27. @RunWith(Arquillian.class) @WarpTest @RunAsClient public class WhiteBoxTest { @Deployment(testable = true) public static Archive<?> deployment() {} }
  28. 28. In-Container White box Run as Client Black box Warp Gray box
  29. 29. What is an app under a test?
  30. 30. ShrinkWrap
  31. 31. Archives API jar, war, ear Micro-deployments Descriptors beans.xml, web.xml, ... Resolvers Maven dependencies
  32. 32. Testing = hard Testing = boring Testing = slow Testing = expensive
  33. 33. Rapid Dev Turnaround
  34. 34. 1. IDE incremental compilation 2. Save deployment time micro-deployments JRebel Extension
  35. 35. 3. Remote Server Startup time 4. Reuse Browser Session Graphene Extension
  36. 36. Quality Assurance?
  37. 37. 1. Extend the test suite Acceptance tests Regression testing 2. Jenkins Run the tests on one-click
  38. 38. 3. Test manually Exploratory testing User experience testing
  39. 39. Continuous Integration?
  40. 40. 1. Small Footprint WildFly Travis CI, EC2 Micro, OpenShift Small 2. Headless Browsers WebDriver + PhantomJS
  41. 41. 3. Caching Deployments, Dependencies 4. Smoke Tests JUnit Categories TestNG Groups
  42. 42. Testing = easy Testing = fun Testing = fast Testing = $0
  43. 43. Real Tests increase certainity builds confidence increase robustness
  44. 44. Arquillian
  45. 45. I must to know more...
  46. 46. http://arquillian.org
  47. 47. http://bit.ly/arq-users
  48. 48. Getting Involved
  49. 49. http://github.com/arquillian
  50. 50. http://bit.ly/arq-devs
  51. 51. #arquillian @ irc.freenode.net
  52. 52. #Arquillian
  53. 53. Alex Soto & Bartosz Majsak Testing Polyglot Persistence Done Right Wiktor Zolnovski Page Object Pattern - it's change my life! Where to go?
  54. 54. Enjoy the Testing!
  55. 55. @lfryc Questions for Ikes? http://lukas.fryc.eu
  56. 56. Happy bug killing...

×