Automated Testing: Beyond the Basics

Automated Testing: Beyond the Basics

You've been through some initial training or bootstrapping. Now you're three to six months down the road and you're finding a lot of time is being spent chasing intermittent test failures. You're spending a lot of time maintaining your codebase. You're spending a lot of time dealing with frustration and trust in the automated tests. What's you're not doing is adding a lot of value around new feature work.

Sound familiar? It's a pattern that's common across nearly every team that is new to building significant automation suites. Jim Holmes helps you find a few approaches that may save your sanity—all based on years of experience and hard knocks.

This isn't a WebDriver 101 session; we won't be covering basics like waits, find logic, or basic page objects. Instead, we'll dive in to solving problems using software craftsmanship principles, custom-designed APIs, and approaches like Selenium Grid to help you scale out your test suites via parallel execution. You'll leave the session with practical tips to apply to your own testing.

Fd80f9c58b06270d42356dd77a32defa?s=128

Jim Holmes

May 06, 2016
Tweet

Transcript

  1. Automated Testing Beyond The Basics

  2. Slides: SpeakerDeck.com/JimHolmes

  3. A Story of Woe

  4. finf

  5. What’s YOUR Current State?

  6. Slow

  7. Brittle

  8. High Maintenance Cost

  9. WTFITWBWH

  10. What The Fuck is Tested By What Where How HECK

  11. Trust Deficit

  12. Automation’s Goals?

  13. None
  14. None
  15. Teams Test!

  16. TRUST

  17. Let’s Talk Fixes

  18. First and Foremost: Be Thoughtful

  19. Good Coverage

  20. Reduce Overlap

  21. None
  22. Fix: TALK!

  23. Understand Data Flows

  24. None
  25. Fix: MORE TALK!

  26. Don’t Test Stupid Stuff

  27. Don’t Test Low Value Less Optimal Stuff That Someone’s Already

    Tested Or Is a Dependency You Don’t Want
  28. Gmail 3rd Party Controls CAPCHA SharePoint

  29. Test Code is Production Code!

  30. Software Craftsmanship

  31. DRY Don’t Repeat Yourself

  32. SRP Single Responsibility Principle

  33. Cucumber => Step Definitions

  34. CopyProductCatalogItem EditProductCatalogItem DeleteProductCatalogItem TransmitBookingOrder HandleRejectedBookingOrder WashJimsCar FixJimsCar ReplaceJimsCarEngineWithRocket

  35. CopyProductCatalogItem GetAProductItem EditProductCatalogItem GetAProductItem DeleteProductCatalogItem GetAProductItem

  36. Domain Objects

  37. ProductCatalogItem BookingOrder JimsCar CarEngine RocketAdapter CasketForJim

  38. ProductCatalogItem GetAProductItem

  39. LogUserOn FindUserName UserName.SendText(“Jim”) CheckUserIsLoggedOn FindUserName UserName==“Jim” CheckInvalidUserCan’tLogOn FindUserName UserName.SendText(“B0b”)

  40. Page Objects

  41. LogonPage UserName

  42. LogUserOn LogonPage.UserName=“Jim” CheckUserIsLoggedOn “Jim” == LogonPage.UserName CheckInvalidUserCan’tLogOn LogonPage.UserName=“B0b”

  43. Test Data

  44. Don’t Use UI Tests to Set up or Configure

  45. Baseline Datasets

  46. Store Datasets in Version Control!

  47. Custom APIs

  48. Help tests be granular, random, and independent

  49. Support APIs leverage existing system APIs

  50. Create Retrieve Update Delete

  51. Setup and Teardown

  52. Oracles

  53. FSAPITBAA

  54. Freaking Stupid Assed Pain In The Butt Async Actions

  55. SharePoint

  56. None
  57. Test in Isolation Minimize End-to- End

  58. None
  59. Speed

  60. None
  61. Parallelization Solves Everything!

  62. None
  63. None
  64. None
  65. Fix Your Dang System!

  66. bit.ly/3HoursTo3Mins

  67. Takeaways:

  68. None
  69. Automate High-Value, High Risk

  70. Avoid Overlapping Coverage

  71. Test Code is Production Code

  72. Manage Your Data

  73. Build Out APIs

  74. Avoid End-To- End

  75. Parallelization as LAST RESORT

  76. Slides: SpeakerDeck.com/ JimHolmes

  77. JHolmes@PillarTechnology.com FrazzledDad.com @aJimHolmes

  78. bit.ly/leadershipjourney

  79. THANK YOU

  80. 0) No SharePoint

  81. B) Hug your loved ones RIGHT NOW