SlideShare a Scribd company logo
I, For One, Welcome
Our New Robot
Overlords
Accepting Mobile Automated Testing into your
Heart
About Me:
• Engineer at MEDL
Mobile
• Been doing Android &
iOS development for 4
years
How many of you have a dedicated QA
group?
How many of you are doing automated
testing?
Old projects: small army of manual
testers
New projects: only one or two testers
Manual Testing
Problems
Testers must be in the office
Troubles with reproducing
Flaky error cases
Takes lots of time
I, for one, welcome our new
robotic overlords
Pros of manual testing
Testers invent new ways of going
through the app
If something is out of place, they can
exploit it right away
Can tell you how aggravating some of
your flows are
“Don’t abandon manual testing completely”
- Me
(and your QA department)
Levels of Testing
Unit Tests
Small, independent tests
Tests only a small chunk of a class
Fast to run
Written mostly by developers
Functional Tests
Test entire feature
Cut across large sections of the app
Can be written by developers, QA, or
product owners
Needs from a testing
solution
Has to support iOS and Android
One set of test cases shared
between both apps
Needs from a testing
solution
Needs to be quick to pick up and set
up
Needs from a testing
solution
Needs to be understandable/usable
by non-technical people
UIAutomation/UIAutom
ator
iOS/Android specific frameworks
One is Javascript, the other Java.
Tests are not portable between
platforms
Cucumber
Tests are written in plain language
“Given”, “When”, “Then”
Desired by teams interested in Agile
Calabash
Cucumber support, Ruby code
Many built-in step definitions for
mobile tests
iOS and Android can use the same
steps & step definitions
FREE!
How to write
Cucumber/Calabas
h tests
Feature: Running a test
As a Developer
I want a sample feature
So I can begin testing quickly
Feature: Running a test
As a Developer
I want a sample feature
So I can begin testing quickly
Scenario: Logging in
Given I am about to login
When I login as “User”
Then I should see “My Profile
Feature: Running a test
As a Developer
I want a sample feature
So I can begin testing quickly
Scenario: Logging in
Given I am about to login
When I login as “User”
Then I should see “My Profile
Scenario: Invalid Login
Given I am about to login
When I login as “BadUser”
Then I should see “Invalid Credentials”
Feature: Running a test
As a Developer
I want a sample feature
So I can begin testing quickly
@valid
Scenario: Logging in
Given I am about to login
When I login as “User”
Then I should see “My Profile
@invalid
Scenario: Invalid Login
Given I am about to login
When I login as “BadUser”
Then I should see “Invalid Credentials”
Step Definitions
Given(/^I am about to login$/) do
…
end
Step Definitions
Given(/^I am about to login$/) do
…
end
When(/^I login as “(.*?)”$/) do |user|
…
end
It’s Just Ruby
Code!
Step Definitions
When(/^I login as “(.*?)”$/) do |user|
…
end
Step Definitions
When(/^I login as “(.*?)”$/) do |user|
…
end
USERS = {
BadUser: {
username: ‘baduser’,
password: ‘BadPassword’
}
}
Step Definitions
When(/^I login as “(.*?)”$/) do |user|
user = USERS[:user]
touch(“Username”)
keyboard_enter_text(user[:username])
touch(“Password”)
keyboard_enter_text(user[:password])
touch(“Login”)
end
Writing Good Tests
Bad Tests are worse than no tests
Good tests should be slightly verbose
TestLoginShouldFailWithInvalidCredentails
vs
LoginTest45
Good Tests should be
Concise
Given I am on the Welcome
Screen
Then I press the Welcome
button
Then I tap the Username
field
And I type "username"
Then I tap the Password
field
And I type "badPassword"
And I tap the Login button
Then I should see “Invalid
Login"
Given I am on the Welcome
Screen
Then I press the Welcome
button
Then I tap the Username
field
And I type "username"
Then I tap the Password
field
And I type "badPassword"
And I tap the Login button
Then I should see “Invalid
Login"
Given I am about to
login
When I log in as
“BadUser”
Then I should see
“Invalid Login"
Good tests should be flexible
NOT
Good Tests must be independent
Good Tests should be run often
Good Tests should not know too much
about what they’re testing
- (void)testSquare {
assertEquals([sut squareOf:2], 2*2);
}
- (void)testSquare {
assertEquals([sut squareOf:2], 2*2);
}
- (void)testSquare {
assertEquals([sut squareOf:2], 4);
}
Manual testing is on a decline
Explored solutions for automated testing
Saw what goes into a Cucumber test
What makes a good test
Fin
Steve Malsam
stevemalsam@stevemalsam.com
@s73v3r
+SteveMalsam

More Related Content

What's hot

Producing Testable Requirements
Producing Testable RequirementsProducing Testable Requirements
Producing Testable Requirements
Intergen
 
Testable Requirements
Testable Requirements Testable Requirements
Testable Requirements
Bharti Rupani
 
Code Quality Practice and Tools
Code Quality Practice and ToolsCode Quality Practice and Tools
Code Quality Practice and Tools
Bob Paulin
 
Working with Adwords scripts for reporting with AWQL
Working with Adwords scripts for reporting with AWQLWorking with Adwords scripts for reporting with AWQL
Working with Adwords scripts for reporting with AWQL
Steve Hammer
 
Story Driven Development With Cucumber
Story Driven Development With CucumberStory Driven Development With Cucumber
Story Driven Development With Cucumber
Sean Cribbs
 
UI Automation Quirks
UI Automation QuirksUI Automation Quirks
UI Automation Quirks
Lucas Pang
 
React testing
React testingReact testing
React testing
Andrei Fidelman
 
Scala & Swagger at Wordnik
Scala & Swagger at WordnikScala & Swagger at Wordnik
Scala & Swagger at Wordnik
Tony Tam
 
Will be an introduction to
Will be an introduction toWill be an introduction to
Will be an introduction to
Sayed Ahmed
 
Perils of Page-Object Pattern
Perils of Page-Object PatternPerils of Page-Object Pattern
Perils of Page-Object Pattern
Anand Bagmar
 
Practical ideas for getting the most out of your working environment
Practical ideas for getting the most out of your working environmentPractical ideas for getting the most out of your working environment
Practical ideas for getting the most out of your working environment
bluebirdtrans
 
jQuery Intro
jQuery IntrojQuery Intro
jQuery Intro
Jason Noble
 
TestWorksConf: Exploratory Testing an API in Mob
TestWorksConf: Exploratory Testing an API in Mob TestWorksConf: Exploratory Testing an API in Mob
TestWorksConf: Exploratory Testing an API in Mob
Maaret Pyhäjärvi
 
Tomer Shiri - A Bug's Life - How to Avoid Production Catastrophes
Tomer Shiri - A Bug's Life - How to Avoid Production CatastrophesTomer Shiri - A Bug's Life - How to Avoid Production Catastrophes
Tomer Shiri - A Bug's Life - How to Avoid Production Catastrophes
tlv-ios-dev
 
Selenium (2)
Selenium (2)Selenium (2)
Selenium (2)
onlinemindq
 
Baking In Quality: The Evolving Role of the Agile Tester
Baking In Quality: The Evolving Role of the Agile TesterBaking In Quality: The Evolving Role of the Agile Tester
Baking In Quality: The Evolving Role of the Agile Tester
TechWell
 
User stories deep dive
User stories deep diveUser stories deep dive
User stories deep dive
Amir Barylko
 
Reviews SEO Tools
Reviews  SEO ToolsReviews  SEO Tools
Reviews SEO Tools
Gezondheid Acties
 
Intro to Rails Give Camp Atlanta
Intro to Rails Give Camp AtlantaIntro to Rails Give Camp Atlanta
Intro to Rails Give Camp Atlanta
Jason Noble
 
Behat, Test Driven Framework for BDD by Jeevan Bhushetty
Behat, Test Driven Framework for BDD by Jeevan BhushettyBehat, Test Driven Framework for BDD by Jeevan Bhushetty
Behat, Test Driven Framework for BDD by Jeevan Bhushetty
Agile Testing Alliance
 

What's hot (20)

Producing Testable Requirements
Producing Testable RequirementsProducing Testable Requirements
Producing Testable Requirements
 
Testable Requirements
Testable Requirements Testable Requirements
Testable Requirements
 
Code Quality Practice and Tools
Code Quality Practice and ToolsCode Quality Practice and Tools
Code Quality Practice and Tools
 
Working with Adwords scripts for reporting with AWQL
Working with Adwords scripts for reporting with AWQLWorking with Adwords scripts for reporting with AWQL
Working with Adwords scripts for reporting with AWQL
 
Story Driven Development With Cucumber
Story Driven Development With CucumberStory Driven Development With Cucumber
Story Driven Development With Cucumber
 
UI Automation Quirks
UI Automation QuirksUI Automation Quirks
UI Automation Quirks
 
React testing
React testingReact testing
React testing
 
Scala & Swagger at Wordnik
Scala & Swagger at WordnikScala & Swagger at Wordnik
Scala & Swagger at Wordnik
 
Will be an introduction to
Will be an introduction toWill be an introduction to
Will be an introduction to
 
Perils of Page-Object Pattern
Perils of Page-Object PatternPerils of Page-Object Pattern
Perils of Page-Object Pattern
 
Practical ideas for getting the most out of your working environment
Practical ideas for getting the most out of your working environmentPractical ideas for getting the most out of your working environment
Practical ideas for getting the most out of your working environment
 
jQuery Intro
jQuery IntrojQuery Intro
jQuery Intro
 
TestWorksConf: Exploratory Testing an API in Mob
TestWorksConf: Exploratory Testing an API in Mob TestWorksConf: Exploratory Testing an API in Mob
TestWorksConf: Exploratory Testing an API in Mob
 
Tomer Shiri - A Bug's Life - How to Avoid Production Catastrophes
Tomer Shiri - A Bug's Life - How to Avoid Production CatastrophesTomer Shiri - A Bug's Life - How to Avoid Production Catastrophes
Tomer Shiri - A Bug's Life - How to Avoid Production Catastrophes
 
Selenium (2)
Selenium (2)Selenium (2)
Selenium (2)
 
Baking In Quality: The Evolving Role of the Agile Tester
Baking In Quality: The Evolving Role of the Agile TesterBaking In Quality: The Evolving Role of the Agile Tester
Baking In Quality: The Evolving Role of the Agile Tester
 
User stories deep dive
User stories deep diveUser stories deep dive
User stories deep dive
 
Reviews SEO Tools
Reviews  SEO ToolsReviews  SEO Tools
Reviews SEO Tools
 
Intro to Rails Give Camp Atlanta
Intro to Rails Give Camp AtlantaIntro to Rails Give Camp Atlanta
Intro to Rails Give Camp Atlanta
 
Behat, Test Driven Framework for BDD by Jeevan Bhushetty
Behat, Test Driven Framework for BDD by Jeevan BhushettyBehat, Test Driven Framework for BDD by Jeevan Bhushetty
Behat, Test Driven Framework for BDD by Jeevan Bhushetty
 

Viewers also liked

Антон Семенченко | (EPAM Systems, DPI.Solutions )Сравнительный анализ инстру...
Антон Семенченко | (EPAM Systems, DPI.Solutions )Сравнительный анализ инстру...Антон Семенченко | (EPAM Systems, DPI.Solutions )Сравнительный анализ инстру...
Антон Семенченко | (EPAM Systems, DPI.Solutions )Сравнительный анализ инстру...
RIF-Technology
 
Вячеслав Черников (Binwell) | Xamarin на практике
Вячеслав Черников (Binwell) | Xamarin на практике Вячеслав Черников (Binwell) | Xamarin на практике
Вячеслав Черников (Binwell) | Xamarin на практике
RIF-Technology
 
Continuous Deployment pipeline demonstration spiced with Robot Framework and ...
Continuous Deployment pipeline demonstration spiced with Robot Framework and ...Continuous Deployment pipeline demonstration spiced with Robot Framework and ...
Continuous Deployment pipeline demonstration spiced with Robot Framework and ...
Antti Pohjonen
 
Automation patterns on practice
Automation patterns on practiceAutomation patterns on practice
Automation patterns on practice
automated-testing.info
 
Robot framework
Robot frameworkRobot framework
Robot framework
Prayoch Rujira
 
Taming robotframework
Taming robotframeworkTaming robotframework
Taming robotframework
泰 増田
 
Test automation within a scrum process
Test automation within a scrum processTest automation within a scrum process
Test automation within a scrum process
Kushan Shalindra Amarasiri - Technical QE Specialist
 
Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...
Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...
Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...
Bhaskara Reddy Sannapureddy
 
Sphinx + robot framework = documentation as result of functional testing
Sphinx + robot framework = documentation as result of functional testingSphinx + robot framework = documentation as result of functional testing
Sphinx + robot framework = documentation as result of functional testing
plewicki
 
Robot Framework
Robot FrameworkRobot Framework
Robot Framework
Onur Baskirt
 
Test Cases are dead, long live Checklists!
Test Cases are dead, long live Checklists!Test Cases are dead, long live Checklists!
Test Cases are dead, long live Checklists!
SQALab
 
Functional Tests Automation with Robot Framework
Functional Tests Automation with Robot FrameworkFunctional Tests Automation with Robot Framework
Functional Tests Automation with Robot Framework
laurent bristiel
 
「うねり」を産んだ言葉と 自分なりの越境のやり方
「うねり」を産んだ言葉と 自分なりの越境のやり方「うねり」を産んだ言葉と 自分なりの越境のやり方
「うねり」を産んだ言葉と 自分なりの越境のやり方
Yoh Nakamura
 
ATAGTR2017 Expanding test horizons with Robot Framework
ATAGTR2017 Expanding test horizons with Robot FrameworkATAGTR2017 Expanding test horizons with Robot Framework
ATAGTR2017 Expanding test horizons with Robot Framework
Agile Testing Alliance
 
Robot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs IntegrationRobot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs Integration
Sauce Labs
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
SlideShare
 

Viewers also liked (16)

Антон Семенченко | (EPAM Systems, DPI.Solutions )Сравнительный анализ инстру...
Антон Семенченко | (EPAM Systems, DPI.Solutions )Сравнительный анализ инстру...Антон Семенченко | (EPAM Systems, DPI.Solutions )Сравнительный анализ инстру...
Антон Семенченко | (EPAM Systems, DPI.Solutions )Сравнительный анализ инстру...
 
Вячеслав Черников (Binwell) | Xamarin на практике
Вячеслав Черников (Binwell) | Xamarin на практике Вячеслав Черников (Binwell) | Xamarin на практике
Вячеслав Черников (Binwell) | Xamarin на практике
 
Continuous Deployment pipeline demonstration spiced with Robot Framework and ...
Continuous Deployment pipeline demonstration spiced with Robot Framework and ...Continuous Deployment pipeline demonstration spiced with Robot Framework and ...
Continuous Deployment pipeline demonstration spiced with Robot Framework and ...
 
Automation patterns on practice
Automation patterns on practiceAutomation patterns on practice
Automation patterns on practice
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
Taming robotframework
Taming robotframeworkTaming robotframework
Taming robotframework
 
Test automation within a scrum process
Test automation within a scrum processTest automation within a scrum process
Test automation within a scrum process
 
Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...
Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...
Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...
 
Sphinx + robot framework = documentation as result of functional testing
Sphinx + robot framework = documentation as result of functional testingSphinx + robot framework = documentation as result of functional testing
Sphinx + robot framework = documentation as result of functional testing
 
Robot Framework
Robot FrameworkRobot Framework
Robot Framework
 
Test Cases are dead, long live Checklists!
Test Cases are dead, long live Checklists!Test Cases are dead, long live Checklists!
Test Cases are dead, long live Checklists!
 
Functional Tests Automation with Robot Framework
Functional Tests Automation with Robot FrameworkFunctional Tests Automation with Robot Framework
Functional Tests Automation with Robot Framework
 
「うねり」を産んだ言葉と 自分なりの越境のやり方
「うねり」を産んだ言葉と 自分なりの越境のやり方「うねり」を産んだ言葉と 自分なりの越境のやり方
「うねり」を産んだ言葉と 自分なりの越境のやり方
 
ATAGTR2017 Expanding test horizons with Robot Framework
ATAGTR2017 Expanding test horizons with Robot FrameworkATAGTR2017 Expanding test horizons with Robot Framework
ATAGTR2017 Expanding test horizons with Robot Framework
 
Robot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs IntegrationRobot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs Integration
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
 

Similar to I, For One, Welcome Our New Robot Overlords

Green Light for the Apps with Calaba.sh - DroidCon Paris 2014
Green Light for the Apps with Calaba.sh - DroidCon Paris 2014Green Light for the Apps with Calaba.sh - DroidCon Paris 2014
Green Light for the Apps with Calaba.sh - DroidCon Paris 2014
Jean-Loup Yu
 
Android testing calabash
Android testing calabashAndroid testing calabash
Android testing calabash
kellinreaver
 
BDD / cucumber /Capybara
BDD / cucumber /CapybaraBDD / cucumber /Capybara
BDD / cucumber /Capybara
ShraddhaSF
 
Testing and Testable Code
Testing and Testable CodeTesting and Testable Code
Testing and Testable Code
Pawel Szulc
 
Rubyconf2016 - Solving communication problems in distributed teams with BDD
Rubyconf2016 - Solving communication problems in distributed teams with BDDRubyconf2016 - Solving communication problems in distributed teams with BDD
Rubyconf2016 - Solving communication problems in distributed teams with BDD
Rodrigo Urubatan
 
Testdroid:
Testdroid: Testdroid:
Testdroid:
Lingkai Shao
 
TDD - Ketan Soni
TDD - Ketan SoniTDD - Ketan Soni
TDD - Ketan Soni
Thoughtworks
 
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Conference
 
BDD Primer
BDD PrimerBDD Primer
BDD Primer
Attila Bertók
 
Different Android Test Automation Frameworks - What Works You the Best?
Different Android Test Automation Frameworks - What Works You the Best?Different Android Test Automation Frameworks - What Works You the Best?
Different Android Test Automation Frameworks - What Works You the Best?
Bitbar
 
Behat - human-readable automated testing
Behat - human-readable automated testingBehat - human-readable automated testing
Behat - human-readable automated testing
nyccamp
 
Unit Test Your Database
Unit Test Your DatabaseUnit Test Your Database
Unit Test Your Database
David Wheeler
 
Bridging the communication Gap & Continuous Delivery
Bridging the communication Gap & Continuous DeliveryBridging the communication Gap & Continuous Delivery
Bridging the communication Gap & Continuous Delivery
masoodjan
 
Uncovering breaking changes behind UI on mobile applications
Uncovering breaking changes behind UI on mobile applicationsUncovering breaking changes behind UI on mobile applications
Uncovering breaking changes behind UI on mobile applications
Kazuaki Matsuo
 
Cucumber & BDD
Cucumber & BDDCucumber & BDD
Cucumber & BDD
Sam Davarnia
 
Behaviour driven infrastructure
Behaviour driven infrastructureBehaviour driven infrastructure
Behaviour driven infrastructure
Lindsay Holmwood
 
Improve Testing with a Zone Defense
Improve Testing with a Zone DefenseImprove Testing with a Zone Defense
Improve Testing with a Zone Defense
TechWell
 
Build the Right Regression Suite with Behavior-Driven Testing
Build the Right Regression Suite with Behavior-Driven TestingBuild the Right Regression Suite with Behavior-Driven Testing
Build the Right Regression Suite with Behavior-Driven Testing
TechWell
 
Don't hate, automate. lessons learned from implementing continuous delivery
Don't hate, automate. lessons learned from implementing continuous deliveryDon't hate, automate. lessons learned from implementing continuous delivery
Don't hate, automate. lessons learned from implementing continuous delivery
Solano Labs
 
Automating android
Automating androidAutomating android
Automating android
Melvin Laguren
 

Similar to I, For One, Welcome Our New Robot Overlords (20)

Green Light for the Apps with Calaba.sh - DroidCon Paris 2014
Green Light for the Apps with Calaba.sh - DroidCon Paris 2014Green Light for the Apps with Calaba.sh - DroidCon Paris 2014
Green Light for the Apps with Calaba.sh - DroidCon Paris 2014
 
Android testing calabash
Android testing calabashAndroid testing calabash
Android testing calabash
 
BDD / cucumber /Capybara
BDD / cucumber /CapybaraBDD / cucumber /Capybara
BDD / cucumber /Capybara
 
Testing and Testable Code
Testing and Testable CodeTesting and Testable Code
Testing and Testable Code
 
Rubyconf2016 - Solving communication problems in distributed teams with BDD
Rubyconf2016 - Solving communication problems in distributed teams with BDDRubyconf2016 - Solving communication problems in distributed teams with BDD
Rubyconf2016 - Solving communication problems in distributed teams with BDD
 
Testdroid:
Testdroid: Testdroid:
Testdroid:
 
TDD - Ketan Soni
TDD - Ketan SoniTDD - Ketan Soni
TDD - Ketan Soni
 
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
 
BDD Primer
BDD PrimerBDD Primer
BDD Primer
 
Different Android Test Automation Frameworks - What Works You the Best?
Different Android Test Automation Frameworks - What Works You the Best?Different Android Test Automation Frameworks - What Works You the Best?
Different Android Test Automation Frameworks - What Works You the Best?
 
Behat - human-readable automated testing
Behat - human-readable automated testingBehat - human-readable automated testing
Behat - human-readable automated testing
 
Unit Test Your Database
Unit Test Your DatabaseUnit Test Your Database
Unit Test Your Database
 
Bridging the communication Gap & Continuous Delivery
Bridging the communication Gap & Continuous DeliveryBridging the communication Gap & Continuous Delivery
Bridging the communication Gap & Continuous Delivery
 
Uncovering breaking changes behind UI on mobile applications
Uncovering breaking changes behind UI on mobile applicationsUncovering breaking changes behind UI on mobile applications
Uncovering breaking changes behind UI on mobile applications
 
Cucumber & BDD
Cucumber & BDDCucumber & BDD
Cucumber & BDD
 
Behaviour driven infrastructure
Behaviour driven infrastructureBehaviour driven infrastructure
Behaviour driven infrastructure
 
Improve Testing with a Zone Defense
Improve Testing with a Zone DefenseImprove Testing with a Zone Defense
Improve Testing with a Zone Defense
 
Build the Right Regression Suite with Behavior-Driven Testing
Build the Right Regression Suite with Behavior-Driven TestingBuild the Right Regression Suite with Behavior-Driven Testing
Build the Right Regression Suite with Behavior-Driven Testing
 
Don't hate, automate. lessons learned from implementing continuous delivery
Don't hate, automate. lessons learned from implementing continuous deliveryDon't hate, automate. lessons learned from implementing continuous delivery
Don't hate, automate. lessons learned from implementing continuous delivery
 
Automating android
Automating androidAutomating android
Automating android
 

Recently uploaded

14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
ShulagnaSarkar2
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
zOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL DifferenceszOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL Differences
YousufSait3
 
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
kalichargn70th171
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
Rakesh Kumar R
 
Preparing Non - Technical Founders for Engaging a Tech Agency
Preparing Non - Technical Founders for Engaging  a  Tech AgencyPreparing Non - Technical Founders for Engaging  a  Tech Agency
Preparing Non - Technical Founders for Engaging a Tech Agency
ISH Technologies
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
YAML crash COURSE how to write yaml file for adding configuring details
YAML crash COURSE how to write yaml file for adding configuring detailsYAML crash COURSE how to write yaml file for adding configuring details
YAML crash COURSE how to write yaml file for adding configuring details
NishanthaBulumulla1
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
gapen1
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
XfilesPro
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
ToXSL Technologies
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
Bert Jan Schrijver
 
Liberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptxLiberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptx
Massimo Artizzu
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 

Recently uploaded (20)

14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
zOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL DifferenceszOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL Differences
 
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
 
Preparing Non - Technical Founders for Engaging a Tech Agency
Preparing Non - Technical Founders for Engaging  a  Tech AgencyPreparing Non - Technical Founders for Engaging  a  Tech Agency
Preparing Non - Technical Founders for Engaging a Tech Agency
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
YAML crash COURSE how to write yaml file for adding configuring details
YAML crash COURSE how to write yaml file for adding configuring detailsYAML crash COURSE how to write yaml file for adding configuring details
YAML crash COURSE how to write yaml file for adding configuring details
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
 
Liberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptxLiberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptx
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 

I, For One, Welcome Our New Robot Overlords

Editor's Notes

  1. (Wait on this slide for them to read the comic)
  2. I’ve noticed a trend in the industry, especially in mobile We used to have QA departments that were quite large
  3. Now they seem to be getting smaller and smaller. But our apps are getting bigger and bigger. We are consistently being asked to do more with fewer people.
  4. Testers must be in the office - Can’t test while in meetings - LOTS OF MEETINGS - Can’t really test overnight Troubles with repro - Relies on how well everyone understands the app - Relies on how good a storyteller people are - Relies on common terminology Flaky error cases - Backend servers unreliable; testers pick the worst time to test - Heisenbugs Takes lots of time - Sometimes have to get deep in the app - Only go as fast as they can tap
  5. Testers invent new ways - They go from here, to over there, to here again Exploit right away Can tell how aggravating - They do it over and over and over again - Ask for shortcuts
  6. Generally written in the language that the app is written in Use platform facilities for those (XCTest and JUnit)
  7. We will be focusing on Functional Tests for this presentation
  8. Someone saw Cucumber code, and thought it was just something that the boss wrote down and told the engineers what to do.
  9. Calabash Cloud Built on top of the platform specific frameworks mentioned earlier
  10. Features are groups of tests Mostly there for commenting purposes
  11. Scenarios are the individual tests
  12. Tests can be assigned tags. Calabash can be told to run subsets of tests based on their tags Applying a tag to a feature applies that to all Scenarios under it.
  13. Step definitions are selected by using a regex
  14. Possible to add tokens into the regex, and use them as parameters to the test
  15. Since it is just Ruby code, we can include helper methods and data stores
  16. Bad tests give you the illusion of confidence Bad tests require the same amount of time and effort to maintain, but don’t give you any meaningful info
  17. Want to know exactly what failed
  18. Don’t lose the forest for the trees
  19. Take advantage of tools to encapsulate lower level steps
  20. Tests should not break simply because a label was changed Tests should not break simply because the server took a second longer to return
  21. Tests should not be used as setup for other tests One test failing should not cause others to fail
  22. Tests run often provide more feedback Tests not run are not providing any information
  23. Test should not break merely because the internal implementation changed Don’t test private state
  24. Do not rewrite the algorithm in your test
  25. Verbose yet concise, flexible, independent, run often, and should know little about what they are testing