SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
I
1
EFFICIENT
MOBILE
AUTOMATION
UKRAINE QA #7
UkrainQA #7
Got an interesting expertise in testing of complex web
and mobile applications, REST services.
---
Hands-on experience with performance testing, creating
CI/CD pipelines, Docker, creating mobile farms, etc.
Senior Test Automation Engineer @ Cogniance
2
VITALII
TATARYNOV
Agenda
Part 1: Acquaintance
Introduction to mobile testing, overview of tools and approaches
Part 2: KISS your code
How to write simple and good tests
Part 3: Infrastructure
Introduction to mobile testing, overview of tools
Part 4: Cooperation with your team
Introduction to mobile testing, overview of tools
3
UkrainQA #7
I
4
MOBILE
PHONES ARE
PART OF OUR
LIFE
And application that written for smartphones are critical
important to be stable and work well
UkrainQA #7
Except of comprehensive automation planning
process, maintenance of your test-cases, manual
testing with all possible design technics, there are
three parts of go
Write
good
code
Collaborate
with your
team
Make a robust
scalable
infrastructure
5
THREE PARTS
OF SUCCESSFUL
AUTOMATION
KISS your code
6
UkrainQA #7
Code is compiled,
tested and works
as expected
Code is
commented and
documented
Code is readable
understandable,
for other team
members
Code is scalable,
reusable
7
WHAT IS
GOOD AUTOTEST?
KEEP IT SIMPLE
8
and stupid
UkrainQA #7
It’s not silver bullet, but could help in
particular situations
Don’t reinvent the wheel.
Reuse already written code if it is from
reliable sources
Patterns External Libraries New language features
9
HOW TO DO IT?
Don’t forget to learn new
UkrainQA #7 10
PATTERNS:
BUILDER
Could be used for building complex object in
an efficient and convenient way
UkrainQA #7 11
PATTERNS:
VALUE
OBJECT
It’s easier to operate with complex objects
instead of simple ones
UkrainQA #7 12
PATTERNS:
CHAINING
Sequential methods calling could be readable
for some cases, and it simulates user steps
UkrainQA #7 13
PATTERNS:
DATA
PROVIDER
Thanks to data provider, the Data Driven
approach could be used for tests
UkrainQA #7 14
PATTERNS:
OBJECT
POOL
Borrow unique objects without explicit
initializing
UkrainQA #7 15
PATTERNS:
STRATEGY
Implement different strategies for some
action to boost your tests
UkrainQA #7 16
PATTERNS:
STRATEGY
Implement different strategies for some
action to boost your tests
UkrainQA #7 17
EXTERNAL
LIBRARIES
A library is a collection of class definitions and its implementations.
The main benefits of creating library is simply code reuse.
UkrainQA #7 18
My personal choice
AssertJ
Fluent assertions for java
Selenide
Allows you to simplify your tests
Allure
An open-source framework designed to create test execution reports that are clear to everyone in the team
Slf4j
Simple Logging Facade for Java
REST-Assured
REST Assured is a Java library that provides a domain-specific language (DSL) for writing powerful, maintainable tests for RESTful APIs
LOMBOK, OKHTTP/RETFROFIT, GSON, APACHE COMMONS POOL, GOOGLE AUTOVALUE, ETC.
There are a lot of other cool libraries...
UkrainQA #7 19
LIBRARIES:
AssertJ
Flexible approach for assertions
UkrainQA #7 20
LIBRARIES:
Selenide
Selenide is not only for web tests
UkrainQA #7 21
LIBRARIES:
Selenide
It’s also applicable for mobile testing
UkrainQA #7 22
LIBRARIES:
Allure
Just really nice reports :)
UkrainQA #7 23
LIBRARIES:
Allure
Just really nice reports :)
UkrainQA #7 24
LIBRARIES:
Allure
Just really nice reports :)
A FEW MORE
THINGS
25
UkrainQA #7
I
26
DON’T
FORGET
ABOUT
LOGGING
UkrainQA #7 27
TIPS:
LOGGING
Logging helps you to figure out what is going
on in your tests
UkrainQA #7 28
NEW LANGUAGE
FEATURES
Stay tuned with new java features
UkrainQA #7 29
JAVA 11:
Local
Variable Type
Inference
Java 10 has introduced a new language
keyword var which optionally replaces the
type information when declaring local
variables (local means variable declarations
inside method bodies)
UkrainQA #7 30
JAVA 11:
HTTP Client
Java 9 introduced a new incubating HttpClient
API for dealing with HTTP requests. As of Java
11 this API is now final and available in the
standard libraries package java.net.
UkrainQA #7 31
JAVA 11:
Collections
Collections such as List, Set and Map have
been extended with new methods.
UkrainQA #7 32
JAVA 11:
New features
in streams
The methods dropWhile and takeWhile both
accept a predicate to determine which
elements to abandon from the stream
UkrainQA #7 33
JAVA 11:
New features
in Strings
One of the most basic classes String gets a
few helper methods for trimming or checking
whitespace and for streaming the lines of a
string
INFRASTRUCTURE
34
UkrainQA #7
To keep a finger on the pulse of our quality:
● We’ve got the testing results after each build
● We’ve got the results of regression testing
every night
● Data generation is automated as well
35
OUR PIPELINE
OVERVIEW 1. New app
build 2. Unit testing
3. Integration
testing
4. UI tests
smoke
after each build
5. Regression
every night
6. Report
by Allure
UkrainQA #7 36
APPIUM
vs
Espresso &
XCUITest
What’s to choose?
UkrainQA #7
Repository
We use Bitbucket as a
main repository
Unit &
Integration
Espresso and JUnit, classic
:)
UI tests
Appium + TestNG +
STF + Allure
37
OUR TOOLS
CI
We use Jenkins as our
Continuous integration
tool with multi branch
approach
UkrainQA #7 38
INFRA:
Jenkins
Blue Ocean
One of the most basic classes String gets a
few helper methods for trimming or checking
whitespace and for streaming the lines of a
string
UkrainQA #7 39
INFRA:
A branch for
an each issue
you work on
Then do all the implementation and testing
work on that branch. When that's complete,
submit a pull request, merge up, and release
whenever you're ready.
A BIT OF PRACTICE...
40
UkrainQA #7 41
INSTALL JENKINS
1. Go to https://jenkins.io/download/ and download
latest version
2. Install it
3. Proceed with wizard to finish the installation
process
4. Choose default plugins
5. Set credentials
6. Install BlueOcean plugin
UkrainQA #7
This is a sample text.
Insert your desired text here.
Lorem Ipsum
42
Creating
Blue Ocean Pipeline Jenkins
installed
01 Free configuration job for your unit tests
Create step for unit tests of
your mobile application
02Free configuration job for your unit tests
Create step for integration tests
for the mobile application
Your Company Name
03 It could be smoke tests package
Create UI tests step/job
04Connect your Git repository by creating
Merge it using BlueOcean plugin
05 It could be done by BlueOcean plugin in
Jenkins
Add Jenkinsfile to your main
branch
06Applicable for Android devices only
Install OpenSTF to control
devices
43
Your Company Name
Profit
07 To get nice reports
Add Allure
08This is a sample text.
Insert your desired text here.
Set scanning interval for your
multibranch job
44
UkrainQA #7 45
HOW TO INSTALL
OPEN STF
Requirements:
Node.js >= 6.9 (latest stable version I found node@8)
ADB properly set up ($ANDROID_HOME is set for your system)
RethinkDB >= 2.2
GraphicsMagick (for resizing screenshots)
ZeroMQ libraries installed
Protocol Buffers libraries installed
yasm installed (for compiling embedded libjpeg-turbo)
pkg-config so that Node.js can find the libraries
Note that you need these dependencies even if you've installed STF
directly from NPM, because they can't be included in the package.
On Mac OS, you can use homebrew to install most of the
dependencies:
brew install rethinkdb graphicsmagick zeromq protobuf yasm
pkg-config
As mentioned earlier, you must have all of the requirements installed
first. Then you can simply install via NPM:
npm install -g stf
UkrainQA #7 46
HOW TO RUN
OPENSTF
Launch database:
rethinkdb --http-port=8081
Launch stf:
stf local
WHAT ABOUT DOCKER?
47
UkrainQA #7 48
INSTALL JENKINS
Install docker, and then run command:
docker run 
--rm 
-u root 
-p 8080:8080 
-v jenkins-data:/var/jenkins_home 
-v /var/run/docker.sock:/var/run/docker.sock 
-v "$HOME":/home 
jenkinsci/blueocean
After that, proceed with wizard to complete installation
process
UkrainQA #7 49
HOW TO INSTALL
OPEN STF
clone https://github.com/nikosch86/stf-poc
Then change public ip in .env file
And run command:
docker-compose up -d —build
COMMUNICATION WITH
OUR TEAM
50
UkrainQA #7 51
PLAN YOUR
AUTOMATION COVERAGE
SPRINT 1
SPRINT 2
2%
4%
SPRINT 3
SPRINT 4
SPRINT 5
SPRINT 6
SPRINT 7
8%
18%
13%
25%
38%
Work closely with your team to plan an automation
coverage, to involve team into automation process
and you’ll get good results
UkrainQA #7
I
52
BRING THE
VALUE
And your team will be open for any help you need
Q&A
53

Contenu connexe

Tendances

Static code analysis
Static code analysisStatic code analysis
Static code analysisPrancer Io
 
The Right Tool for the Right Project
The Right Tool for the Right ProjectThe Right Tool for the Right Project
The Right Tool for the Right ProjectOri Bendet
 
EFL QA: Where Are We and Where Should We Go?
EFL QA: Where Are We and Where Should We Go?EFL QA: Where Are We and Where Should We Go?
EFL QA: Where Are We and Where Should We Go?Samsung Open Source Group
 
Track code quality with SonarQube - short version
Track code quality with SonarQube - short versionTrack code quality with SonarQube - short version
Track code quality with SonarQube - short versionDmytro Patserkovskyi
 
Sonar qube to impove code quality
Sonar qube   to impove code qualitySonar qube   to impove code quality
Sonar qube to impove code qualityMani Sarkar
 
Code Quality Lightning Talk
Code Quality Lightning TalkCode Quality Lightning Talk
Code Quality Lightning TalkJonathan Gregory
 
Robot framework - SAST Väst Q3
Robot framework - SAST Väst Q3Robot framework - SAST Väst Q3
Robot framework - SAST Väst Q3Anders Arnholm
 
Android Test Driven Development & Android Unit Testing
Android Test Driven Development & Android Unit TestingAndroid Test Driven Development & Android Unit Testing
Android Test Driven Development & Android Unit Testingmahmoud ramadan
 
Automation Open Source tools
Automation Open Source toolsAutomation Open Source tools
Automation Open Source toolsQA Club Kiev
 
Continuous inspection with Sonar
Continuous inspection with SonarContinuous inspection with Sonar
Continuous inspection with Sonargaudol
 
Build your first Laravel application
Build your first Laravel applicationBuild your first Laravel application
Build your first Laravel applicationGiannis Gasteratos
 
Continuous Inspection of Code Quality: SonarQube
Continuous Inspection of Code Quality: SonarQubeContinuous Inspection of Code Quality: SonarQube
Continuous Inspection of Code Quality: SonarQubeEmre Dündar
 
Make sure your code works
Make sure your code worksMake sure your code works
Make sure your code worksHenrik Skupin
 
Tracking your Technical Debt with Sonarqube
Tracking your Technical Debt with SonarqubeTracking your Technical Debt with Sonarqube
Tracking your Technical Debt with SonarqubePuppet
 

Tendances (20)

Static code analysis
Static code analysisStatic code analysis
Static code analysis
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
The Right Tool for the Right Project
The Right Tool for the Right ProjectThe Right Tool for the Right Project
The Right Tool for the Right Project
 
Sonarqube + Docker
Sonarqube + DockerSonarqube + Docker
Sonarqube + Docker
 
EFL QA: Where Are We and Where Should We Go?
EFL QA: Where Are We and Where Should We Go?EFL QA: Where Are We and Where Should We Go?
EFL QA: Where Are We and Where Should We Go?
 
Track code quality with SonarQube - short version
Track code quality with SonarQube - short versionTrack code quality with SonarQube - short version
Track code quality with SonarQube - short version
 
Sonar qube to impove code quality
Sonar qube   to impove code qualitySonar qube   to impove code quality
Sonar qube to impove code quality
 
Code Quality Lightning Talk
Code Quality Lightning TalkCode Quality Lightning Talk
Code Quality Lightning Talk
 
Robot framework - SAST Väst Q3
Robot framework - SAST Väst Q3Robot framework - SAST Väst Q3
Robot framework - SAST Väst Q3
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
Android Test Driven Development & Android Unit Testing
Android Test Driven Development & Android Unit TestingAndroid Test Driven Development & Android Unit Testing
Android Test Driven Development & Android Unit Testing
 
Automation Open Source tools
Automation Open Source toolsAutomation Open Source tools
Automation Open Source tools
 
Ja coco ignite
Ja coco igniteJa coco ignite
Ja coco ignite
 
Code metrics in PHP
Code metrics in PHPCode metrics in PHP
Code metrics in PHP
 
Continuous inspection with Sonar
Continuous inspection with SonarContinuous inspection with Sonar
Continuous inspection with Sonar
 
Build your first Laravel application
Build your first Laravel applicationBuild your first Laravel application
Build your first Laravel application
 
Continuous Inspection of Code Quality: SonarQube
Continuous Inspection of Code Quality: SonarQubeContinuous Inspection of Code Quality: SonarQube
Continuous Inspection of Code Quality: SonarQube
 
Make sure your code works
Make sure your code worksMake sure your code works
Make sure your code works
 
Sonar Review
Sonar ReviewSonar Review
Sonar Review
 
Tracking your Technical Debt with Sonarqube
Tracking your Technical Debt with SonarqubeTracking your Technical Debt with Sonarqube
Tracking your Technical Debt with Sonarqube
 

Similaire à Efficient mobile automation

When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?Niklas Heidloff
 
Containers and Virtualisation for Continuous Testing
Containers and Virtualisation for Continuous Testing   Containers and Virtualisation for Continuous Testing
Containers and Virtualisation for Continuous Testing sbbabu
 
Unit Testing in JavaScript
Unit Testing in JavaScriptUnit Testing in JavaScript
Unit Testing in JavaScriptRob Scaduto
 
Top 20 best automation testing tools
Top 20 best automation testing toolsTop 20 best automation testing tools
Top 20 best automation testing toolsQACraft
 
Testing cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTestTesting cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTestMicael Gallego
 
Review Paper on Online Java Compiler
Review Paper on Online Java CompilerReview Paper on Online Java Compiler
Review Paper on Online Java CompilerIRJET Journal
 
Synopsis on online shopping by sudeep singh
Synopsis on online shopping by  sudeep singhSynopsis on online shopping by  sudeep singh
Synopsis on online shopping by sudeep singhSudeep Singh
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development PipelineGlobalLogic Ukraine
 
Continuous Development Pipeline
Continuous Development PipelineContinuous Development Pipeline
Continuous Development PipelineIzzet Mustafaiev
 
Devops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftDevops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftYaniv cohen
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplateStanislav Petrov
 
Perforce on Tour 2015 - Optimising the Developer Pipeline: Deliver Faster & ...
Perforce on Tour 2015 -  Optimising the Developer Pipeline: Deliver Faster & ...Perforce on Tour 2015 -  Optimising the Developer Pipeline: Deliver Faster & ...
Perforce on Tour 2015 - Optimising the Developer Pipeline: Deliver Faster & ...Perforce
 
Code review automation and functional tests on Carrefour
Code review automation and functional tests on CarrefourCode review automation and functional tests on Carrefour
Code review automation and functional tests on CarrefourDenis Santos
 

Similaire à Efficient mobile automation (20)

When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?
 
Cypress for Testing
Cypress for TestingCypress for Testing
Cypress for Testing
 
Jenkins pipeline as code
Jenkins pipeline as codeJenkins pipeline as code
Jenkins pipeline as code
 
Containers and Virtualisation for Continuous Testing
Containers and Virtualisation for Continuous Testing   Containers and Virtualisation for Continuous Testing
Containers and Virtualisation for Continuous Testing
 
Unit Testing in JavaScript
Unit Testing in JavaScriptUnit Testing in JavaScript
Unit Testing in JavaScript
 
Top 20 best automation testing tools
Top 20 best automation testing toolsTop 20 best automation testing tools
Top 20 best automation testing tools
 
Testing cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTestTesting cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTest
 
Review Paper on Online Java Compiler
Review Paper on Online Java CompilerReview Paper on Online Java Compiler
Review Paper on Online Java Compiler
 
Code in the Cloud - Ghent - 20 February 2015
Code in the Cloud - Ghent - 20 February 2015Code in the Cloud - Ghent - 20 February 2015
Code in the Cloud - Ghent - 20 February 2015
 
CICD with Jenkins
CICD with JenkinsCICD with Jenkins
CICD with Jenkins
 
Synopsis on online shopping by sudeep singh
Synopsis on online shopping by  sudeep singhSynopsis on online shopping by  sudeep singh
Synopsis on online shopping by sudeep singh
 
All experiment of java
All experiment of javaAll experiment of java
All experiment of java
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 
Kirti_Exp_Datacom_testing
Kirti_Exp_Datacom_testingKirti_Exp_Datacom_testing
Kirti_Exp_Datacom_testing
 
Continuous Development Pipeline
Continuous Development PipelineContinuous Development Pipeline
Continuous Development Pipeline
 
Devops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftDevops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShift
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
 
Perforce on Tour 2015 - Optimising the Developer Pipeline: Deliver Faster & ...
Perforce on Tour 2015 -  Optimising the Developer Pipeline: Deliver Faster & ...Perforce on Tour 2015 -  Optimising the Developer Pipeline: Deliver Faster & ...
Perforce on Tour 2015 - Optimising the Developer Pipeline: Deliver Faster & ...
 
Resume_Shanthi
Resume_ShanthiResume_Shanthi
Resume_Shanthi
 
Code review automation and functional tests on Carrefour
Code review automation and functional tests on CarrefourCode review automation and functional tests on Carrefour
Code review automation and functional tests on Carrefour
 

Dernier

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 

Dernier (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 

Efficient mobile automation

  • 2. UkrainQA #7 Got an interesting expertise in testing of complex web and mobile applications, REST services. --- Hands-on experience with performance testing, creating CI/CD pipelines, Docker, creating mobile farms, etc. Senior Test Automation Engineer @ Cogniance 2 VITALII TATARYNOV
  • 3. Agenda Part 1: Acquaintance Introduction to mobile testing, overview of tools and approaches Part 2: KISS your code How to write simple and good tests Part 3: Infrastructure Introduction to mobile testing, overview of tools Part 4: Cooperation with your team Introduction to mobile testing, overview of tools 3
  • 4. UkrainQA #7 I 4 MOBILE PHONES ARE PART OF OUR LIFE And application that written for smartphones are critical important to be stable and work well
  • 5. UkrainQA #7 Except of comprehensive automation planning process, maintenance of your test-cases, manual testing with all possible design technics, there are three parts of go Write good code Collaborate with your team Make a robust scalable infrastructure 5 THREE PARTS OF SUCCESSFUL AUTOMATION
  • 7. UkrainQA #7 Code is compiled, tested and works as expected Code is commented and documented Code is readable understandable, for other team members Code is scalable, reusable 7 WHAT IS GOOD AUTOTEST?
  • 9. UkrainQA #7 It’s not silver bullet, but could help in particular situations Don’t reinvent the wheel. Reuse already written code if it is from reliable sources Patterns External Libraries New language features 9 HOW TO DO IT? Don’t forget to learn new
  • 10. UkrainQA #7 10 PATTERNS: BUILDER Could be used for building complex object in an efficient and convenient way
  • 11. UkrainQA #7 11 PATTERNS: VALUE OBJECT It’s easier to operate with complex objects instead of simple ones
  • 12. UkrainQA #7 12 PATTERNS: CHAINING Sequential methods calling could be readable for some cases, and it simulates user steps
  • 13. UkrainQA #7 13 PATTERNS: DATA PROVIDER Thanks to data provider, the Data Driven approach could be used for tests
  • 14. UkrainQA #7 14 PATTERNS: OBJECT POOL Borrow unique objects without explicit initializing
  • 15. UkrainQA #7 15 PATTERNS: STRATEGY Implement different strategies for some action to boost your tests
  • 16. UkrainQA #7 16 PATTERNS: STRATEGY Implement different strategies for some action to boost your tests
  • 17. UkrainQA #7 17 EXTERNAL LIBRARIES A library is a collection of class definitions and its implementations. The main benefits of creating library is simply code reuse.
  • 18. UkrainQA #7 18 My personal choice AssertJ Fluent assertions for java Selenide Allows you to simplify your tests Allure An open-source framework designed to create test execution reports that are clear to everyone in the team Slf4j Simple Logging Facade for Java REST-Assured REST Assured is a Java library that provides a domain-specific language (DSL) for writing powerful, maintainable tests for RESTful APIs LOMBOK, OKHTTP/RETFROFIT, GSON, APACHE COMMONS POOL, GOOGLE AUTOVALUE, ETC. There are a lot of other cool libraries...
  • 20. UkrainQA #7 20 LIBRARIES: Selenide Selenide is not only for web tests
  • 21. UkrainQA #7 21 LIBRARIES: Selenide It’s also applicable for mobile testing
  • 22. UkrainQA #7 22 LIBRARIES: Allure Just really nice reports :)
  • 23. UkrainQA #7 23 LIBRARIES: Allure Just really nice reports :)
  • 24. UkrainQA #7 24 LIBRARIES: Allure Just really nice reports :)
  • 27. UkrainQA #7 27 TIPS: LOGGING Logging helps you to figure out what is going on in your tests
  • 28. UkrainQA #7 28 NEW LANGUAGE FEATURES Stay tuned with new java features
  • 29. UkrainQA #7 29 JAVA 11: Local Variable Type Inference Java 10 has introduced a new language keyword var which optionally replaces the type information when declaring local variables (local means variable declarations inside method bodies)
  • 30. UkrainQA #7 30 JAVA 11: HTTP Client Java 9 introduced a new incubating HttpClient API for dealing with HTTP requests. As of Java 11 this API is now final and available in the standard libraries package java.net.
  • 31. UkrainQA #7 31 JAVA 11: Collections Collections such as List, Set and Map have been extended with new methods.
  • 32. UkrainQA #7 32 JAVA 11: New features in streams The methods dropWhile and takeWhile both accept a predicate to determine which elements to abandon from the stream
  • 33. UkrainQA #7 33 JAVA 11: New features in Strings One of the most basic classes String gets a few helper methods for trimming or checking whitespace and for streaming the lines of a string
  • 35. UkrainQA #7 To keep a finger on the pulse of our quality: ● We’ve got the testing results after each build ● We’ve got the results of regression testing every night ● Data generation is automated as well 35 OUR PIPELINE OVERVIEW 1. New app build 2. Unit testing 3. Integration testing 4. UI tests smoke after each build 5. Regression every night 6. Report by Allure
  • 36. UkrainQA #7 36 APPIUM vs Espresso & XCUITest What’s to choose?
  • 37. UkrainQA #7 Repository We use Bitbucket as a main repository Unit & Integration Espresso and JUnit, classic :) UI tests Appium + TestNG + STF + Allure 37 OUR TOOLS CI We use Jenkins as our Continuous integration tool with multi branch approach
  • 38. UkrainQA #7 38 INFRA: Jenkins Blue Ocean One of the most basic classes String gets a few helper methods for trimming or checking whitespace and for streaming the lines of a string
  • 39. UkrainQA #7 39 INFRA: A branch for an each issue you work on Then do all the implementation and testing work on that branch. When that's complete, submit a pull request, merge up, and release whenever you're ready.
  • 40. A BIT OF PRACTICE... 40
  • 41. UkrainQA #7 41 INSTALL JENKINS 1. Go to https://jenkins.io/download/ and download latest version 2. Install it 3. Proceed with wizard to finish the installation process 4. Choose default plugins 5. Set credentials 6. Install BlueOcean plugin
  • 42. UkrainQA #7 This is a sample text. Insert your desired text here. Lorem Ipsum 42 Creating Blue Ocean Pipeline Jenkins installed 01 Free configuration job for your unit tests Create step for unit tests of your mobile application 02Free configuration job for your unit tests Create step for integration tests for the mobile application
  • 43. Your Company Name 03 It could be smoke tests package Create UI tests step/job 04Connect your Git repository by creating Merge it using BlueOcean plugin 05 It could be done by BlueOcean plugin in Jenkins Add Jenkinsfile to your main branch 06Applicable for Android devices only Install OpenSTF to control devices 43
  • 44. Your Company Name Profit 07 To get nice reports Add Allure 08This is a sample text. Insert your desired text here. Set scanning interval for your multibranch job 44
  • 45. UkrainQA #7 45 HOW TO INSTALL OPEN STF Requirements: Node.js >= 6.9 (latest stable version I found node@8) ADB properly set up ($ANDROID_HOME is set for your system) RethinkDB >= 2.2 GraphicsMagick (for resizing screenshots) ZeroMQ libraries installed Protocol Buffers libraries installed yasm installed (for compiling embedded libjpeg-turbo) pkg-config so that Node.js can find the libraries Note that you need these dependencies even if you've installed STF directly from NPM, because they can't be included in the package. On Mac OS, you can use homebrew to install most of the dependencies: brew install rethinkdb graphicsmagick zeromq protobuf yasm pkg-config As mentioned earlier, you must have all of the requirements installed first. Then you can simply install via NPM: npm install -g stf
  • 46. UkrainQA #7 46 HOW TO RUN OPENSTF Launch database: rethinkdb --http-port=8081 Launch stf: stf local
  • 48. UkrainQA #7 48 INSTALL JENKINS Install docker, and then run command: docker run --rm -u root -p 8080:8080 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v "$HOME":/home jenkinsci/blueocean After that, proceed with wizard to complete installation process
  • 49. UkrainQA #7 49 HOW TO INSTALL OPEN STF clone https://github.com/nikosch86/stf-poc Then change public ip in .env file And run command: docker-compose up -d —build
  • 51. UkrainQA #7 51 PLAN YOUR AUTOMATION COVERAGE SPRINT 1 SPRINT 2 2% 4% SPRINT 3 SPRINT 4 SPRINT 5 SPRINT 6 SPRINT 7 8% 18% 13% 25% 38% Work closely with your team to plan an automation coverage, to involve team into automation process and you’ll get good results
  • 52. UkrainQA #7 I 52 BRING THE VALUE And your team will be open for any help you need