SlideShare a Scribd company logo
ui testing with ghost inspector
a capstone for your testing pyramid
jay luker | @lbjay
senior software engineer, harvard dce
about.me
“self-taught”
full-stack
not a testing "expert"
free, open-source
small teams, smallish orgs
lazy
likes: python, rowing, jaywalking, mondays
dislikes: tea, endless scroll, mis-implemented http status codes
this is not that other talk
● pytest
● pytest plugins
● ghost inspector
● pytest-ghostinspector
https://www.youtube.com/watch?v=qs1mbTg2kds
let's talk about...
why we do automated testing
the ideal "testing pyramid"
ghost inspector
how we're using ghost inspector at dce
why write automated tests?
● continuous feedback throughout the development cycle
● did this change break something?
● catch bugs earlier and faster
● help inform the writing of code and application architecture
● help specify code and application behavior
types of automated tests
● unit
● integration
● end-to-end
test scope continuum
small (unit) large (e2e)
fast
cheap
reliable
isolated
low test:value ratio
run frequently
verifies code behavior
owned by developers
created early
short feedback loop
"are we building the system right?"
👈
👈
👈
¯_(ツ)_/¯
👉
👈
¯_(ツ)_/¯
👉
👈
👈
¯_(ツ)_/¯
slow
expensive
flakey
integrated
high test:value ratio
run infrequently
verifies real world behavior
owned by anyone*
created late
long feedback loop
"are we building the right system?"
the testing pyramid
source: http://googletesting.blogspot.co.uk/2015/04/just-say-no-to-more-end-to-end-tests.html
pyramid vs ice cream cone
source: https://watirmelon.com/2012/01/31/introducing-the-software-testing-ice-cream-cone/
in summary...
● write tests
● not too much end-to-end / ui
● mostly unit
ghost inspector
● cloud-based ui testing service
● record tests
● manually build/edit tests
● execute tests
● schedule tests
● view & monitor test results
● receive notification of test outcomes
who the what now?
● it's like a browser*...
● in the cloud…
● that accesses your site…
● and does stuff…
● and verifies everything worked right…
● and then lets you know if it didn't
* more specifically, a headless browser under the control of a webdriver
great things about ghost inspector
● free / cheap
● easy to get started
● high initial effort:value ratio
● well-written documentation
● intuitive interface
● api for running tests
● nothing to install locally
● tests allow custom variables & re-use
not so great things about ghost inspector
● slow, particularly on failures
● missing concurrency
● no test versioning
● documentation can be shallow
● test recorder tries hard but has limitations
● tests run remotely; firewalls / access control require hoop-jumping
● support is currently via e-mail only
things you will need
● a website or web application to test
● chrome (optional)
● knowledge of html and javascript
● knowledge of how to use chrome or firefox developer tools
● knowledge of how to interact with restful apis (optional)
● $$ for > free pricing tier (optional)
free tier details
● 100 tests / month
● 3 tests * daily schedule: boom
● all the bells & whistles
● link a (free) runscope account* and
get 500 tests / month
* https://www.runscope.com/ghostinspector
let's do this thing
1. create a ghost inspector account
2. install the chrome extension
3. login through the extension
4. record a test
5. edit the test steps
6. execute the test
7. view the results
8. repeat 5-7 as needed
demo!
test creation & editing tips
● adjust css selectors to be less brittle
● adjust css selectors to remove transient values
● chrome / firefox developer tools are your friend
● use variables for transient values
● remove unnecessary form input 'click' steps
● something not working? drop down to javascript
● start urls can contain variables!
● try changing the browser version
ghost inspector at dce
● dev team of ~10, including 2 full-time qa'ers
● cluster application on aws opsworks
● more ice cream cone than pyramid
● e2e testing objective is to validate production releases
test automation tools
● mh-opsworks: command-line cluster manager
● mh-ui-testing: command-line ui testing tool
● pytest-ghostinspector: pytest plugin for the ghost inspector api
https://github.com/harvard-dce/mh-opsworks
https://github.com/harvard-dce/mh-ui-testing
https://github.com/harvard-dce/pytest-ghostinspector
thanks!
● email: jay_luker@harvard.edu
● slides: http://bit.ly/ui-testing-with-gi

More Related Content

What's hot

Customer segmentation and marketing automation with Apache Unomi
Customer segmentation and marketing automation with Apache UnomiCustomer segmentation and marketing automation with Apache Unomi
Customer segmentation and marketing automation with Apache Unomi
Michael Ghen
 
Collaborative filtering
Collaborative filteringCollaborative filtering
Collaborative filtering
Kishor Datta Gupta
 
UX Lesson 4: Task & Feature Analysis
UX Lesson 4: Task & Feature AnalysisUX Lesson 4: Task & Feature Analysis
UX Lesson 4: Task & Feature Analysis
Joan Lumanauw
 
Recommender systems: Content-based and collaborative filtering
Recommender systems: Content-based and collaborative filteringRecommender systems: Content-based and collaborative filtering
Recommender systems: Content-based and collaborative filtering
Viet-Trung TRAN
 
Movie lens movie recommendation system
Movie lens movie recommendation systemMovie lens movie recommendation system
Movie lens movie recommendation system
Gaurav Sawant
 
Collaborative Filtering using KNN
Collaborative Filtering using KNNCollaborative Filtering using KNN
Collaborative Filtering using KNN
Şeyda Hatipoğlu
 
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)
WSO2
 
Robot Framework :: Demo login application
Robot Framework :: Demo login applicationRobot Framework :: Demo login application
Robot Framework :: Demo login application
Somkiat Puisungnoen
 
Seminario sobre sistemas de recomendación
Seminario sobre sistemas de recomendaciónSeminario sobre sistemas de recomendación
Seminario sobre sistemas de recomendación
almudena ruiz
 
Recommender system
Recommender systemRecommender system
Recommender system
Nilotpal Pramanik
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
C4Media
 
Recommendation system for ecommerce
Recommendation system for ecommerceRecommendation system for ecommerce
Recommendation system for ecommerce
Tu Pham
 
Netflix talk at ML Platform meetup Sep 2019
Netflix talk at ML Platform meetup Sep 2019Netflix talk at ML Platform meetup Sep 2019
Netflix talk at ML Platform meetup Sep 2019
Faisal Siddiqi
 
Performance Engineering
Performance EngineeringPerformance Engineering
Performance Engineering
Kumar Gupta
 
AI Powered Personalization @ Scale - O'Reilly AI San Jose - Sep 2019
AI Powered Personalization @ Scale - O'Reilly AI San Jose - Sep 2019AI Powered Personalization @ Scale - O'Reilly AI San Jose - Sep 2019
AI Powered Personalization @ Scale - O'Reilly AI San Jose - Sep 2019
Hagay Lupesko
 
Movie Recommendation System - MovieLens Dataset
Movie Recommendation System - MovieLens DatasetMovie Recommendation System - MovieLens Dataset
Movie Recommendation System - MovieLens Dataset
Jagruti Joshi
 
Personas, scenarios, user stories
Personas, scenarios, user storiesPersonas, scenarios, user stories
Personas, scenarios, user stories
InteractionDesign
 
Music Recommendations at Scale with Spark
Music Recommendations at Scale with SparkMusic Recommendations at Scale with Spark
Music Recommendations at Scale with Spark
Chris Johnson
 
Recommendation system
Recommendation system Recommendation system
Recommendation system
Vikrant Arya
 
Ott Streaming Protocols and DRM
Ott Streaming Protocols and DRMOtt Streaming Protocols and DRM
Ott Streaming Protocols and DRM
ASIMYILDIZ
 

What's hot (20)

Customer segmentation and marketing automation with Apache Unomi
Customer segmentation and marketing automation with Apache UnomiCustomer segmentation and marketing automation with Apache Unomi
Customer segmentation and marketing automation with Apache Unomi
 
Collaborative filtering
Collaborative filteringCollaborative filtering
Collaborative filtering
 
UX Lesson 4: Task & Feature Analysis
UX Lesson 4: Task & Feature AnalysisUX Lesson 4: Task & Feature Analysis
UX Lesson 4: Task & Feature Analysis
 
Recommender systems: Content-based and collaborative filtering
Recommender systems: Content-based and collaborative filteringRecommender systems: Content-based and collaborative filtering
Recommender systems: Content-based and collaborative filtering
 
Movie lens movie recommendation system
Movie lens movie recommendation systemMovie lens movie recommendation system
Movie lens movie recommendation system
 
Collaborative Filtering using KNN
Collaborative Filtering using KNNCollaborative Filtering using KNN
Collaborative Filtering using KNN
 
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)
 
Robot Framework :: Demo login application
Robot Framework :: Demo login applicationRobot Framework :: Demo login application
Robot Framework :: Demo login application
 
Seminario sobre sistemas de recomendación
Seminario sobre sistemas de recomendaciónSeminario sobre sistemas de recomendación
Seminario sobre sistemas de recomendación
 
Recommender system
Recommender systemRecommender system
Recommender system
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Recommendation system for ecommerce
Recommendation system for ecommerceRecommendation system for ecommerce
Recommendation system for ecommerce
 
Netflix talk at ML Platform meetup Sep 2019
Netflix talk at ML Platform meetup Sep 2019Netflix talk at ML Platform meetup Sep 2019
Netflix talk at ML Platform meetup Sep 2019
 
Performance Engineering
Performance EngineeringPerformance Engineering
Performance Engineering
 
AI Powered Personalization @ Scale - O'Reilly AI San Jose - Sep 2019
AI Powered Personalization @ Scale - O'Reilly AI San Jose - Sep 2019AI Powered Personalization @ Scale - O'Reilly AI San Jose - Sep 2019
AI Powered Personalization @ Scale - O'Reilly AI San Jose - Sep 2019
 
Movie Recommendation System - MovieLens Dataset
Movie Recommendation System - MovieLens DatasetMovie Recommendation System - MovieLens Dataset
Movie Recommendation System - MovieLens Dataset
 
Personas, scenarios, user stories
Personas, scenarios, user storiesPersonas, scenarios, user stories
Personas, scenarios, user stories
 
Music Recommendations at Scale with Spark
Music Recommendations at Scale with SparkMusic Recommendations at Scale with Spark
Music Recommendations at Scale with Spark
 
Recommendation system
Recommendation system Recommendation system
Recommendation system
 
Ott Streaming Protocols and DRM
Ott Streaming Protocols and DRMOtt Streaming Protocols and DRM
Ott Streaming Protocols and DRM
 

Similar to Ui Testing with Ghost Inspector

Code Review: How and When
Code Review: How and WhenCode Review: How and When
Code Review: How and When
Paul Gower
 
Code Review: How and When
Code Review: How and WhenCode Review: How and When
Code Review: How and When
Paul Gower
 
Five Easy Ways to QA Your Drupal Site
Five Easy Ways to QA Your Drupal SiteFive Easy Ways to QA Your Drupal Site
Five Easy Ways to QA Your Drupal Site
Mediacurrent
 
How do you tame a big ball of mud? One test at a time.
How do you tame a big ball of mud? One test at a time.How do you tame a big ball of mud? One test at a time.
How do you tame a big ball of mud? One test at a time.
Matt Eland
 
(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know
Richard Cheng
 
Unit testing legacy code
Unit testing legacy codeUnit testing legacy code
Unit testing legacy code
Lars Thorup
 
Agile Engineering Best Practices by Richard Cheng
Agile Engineering Best Practices by Richard ChengAgile Engineering Best Practices by Richard Cheng
Agile Engineering Best Practices by Richard Cheng
Excella
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
ZendCon
 
Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"
Lars Thorup
 
Test automation proposal
Test automation proposalTest automation proposal
Test automation proposal
Mihai-Cristian Fratila
 
High Performance Software Engineering Teams
High Performance Software Engineering TeamsHigh Performance Software Engineering Teams
High Performance Software Engineering Teams
Lars Thorup
 
Agile Engineering Sparker GLASScon 2015
Agile Engineering Sparker GLASScon 2015Agile Engineering Sparker GLASScon 2015
Agile Engineering Sparker GLASScon 2015
Stephen Ritchie
 
5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation
Sauce Labs
 
Software Defect Prevention via Continuous Inspection
Software Defect Prevention via Continuous InspectionSoftware Defect Prevention via Continuous Inspection
Software Defect Prevention via Continuous Inspection
Josh Gough
 
Joomla Code Quality Control and Automation Testing
Joomla Code Quality Control and Automation TestingJoomla Code Quality Control and Automation Testing
Joomla Code Quality Control and Automation Testing
Shyam Sunder Verma
 
Automated testing
Automated testingAutomated testing
Automated testing
Aiste Stikliute
 
Winning the battle against Automated testing
Winning the battle against Automated testingWinning the battle against Automated testing
Winning the battle against Automated testing
Elena Laskavaia
 
Dot all 2019 | Testing with Craft | Giel Tettelar
Dot all 2019 | Testing with Craft | Giel TettelarDot all 2019 | Testing with Craft | Giel Tettelar
Dot all 2019 | Testing with Craft | Giel Tettelar
Giel Tettelaar
 
Automated Security Testing
Automated Security TestingAutomated Security Testing
Automated Security Testingseleniumconf
 

Similar to Ui Testing with Ghost Inspector (20)

Code Review: How and When
Code Review: How and WhenCode Review: How and When
Code Review: How and When
 
Code Review: How and When
Code Review: How and WhenCode Review: How and When
Code Review: How and When
 
Five Easy Ways to QA Your Drupal Site
Five Easy Ways to QA Your Drupal SiteFive Easy Ways to QA Your Drupal Site
Five Easy Ways to QA Your Drupal Site
 
UPC Plone Testing Talk
UPC Plone Testing TalkUPC Plone Testing Talk
UPC Plone Testing Talk
 
How do you tame a big ball of mud? One test at a time.
How do you tame a big ball of mud? One test at a time.How do you tame a big ball of mud? One test at a time.
How do you tame a big ball of mud? One test at a time.
 
(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know
 
Unit testing legacy code
Unit testing legacy codeUnit testing legacy code
Unit testing legacy code
 
Agile Engineering Best Practices by Richard Cheng
Agile Engineering Best Practices by Richard ChengAgile Engineering Best Practices by Richard Cheng
Agile Engineering Best Practices by Richard Cheng
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"
 
Test automation proposal
Test automation proposalTest automation proposal
Test automation proposal
 
High Performance Software Engineering Teams
High Performance Software Engineering TeamsHigh Performance Software Engineering Teams
High Performance Software Engineering Teams
 
Agile Engineering Sparker GLASScon 2015
Agile Engineering Sparker GLASScon 2015Agile Engineering Sparker GLASScon 2015
Agile Engineering Sparker GLASScon 2015
 
5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation
 
Software Defect Prevention via Continuous Inspection
Software Defect Prevention via Continuous InspectionSoftware Defect Prevention via Continuous Inspection
Software Defect Prevention via Continuous Inspection
 
Joomla Code Quality Control and Automation Testing
Joomla Code Quality Control and Automation TestingJoomla Code Quality Control and Automation Testing
Joomla Code Quality Control and Automation Testing
 
Automated testing
Automated testingAutomated testing
Automated testing
 
Winning the battle against Automated testing
Winning the battle against Automated testingWinning the battle against Automated testing
Winning the battle against Automated testing
 
Dot all 2019 | Testing with Craft | Giel Tettelar
Dot all 2019 | Testing with Craft | Giel TettelarDot all 2019 | Testing with Craft | Giel Tettelar
Dot all 2019 | Testing with Craft | Giel Tettelar
 
Automated Security Testing
Automated Security TestingAutomated Security Testing
Automated Security Testing
 

More from Harvard Web Working Group

The Internet of Things (IoT)
The Internet of Things (IoT)The Internet of Things (IoT)
The Internet of Things (IoT)
Harvard Web Working Group
 
Perception is Reality: Lessons Learned from User Research
Perception is Reality: Lessons Learned from User ResearchPerception is Reality: Lessons Learned from User Research
Perception is Reality: Lessons Learned from User Research
Harvard Web Working Group
 
5 Steps to (Remote) Team Bliss: How to Build Thriving, High-Performing (Remot...
5 Steps to (Remote) Team Bliss: How to Build Thriving, High-Performing (Remot...5 Steps to (Remote) Team Bliss: How to Build Thriving, High-Performing (Remot...
5 Steps to (Remote) Team Bliss: How to Build Thriving, High-Performing (Remot...
Harvard Web Working Group
 
Starting out with MongoDB
Starting out with MongoDBStarting out with MongoDB
Starting out with MongoDB
Harvard Web Working Group
 
The Process of Communication, A Practical Guide for Project Managers
The Process of Communication, A Practical Guide for Project ManagersThe Process of Communication, A Practical Guide for Project Managers
The Process of Communication, A Practical Guide for Project Managers
Harvard Web Working Group
 
Universal Design for Learning: A framework for addressing learner diversity
Universal Design for Learning: A framework for addressing learner diversityUniversal Design for Learning: A framework for addressing learner diversity
Universal Design for Learning: A framework for addressing learner diversity
Harvard Web Working Group
 
Intro to ReactJS
Intro to ReactJSIntro to ReactJS
Intro to ReactJS
Harvard Web Working Group
 
UX @ Harvard's IQSS (Elizabeth Quigley)
UX @ Harvard's IQSS (Elizabeth Quigley)UX @ Harvard's IQSS (Elizabeth Quigley)
UX @ Harvard's IQSS (Elizabeth Quigley)
Harvard Web Working Group
 
Tania Schlatter – Visual Usability
Tania Schlatter – Visual UsabilityTania Schlatter – Visual Usability
Tania Schlatter – Visual Usability
Harvard Web Working Group
 
Responsive Design: Building for a Modern Web
Responsive Design: Building for a Modern WebResponsive Design: Building for a Modern Web
Responsive Design: Building for a Modern Web
Harvard Web Working Group
 
Demystifying UX – A toolkit approach to better, cheaper & faster experience d...
Demystifying UX – A toolkit approach to better, cheaper & faster experience d...Demystifying UX – A toolkit approach to better, cheaper & faster experience d...
Demystifying UX – A toolkit approach to better, cheaper & faster experience d...
Harvard Web Working Group
 
Will my helicopter fit in your garage?
Will my helicopter fit in your garage?Will my helicopter fit in your garage?
Will my helicopter fit in your garage?
Harvard Web Working Group
 
Every Screen is a Touchscreen
Every Screen is a TouchscreenEvery Screen is a Touchscreen
Every Screen is a Touchscreen
Harvard Web Working Group
 
Tastypie: Easy APIs to Make Your Work Easier
Tastypie: Easy APIs to Make Your Work EasierTastypie: Easy APIs to Make Your Work Easier
Tastypie: Easy APIs to Make Your Work Easier
Harvard Web Working Group
 
An Introduction to MIT's Drupal Cloud
An Introduction to MIT's Drupal CloudAn Introduction to MIT's Drupal Cloud
An Introduction to MIT's Drupal Cloud
Harvard Web Working Group
 
Open Scholar
Open ScholarOpen Scholar
Jumpstart Your Web App
Jumpstart Your Web AppJumpstart Your Web App
Jumpstart Your Web App
Harvard Web Working Group
 
Draw More, Talk Less
Draw More, Talk LessDraw More, Talk Less
Draw More, Talk Less
Harvard Web Working Group
 
Mat Marquis - JQuery Mobile
Mat Marquis - JQuery MobileMat Marquis - JQuery Mobile
Mat Marquis - JQuery Mobile
Harvard Web Working Group
 
Curating the Open Web with Zeega
Curating the Open Web with ZeegaCurating the Open Web with Zeega
Curating the Open Web with Zeega
Harvard Web Working Group
 

More from Harvard Web Working Group (20)

The Internet of Things (IoT)
The Internet of Things (IoT)The Internet of Things (IoT)
The Internet of Things (IoT)
 
Perception is Reality: Lessons Learned from User Research
Perception is Reality: Lessons Learned from User ResearchPerception is Reality: Lessons Learned from User Research
Perception is Reality: Lessons Learned from User Research
 
5 Steps to (Remote) Team Bliss: How to Build Thriving, High-Performing (Remot...
5 Steps to (Remote) Team Bliss: How to Build Thriving, High-Performing (Remot...5 Steps to (Remote) Team Bliss: How to Build Thriving, High-Performing (Remot...
5 Steps to (Remote) Team Bliss: How to Build Thriving, High-Performing (Remot...
 
Starting out with MongoDB
Starting out with MongoDBStarting out with MongoDB
Starting out with MongoDB
 
The Process of Communication, A Practical Guide for Project Managers
The Process of Communication, A Practical Guide for Project ManagersThe Process of Communication, A Practical Guide for Project Managers
The Process of Communication, A Practical Guide for Project Managers
 
Universal Design for Learning: A framework for addressing learner diversity
Universal Design for Learning: A framework for addressing learner diversityUniversal Design for Learning: A framework for addressing learner diversity
Universal Design for Learning: A framework for addressing learner diversity
 
Intro to ReactJS
Intro to ReactJSIntro to ReactJS
Intro to ReactJS
 
UX @ Harvard's IQSS (Elizabeth Quigley)
UX @ Harvard's IQSS (Elizabeth Quigley)UX @ Harvard's IQSS (Elizabeth Quigley)
UX @ Harvard's IQSS (Elizabeth Quigley)
 
Tania Schlatter – Visual Usability
Tania Schlatter – Visual UsabilityTania Schlatter – Visual Usability
Tania Schlatter – Visual Usability
 
Responsive Design: Building for a Modern Web
Responsive Design: Building for a Modern WebResponsive Design: Building for a Modern Web
Responsive Design: Building for a Modern Web
 
Demystifying UX – A toolkit approach to better, cheaper & faster experience d...
Demystifying UX – A toolkit approach to better, cheaper & faster experience d...Demystifying UX – A toolkit approach to better, cheaper & faster experience d...
Demystifying UX – A toolkit approach to better, cheaper & faster experience d...
 
Will my helicopter fit in your garage?
Will my helicopter fit in your garage?Will my helicopter fit in your garage?
Will my helicopter fit in your garage?
 
Every Screen is a Touchscreen
Every Screen is a TouchscreenEvery Screen is a Touchscreen
Every Screen is a Touchscreen
 
Tastypie: Easy APIs to Make Your Work Easier
Tastypie: Easy APIs to Make Your Work EasierTastypie: Easy APIs to Make Your Work Easier
Tastypie: Easy APIs to Make Your Work Easier
 
An Introduction to MIT's Drupal Cloud
An Introduction to MIT's Drupal CloudAn Introduction to MIT's Drupal Cloud
An Introduction to MIT's Drupal Cloud
 
Open Scholar
Open ScholarOpen Scholar
Open Scholar
 
Jumpstart Your Web App
Jumpstart Your Web AppJumpstart Your Web App
Jumpstart Your Web App
 
Draw More, Talk Less
Draw More, Talk LessDraw More, Talk Less
Draw More, Talk Less
 
Mat Marquis - JQuery Mobile
Mat Marquis - JQuery MobileMat Marquis - JQuery Mobile
Mat Marquis - JQuery Mobile
 
Curating the Open Web with Zeega
Curating the Open Web with ZeegaCurating the Open Web with Zeega
Curating the Open Web with Zeega
 

Recently uploaded

guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
Rogerio Filho
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC
 
[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024
hackersuli
 
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
3ipehhoa
 
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
cuobya
 
Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027
harveenkaur52
 
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
cuobya
 
Explore-Insanony: Watch Instagram Stories Secretly
Explore-Insanony: Watch Instagram Stories SecretlyExplore-Insanony: Watch Instagram Stories Secretly
Explore-Insanony: Watch Instagram Stories Secretly
Trending Blogers
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
eutxy
 
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
CIOWomenMagazine
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Florence Consulting
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
3ipehhoa
 
1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
JeyaPerumal1
 
Search Result Showing My Post is Now Buried
Search Result Showing My Post is Now BuriedSearch Result Showing My Post is Now Buried
Search Result Showing My Post is Now Buried
Trish Parr
 
7 Best Cloud Hosting Services to Try Out in 2024
7 Best Cloud Hosting Services to Try Out in 20247 Best Cloud Hosting Services to Try Out in 2024
7 Best Cloud Hosting Services to Try Out in 2024
Danica Gill
 
Bài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docxBài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docx
nhiyenphan2005
 
Gen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needsGen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needs
Laura Szabó
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
ufdana
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
Javier Lasa
 
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
JeyaPerumal1
 

Recently uploaded (20)

guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
 
[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024
 
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
 
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
 
Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027
 
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
 
Explore-Insanony: Watch Instagram Stories Secretly
Explore-Insanony: Watch Instagram Stories SecretlyExplore-Insanony: Watch Instagram Stories Secretly
Explore-Insanony: Watch Instagram Stories Secretly
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
 
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
 
1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
 
Search Result Showing My Post is Now Buried
Search Result Showing My Post is Now BuriedSearch Result Showing My Post is Now Buried
Search Result Showing My Post is Now Buried
 
7 Best Cloud Hosting Services to Try Out in 2024
7 Best Cloud Hosting Services to Try Out in 20247 Best Cloud Hosting Services to Try Out in 2024
7 Best Cloud Hosting Services to Try Out in 2024
 
Bài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docxBài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docx
 
Gen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needsGen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needs
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
 
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
 

Ui Testing with Ghost Inspector

  • 1. ui testing with ghost inspector a capstone for your testing pyramid jay luker | @lbjay senior software engineer, harvard dce
  • 2. about.me “self-taught” full-stack not a testing "expert" free, open-source small teams, smallish orgs lazy likes: python, rowing, jaywalking, mondays dislikes: tea, endless scroll, mis-implemented http status codes
  • 3. this is not that other talk ● pytest ● pytest plugins ● ghost inspector ● pytest-ghostinspector https://www.youtube.com/watch?v=qs1mbTg2kds
  • 4. let's talk about... why we do automated testing the ideal "testing pyramid" ghost inspector how we're using ghost inspector at dce
  • 5. why write automated tests? ● continuous feedback throughout the development cycle ● did this change break something? ● catch bugs earlier and faster ● help inform the writing of code and application architecture ● help specify code and application behavior
  • 6. types of automated tests ● unit ● integration ● end-to-end
  • 7. test scope continuum small (unit) large (e2e) fast cheap reliable isolated low test:value ratio run frequently verifies code behavior owned by developers created early short feedback loop "are we building the system right?" 👈 👈 👈 ¯_(ツ)_/¯ 👉 👈 ¯_(ツ)_/¯ 👉 👈 👈 ¯_(ツ)_/¯ slow expensive flakey integrated high test:value ratio run infrequently verifies real world behavior owned by anyone* created late long feedback loop "are we building the right system?"
  • 8. the testing pyramid source: http://googletesting.blogspot.co.uk/2015/04/just-say-no-to-more-end-to-end-tests.html
  • 9. pyramid vs ice cream cone source: https://watirmelon.com/2012/01/31/introducing-the-software-testing-ice-cream-cone/
  • 10. in summary... ● write tests ● not too much end-to-end / ui ● mostly unit
  • 11. ghost inspector ● cloud-based ui testing service ● record tests ● manually build/edit tests ● execute tests ● schedule tests ● view & monitor test results ● receive notification of test outcomes
  • 12. who the what now? ● it's like a browser*... ● in the cloud… ● that accesses your site… ● and does stuff… ● and verifies everything worked right… ● and then lets you know if it didn't * more specifically, a headless browser under the control of a webdriver
  • 13. great things about ghost inspector ● free / cheap ● easy to get started ● high initial effort:value ratio ● well-written documentation ● intuitive interface ● api for running tests ● nothing to install locally ● tests allow custom variables & re-use
  • 14. not so great things about ghost inspector ● slow, particularly on failures ● missing concurrency ● no test versioning ● documentation can be shallow ● test recorder tries hard but has limitations ● tests run remotely; firewalls / access control require hoop-jumping ● support is currently via e-mail only
  • 15. things you will need ● a website or web application to test ● chrome (optional) ● knowledge of html and javascript ● knowledge of how to use chrome or firefox developer tools ● knowledge of how to interact with restful apis (optional) ● $$ for > free pricing tier (optional)
  • 16. free tier details ● 100 tests / month ● 3 tests * daily schedule: boom ● all the bells & whistles ● link a (free) runscope account* and get 500 tests / month * https://www.runscope.com/ghostinspector
  • 17. let's do this thing 1. create a ghost inspector account 2. install the chrome extension 3. login through the extension 4. record a test 5. edit the test steps 6. execute the test 7. view the results 8. repeat 5-7 as needed
  • 18. demo!
  • 19. test creation & editing tips ● adjust css selectors to be less brittle ● adjust css selectors to remove transient values ● chrome / firefox developer tools are your friend ● use variables for transient values ● remove unnecessary form input 'click' steps ● something not working? drop down to javascript ● start urls can contain variables! ● try changing the browser version
  • 20. ghost inspector at dce ● dev team of ~10, including 2 full-time qa'ers ● cluster application on aws opsworks ● more ice cream cone than pyramid ● e2e testing objective is to validate production releases
  • 21. test automation tools ● mh-opsworks: command-line cluster manager ● mh-ui-testing: command-line ui testing tool ● pytest-ghostinspector: pytest plugin for the ghost inspector api https://github.com/harvard-dce/mh-opsworks https://github.com/harvard-dce/mh-ui-testing https://github.com/harvard-dce/pytest-ghostinspector
  • 22. thanks! ● email: jay_luker@harvard.edu ● slides: http://bit.ly/ui-testing-with-gi

Editor's Notes

  1. I'd like to touch briefly on the value of automated tests at all levels Then we'll talk about the concept of the "testing pyramid" which is a pattern / way of thinking about what kinds of automated tests make the most sense for a web application, how many of each type, etc. Next I'll give a demo of ghost inspector, show you what it's capable of and how, in my opinion, it can give you some immediate value for relatively low up-front effort. Then finally a bit about how dce is managing and executing our ghost inspector tests
  2. tests that run automatically at every step, from the developer's IDE to the deployment process
  3. just to quickly review and nail down some of the slippery testing taxonomy unit tests are code-level tests. run primarily by developers and continuous integration services. they attempt to test the smallest possible unit of functionality. ideally they are run in complete isolation from other concerns, such as other, non-trivial parts of the code, network, databases, the file system, etc. other characteristics of unit tests are that they are (or should be) very fast, because their scope is limited they are also less fragile than higher level tests and help to isolate bugs more quickly Example: does my method for calculating a unique, indexable string based on an metadata record return a correct result for all variety of inputs integration tests are directed at at the next higher level of functionality. do the smaller pieces align correctly when stitched together? Here you are still frequently trying to isolate your concerns, e.g., through mocking, but maybe the setup phase of the test spins up an external service that the System Under Test (SUT) interacts with. Example: does my session manager class correctly utilize Redis's key expiration controls end-to-end tests operate at a holistic level, testing the entire system from the perspective of a user or customer. most common example is tests that exercise some kind of GUI, like using Selenium to drive a browser which interacts with a web site/application. Example: can a user log in and change their display name; can a user add and remove items from a shopping cart
  4. testing pyramid: illustrates a generally accepted recommendation for the distribution of your testing efforts. the bottom, the foundation, are your unit tests then integration tests finally e2e or UI tests the width of the pyramid represents the volume of tests as you go up, the tests
  5. here's another interesting take on do vs. don't by testing expert, Alister Scott Scott points out that what is missing from most testing pyramid representations is the practice of manual, exploratory tests. This is apparently a whole thing, and is not simply a fancy name for ad hoc "clicking around". Scott also identifies the anti-pattern that occurs when your distribution of test types gets inverted. This can be detrimental to your project as it means your testing efforts are not playing to the strengths and weaknesses of the different types of tests. Manual testing, while valuable, has the same downsides as large, end-to-end automated tests, but with the additional challenges that it can be even harder to orchestrate, capture and reproduce results, etc.
  6. It's that end-to-end / ui type that I believe ghost inspector can help with
  7. bells & whistles = video capture, screenshot compare, API, integrations