Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WebDriver that Won't Drive You Crazy
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Jim Holmes
April 30, 2018
Programming
170
0
Share
WebDriver that Won't Drive You Crazy
Workshop for StarEast and Romainian Testing Conference
Jim Holmes
April 30, 2018
More Decks by Jim Holmes
See All by Jim Holmes
Adapting to Change in Software Delivery
jimholmes
0
90
Public_Speaking.pdf
jimholmes
0
130
Trusted System Boundaries
jimholmes
0
110
What's Worse? Zombies or Brittle UI Tests?
jimholmes
0
130
Odd Parallels Between Weightlifting and Software Delivery
jimholmes
0
65
Is Quality The Bottleneck?
jimholmes
0
140
Don't Fear Leadership
jimholmes
0
110
Intro To TDD
jimholmes
1
94
Honor Flight #20 (Bay Area) Recap
jimholmes
0
140
Other Decks in Programming
See All in Programming
年間50登壇、単著出版、雑誌寄稿、Podcast出演、YouTube、CM、カンファレンス主催……全部やってみたので面白さ等を比較してみよう / I’ve tried them all, so let’s compare how interesting they are.
nrslib
4
690
Geminiをパートナーに神社DXシステムを個人開発した話(いなめぐDX 開発振り返り)
fujiba
0
140
SkillがSkillを生む:QA観点出しを自動化した
sontixyou
5
2.5k
Rethinking API Platform Filters
vinceamstoutz
0
7.7k
今からFlash開発できるわけないじゃん、ムリムリ! (※ムリじゃなかった!?)
arkw
0
180
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
120
存在論的プログラミング: 時間と存在を記述する
koriym
5
770
Coding at the Speed of Thought: The New Era of Symfony Docker
dunglas
0
4.5k
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
520
Smarter Angular mit Transformers.js & Prompt API
christianliebel
PRO
1
120
10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ごとリプレイスした話
takuya_houshima
0
630
Going Multiplatform with Your Android App (Android Makers 2026)
zsmb
1
280
Featured
See All Featured
My Coaching Mixtape
mlcsv
0
92
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
120
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Evolving SEO for Evolving Search Engines
ryanjones
0
170
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
280
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
200
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
230
Marketing to machines
jonoalderson
1
5.1k
Done Done
chrislema
186
16k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
250
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
Transcript
WebDriver That Won’t Drive You Crazy
Get Latest Slides At http://speakerdeck.com/ jimholmes
Jim Holmes
[email protected]
github.com/jimholmes @aJimHolmes
Logistics
Time Exercises Breaks Backlog
Disclaimers
I’m not an expert
I’m “seasoned”
My workshops are collaborative
Stuff WILL Break
Goals
There Are No “Best Practices”
Know the fundamentals
Test the right things
Get the right coverage
Write good code
You
What are Two Things you hope to learn?
Opening Exercises
What does “Quality” mean to you?
If Testing were a sport, what sport would it be?
Thanks to Karen Greaves and Samantha Laing A Coach’s Guide
to Agile Testing https://leanpub.com/AgileTesting
What’s Our Job?
Who guarantees “quality” ??
Risk
Value
Risk and Value guide all our tests. ESPECIALLY WebDriver tests
Types of Testing
“test” versus “check”
Any failure is a starting point
Unit Tests
40 hours TIMES $20 per hour EQUALS $800
Integration (or Service) Tests
Using Postman When I call the create item web service
with a new item service template Then the item shows up in the database
User Interface (or end-to-end)
(NOT “just” testing of JavaScript in browser)
Using any of our supported browsers And I don’t have
anything in my cart When I add bacon, tires, and a frog to my cart Then I will see those items in my cart
Exploratory Testing
Using SQL Injection, malformed data, and oversized data I’m going
to explore the search product screens For 45 minutes To see what interesting (and scary!) stuff I can find
https://martinfowler.com/articles/practical-test-pyramid.html
https://twitter.com/noahsussman/status/836612175707930625
Box of rocks
There are no ‘best practices’ There is no ‘one testing
ring to rule them all’
Security Accessibility Scalability Performance Usability Compliance Mom
Demo What it looks like running together
Working With Risk
Setup
Repository https://github.com/ jimholmes/ SaneWebDriver-CSharp SaneWebDriver-Java
None
First run in Eclipse
First run in Visual Studio
Overview
Components WebDriver APIs Drivers Frameworks Libraries Tools
Browser
Browser WebDriver
Browser WebDriver
IWebDriver browser = new FirefoxDriver(); browser.Navigate().GoToUrl(“SOMEPLACE”);
WebDriver Bindings Support Classes .NET Java Ruby Python JavaScript Perl
blah blah blah blah WebDriverWait ExpectedConditions etc. +
Host System Browser WebDriver Bindings + support classes
Host System Browser WebDriver Bindings + support classes Driver ChromeDriver,
eg
Host System Browser WebDriver Bindings + support classes Driver ChromeDriver,
eg
Host System Browser WebDriver Bindings + support classes Driver ChromeDriver,
eg
Host System Browser WebDriver Bindings + support classes Driver ChromeDriver,
eg
Host System Browser WebDriver Bindings + support classes Driver ChromeDriver,
eg
Host System Browser WebDriver
Host System Browser WebDriver Driver
Host System Browser WebDriver Driver Remote WebDriver
Host System Browser WebDriver Driver Remote WebDriver
Host System Browser WebDriver Driver Remote WebDriver
Host System Browser WebDriver Driver Remote WebDriver
Host System Browser WebDriver Driver Remote WebDriver
Host System Browser WebDriver Driver Remote WebDriver
Host System Browser WebDriver Driver Remote WebDriver
Host System WebDriver Selenium Server or Grid Host System Browser
Driver Remote WebDriver
Host System Browser Driver Remote WebDriver Test Framework WebDriver Selenium
Server or Grid
Assert.IsNotNullOrEmpty( grid.FindElement( By.CssSelector(SOME_ELEMENT)).Text);
Test Framework Browser WebDriver Driver
Language Framework Test Framework Browser WebDriver Driver
GIVEN I am logged on as a Salesperson WHEN I
create a new lead THEN that contact appears only in my leads
Maintainability
Your Test Suite should NOT BE
“flaky”
Require lots of time to change or fix
Your Test Suite SHOULD BE
Valuable
Reliable
Trustworthy
Easy to Change
How to get there
Team With the Developers
Small Steps
Think Before You Code
The best code you write is that which you don’t
Refactor
Code can be like poetry
Think Plan Fail Learn Fail Less
WebDriver 101
The Basics
Test Layout: Arrange Act Assert
Test One Thing
Locators
IDs CSS Selectors XPath
Async
What is Async?
How do we avoid it driving us insane?
Write the First Test
Is the Grid there?
Refactor
Setup / Teardown
Refactor Again
Page Objects Know the page Not the test
Clean Tests Know the test Not the page
SRP Test/do one thing (and do it well)
DRY/moist Don’t Repeat Yourself (except where it makes sense)
More Advanced Concepts
Understand Coverage
What Tests Do We Need?
Walkthrough: Unit and Integration
Backing APIs
Use Helper Libraries
Team With the Developers
Test Data Setup
Testable Systems
Own the System Code? USE THAT POWER!
Hack the UI
Locators Custom IDs
Async flags
Better Tests
Hack the System
Feature Toggles Mock Services
Better Tests
Now What?
Factories Configuration Lifecycle Management
https://thefriendlytester.co.uk/2014/02/webdriver-factory.html
CI/CD
Cloud
Discussion: Parameterizing for Different Envs
Parallel
None
Parallelization Solves Everything!
Parallelization Solves Everything!
None
Parallelization Solves Everything!
Fix Your Dang System!
bit.ly/3HoursTo3Mins
Discussion: Test Stability in Parallel Execution
Takeaways
None
Automate High-Value, High Risk
Avoid Overlapping Coverage
Test Code is Production Code
Manage Your Data
Build Out APIs
Avoid End-To-End
Parallelization as LAST RESORT
bit.ly/leadershipjourney
A Couple Closing Remarks
0) No SharePoint
B) Hug your loved ones RIGHT NOW
THANK YOU