SlideShare a Scribd company logo
Automated
Integration
Regression Testing
Michal Oravec
2
 Testing Layers
 Test Projects
 Jenkins/Docker Runs
 Typical Test
 Challenges
Content
3
Testing Layers
 Gherkin meta-language (behave Python library)
 Python code using (Germanium API Python library)
 Germanium itself handling browsers (includes Selenium
Python library and web-drivers)
4
Testing Layers
 Gherkin meta-language (behave Python library)
‒ Basically almost English free text test case executable by human.
‒ Simple text files are used called features. The feature can contain one
or more scenarios (test cases) and each scenario may be executed one
or more times if there are more test data sets available.
‒ The scenarios are self-contained integration “tests”.
‒ behave: http://pythonhosted.org/behave/
Single test step (sentence)
Single Python
function gets
called
5
Testing Layers
 Gherkin meta-language (behave Python library)
‒ We tend to have one scenario per one feature (best practice).
‒ We store the feature files in repository along the Python testing code.
‒ The sentences (test steps) are read by a Python library called “behave”
that links them with their implementation and executes them one by
one.
6
Testing Layers
 Gherkin meta-language (behave Python library)
‒ There is very little structure – feature name and scenario name +
keywords Given / When / Then.
‒ “When” marks action and “Then” marks assertion (not necessary – just
best practice)
7
Testing Layers
 Gherkin meta-language (behave Python library)
‒ Note convention for providing data used for reusing steps (=
sentences) in more tests.
‒ Same convention enables the same test to run with multiple data sets
– note part “Examples”. Each line represents a test run.
8
Testing Layers
 Python code using (Germanium API Python library)
‒ Each sentence (test step) is mapped to one Python function.
‒ These may use other functions, mappings of elements (selectors of
buttons, dialogs, parts of text…) and generally anything doable in
Python and/or Germanium API.
‒ This layer is simply code in Python.
‒ We use and depend fully on the API
https://germaniumhq.com/documentation/
9
Testing Layers
 Python code using (Germanium API Python library)
‒ Example:
10
Testing Layers
 Germanium itself handling browsers
(includes/integrates Selenium Python library and
web-drivers)
‒ Basically that’s it because we do not directly use Selenium.
‒ We write / customize stuff only for Gherkin/behave and
Germanium/Python, this layer just does the job in background if
all goes well.
11
Test Projects
12
 Example test projects
for our apps called
Workplace and
Administrator
Test Projects
12
13
Jenkins/Docker Runs
14
Jenkins/Docker Runs
‒ Jenkins part of running tests is more technical and/or complicated.
‒ In our case there are two Jenkins jobs that run the whole tests suite
for the two tested apps against whatever is currently deployed on test
machine.
‒ These jobs are triggered at certain time generally every night
regardless of other jobs/builds/deployments.
‒ Typically this time is when we expect or suppose that the build and
deployment to test machine was already done.
15
Jenkins/Docker Runs
‒ The how/where of the test run is complicated/technical. Somehow a
virtual environment (Docker) is created with the specified browser, all
the tests are fetched from repository and executed against .90 test
server running the recently built and deployed web-application.
‒ There is very little configuration in the Jenkins GUI – most is hidden in
the linked Jenkinsfile stored in the repository
16
Jenkins/Docker Runs
‒ More necessary details how to create the environment from which the
tests will be run are hidden inside the “Dockerfile” (in repository):
17
Jenkins/Docker Runs
‒ The output (log) is available in simple text form (very messy, not
structured) in the Jenkins job output to potentially analyze by a
person.
‒ One way to analyze failures is to rerun failed tests locally (from Idea)
and/or manually (by hand).
18
Typical Test
19
Typical Test
‒ The test cases are generally rather short and simple.
‒ Generally it is a series of actions (click link/button) and assertions
(expect certain text is on the page / in a dialog or expect certain page
to load or dialog to show up)
‒ Example for our Workplace application: Login -> check status and
version if it is even reasonable to continue -> run Business Case ->
check if Human Task opened correctly and if it has all the expected
content -> continue to Debug Human Task and check content ->
finish Business Case -> Logout.
‒ Challenge: It is difficult, error-prone and time consuming to check that
certain actions cause a new page to load with a random content when
it takes a random relatively long time.
20
Typical Test
‒ Having short and simple and static TCs seems to be best practice -
one would argue that this is good / sufficient approach.
‒ Best practice: One should expect fixed / static texts and values and
never compute expected values (never replicate features of the tested
app).
‒ Automated integration regression testing should be like a sanity check
that really basic feature still work and that stuff generally opens and
loads as expected every day after nightly deployment.
‒ You don’t do it to find bugs – more like to:
 avoid testing the same basic stuff every day
 have some confidence in the morning that generally stuff works
 free real people to do more investigative testing
21
Challenges
22
Challenges
1. Maintenance.
2. Random technical failures in Jenkins/Docker run not replicable
locally.
3. Jenkins run output is not structured – it is very difficult to analyze
and offers almost no help in determining which tests failed and why.
4. Running the same tests on other browsers (Firefox, recent IE)
5. Marking tests that fail because known real failures - bugs.
6. Found bugs are ignored long-term – ”fix” the tests?
7. Tests are dependent on constant state of “public” and constantly
changing environment (application settings, content/resource
storage)
8. Tests too slow. Faster execution causes random failures.
9. Difficult/complicated to configure Jenkins job/run to execute only a
subset of all tests in a project.
23
Conclusion
‒ Integration level of automated regression testing in web-frontend
area is useful but benefits depend on many factors
‒ It is always an open and valid question how to automate, how much
to automate, who should automate and also if to automate at all
Thank you for your attention.

More Related Content

What's hot

Robot framework
Robot frameworkRobot framework
Testing with Jenkins, Selenium and Continuous Deployment
Testing with Jenkins, Selenium and Continuous DeploymentTesting with Jenkins, Selenium and Continuous Deployment
Testing with Jenkins, Selenium and Continuous Deployment
Max Klymyshyn
 
JavaCro'14 - Test Automation using RobotFramework Libraries – Stojan Peshov
JavaCro'14 - Test Automation using RobotFramework Libraries – Stojan PeshovJavaCro'14 - Test Automation using RobotFramework Libraries – Stojan Peshov
JavaCro'14 - Test Automation using RobotFramework Libraries – Stojan Peshov
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Apache maven, a software project management tool
Apache maven, a software project management toolApache maven, a software project management tool
Apache maven, a software project management tool
Renato Primavera
 
Python in Test automation
Python in Test automationPython in Test automation
Python in Test automation
Krishnana Sreeraman
 
Robot framework
Robot frameworkRobot framework
Robot framework
Rochak Bhalla
 
Integration Group - Robot Framework
Integration Group - Robot Framework Integration Group - Robot Framework
Integration Group - Robot Framework
OpenDaylight
 
CI / CD w/ Codeception
CI / CD w/ CodeceptionCI / CD w/ Codeception
CI / CD w/ Codeception
Tudor Barbu
 
Introduction to Robot Framework
Introduction to Robot FrameworkIntroduction to Robot Framework
Introduction to Robot Framework
Somkiat Puisungnoen
 
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
 
Testing PHP with Codeception
Testing PHP with CodeceptionTesting PHP with Codeception
Testing PHP with Codeception
John Paul Ada
 
Robot Framework Introduction
Robot Framework IntroductionRobot Framework Introduction
Robot Framework Introduction
Pekka Klärck
 
Top trending selenium interview questions
Top trending selenium interview questionsTop trending selenium interview questions
Top trending selenium interview questions
Rock Interview
 
Scripting robot
Scripting robotScripting robot
Scripting robot
Chonlasith Jucksriporn
 
Test automation with php codeception
Test automation with php codeceptionTest automation with php codeception
Test automation with php codeception
buddhieash
 
ATDD Using Robot Framework
ATDD Using Robot FrameworkATDD Using Robot Framework
ATDD Using Robot Framework
Pekka Klärck
 
Network Protocol Testing Using Robot Framework
Network Protocol Testing Using Robot FrameworkNetwork Protocol Testing Using Robot Framework
Network Protocol Testing Using Robot Framework
Payal Jain
 
Codeception: introduction to php testing
Codeception: introduction to php testingCodeception: introduction to php testing
Codeception: introduction to php testing
Engineor
 
Acceptance testing in php with Codeception - Techmeetup Edinburgh
Acceptance testing in php with Codeception - Techmeetup EdinburghAcceptance testing in php with Codeception - Techmeetup Edinburgh
Acceptance testing in php with Codeception - Techmeetup Edinburgh
Engineor
 
Selenium Automation Testing Interview Questions And Answers
Selenium Automation Testing Interview Questions And AnswersSelenium Automation Testing Interview Questions And Answers
Selenium Automation Testing Interview Questions And Answers
Ajit Jadhav
 

What's hot (20)

Robot framework
Robot frameworkRobot framework
Robot framework
 
Testing with Jenkins, Selenium and Continuous Deployment
Testing with Jenkins, Selenium and Continuous DeploymentTesting with Jenkins, Selenium and Continuous Deployment
Testing with Jenkins, Selenium and Continuous Deployment
 
JavaCro'14 - Test Automation using RobotFramework Libraries – Stojan Peshov
JavaCro'14 - Test Automation using RobotFramework Libraries – Stojan PeshovJavaCro'14 - Test Automation using RobotFramework Libraries – Stojan Peshov
JavaCro'14 - Test Automation using RobotFramework Libraries – Stojan Peshov
 
Apache maven, a software project management tool
Apache maven, a software project management toolApache maven, a software project management tool
Apache maven, a software project management tool
 
Python in Test automation
Python in Test automationPython in Test automation
Python in Test automation
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
Integration Group - Robot Framework
Integration Group - Robot Framework Integration Group - Robot Framework
Integration Group - Robot Framework
 
CI / CD w/ Codeception
CI / CD w/ CodeceptionCI / CD w/ Codeception
CI / CD w/ Codeception
 
Introduction to Robot Framework
Introduction to Robot FrameworkIntroduction to Robot Framework
Introduction to 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
 
Testing PHP with Codeception
Testing PHP with CodeceptionTesting PHP with Codeception
Testing PHP with Codeception
 
Robot Framework Introduction
Robot Framework IntroductionRobot Framework Introduction
Robot Framework Introduction
 
Top trending selenium interview questions
Top trending selenium interview questionsTop trending selenium interview questions
Top trending selenium interview questions
 
Scripting robot
Scripting robotScripting robot
Scripting robot
 
Test automation with php codeception
Test automation with php codeceptionTest automation with php codeception
Test automation with php codeception
 
ATDD Using Robot Framework
ATDD Using Robot FrameworkATDD Using Robot Framework
ATDD Using Robot Framework
 
Network Protocol Testing Using Robot Framework
Network Protocol Testing Using Robot FrameworkNetwork Protocol Testing Using Robot Framework
Network Protocol Testing Using Robot Framework
 
Codeception: introduction to php testing
Codeception: introduction to php testingCodeception: introduction to php testing
Codeception: introduction to php testing
 
Acceptance testing in php with Codeception - Techmeetup Edinburgh
Acceptance testing in php with Codeception - Techmeetup EdinburghAcceptance testing in php with Codeception - Techmeetup Edinburgh
Acceptance testing in php with Codeception - Techmeetup Edinburgh
 
Selenium Automation Testing Interview Questions And Answers
Selenium Automation Testing Interview Questions And AnswersSelenium Automation Testing Interview Questions And Answers
Selenium Automation Testing Interview Questions And Answers
 

Similar to Automated Integration Regression Testing

Maven: Managing Software Projects for Repeatable Results
Maven: Managing Software Projects for Repeatable ResultsMaven: Managing Software Projects for Repeatable Results
Maven: Managing Software Projects for Repeatable Results
Steve Keener
 
Testy dymne, integracyjne i jednostkowe w Laravel
Testy dymne, integracyjne i jednostkowe w LaravelTesty dymne, integracyjne i jednostkowe w Laravel
Testy dymne, integracyjne i jednostkowe w Laravel
Laravel Poland MeetUp
 
Selenium Testing
Selenium Testing Selenium Testing
Selenium Testing
Shreshtt Bhatt
 
Gherkin /BDD intro
Gherkin /BDD introGherkin /BDD intro
Testing 101
Testing 101Testing 101
Testing 101
Noam Barkai
 
Testing Java Web Apps With Selenium
Testing Java Web Apps With SeleniumTesting Java Web Apps With Selenium
Testing Java Web Apps With Selenium
Marakana Inc.
 
Cypress Testing.pptx
Cypress Testing.pptxCypress Testing.pptx
Cypress Testing.pptx
JasmeenShrestha
 
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Ondřej Machulda
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-AppsSelenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
chrisb206 chrisb206
 
Hadoop testing workshop - july 2013
Hadoop testing workshop - july 2013Hadoop testing workshop - july 2013
Hadoop testing workshop - july 2013
Ophir Cohen
 
Automation using ibm rft
Automation using ibm rftAutomation using ibm rft
Automation using ibm rft
Prashant Chaudhary
 
10071756.ppt
10071756.ppt10071756.ppt
10071756.ppt
Rohit846825
 
190711_Testbirds_Selenium_eclipsecon_FINAL_0.ppt
190711_Testbirds_Selenium_eclipsecon_FINAL_0.ppt190711_Testbirds_Selenium_eclipsecon_FINAL_0.ppt
190711_Testbirds_Selenium_eclipsecon_FINAL_0.ppt
NaviAningi
 
KKSD_Testbirds_Selenium_eclipsecon_FINAL_0.ppt
KKSD_Testbirds_Selenium_eclipsecon_FINAL_0.pptKKSD_Testbirds_Selenium_eclipsecon_FINAL_0.ppt
KKSD_Testbirds_Selenium_eclipsecon_FINAL_0.ppt
Kiran Kumar SD
 
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Sauce Labs
 
Fp201 unit1 1
Fp201 unit1 1Fp201 unit1 1
Fp201 unit1 1
rohassanie
 
Hybrid automation framework
Hybrid automation frameworkHybrid automation framework
Hybrid automation framework
doai tran
 
Frontend testing of (legacy) websites
Frontend testing of (legacy) websitesFrontend testing of (legacy) websites
Frontend testing of (legacy) websites
Michael Kubovic
 
Selenium IDE and Extensions
Selenium IDE and ExtensionsSelenium IDE and Extensions
Selenium IDE and Extensions
Yana Altunyan
 
Selenium online training
Selenium online trainingSelenium online training
Selenium online training
mindmajixtrainings
 

Similar to Automated Integration Regression Testing (20)

Maven: Managing Software Projects for Repeatable Results
Maven: Managing Software Projects for Repeatable ResultsMaven: Managing Software Projects for Repeatable Results
Maven: Managing Software Projects for Repeatable Results
 
Testy dymne, integracyjne i jednostkowe w Laravel
Testy dymne, integracyjne i jednostkowe w LaravelTesty dymne, integracyjne i jednostkowe w Laravel
Testy dymne, integracyjne i jednostkowe w Laravel
 
Selenium Testing
Selenium Testing Selenium Testing
Selenium Testing
 
Gherkin /BDD intro
Gherkin /BDD introGherkin /BDD intro
Gherkin /BDD intro
 
Testing 101
Testing 101Testing 101
Testing 101
 
Testing Java Web Apps With Selenium
Testing Java Web Apps With SeleniumTesting Java Web Apps With Selenium
Testing Java Web Apps With Selenium
 
Cypress Testing.pptx
Cypress Testing.pptxCypress Testing.pptx
Cypress Testing.pptx
 
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-AppsSelenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
 
Hadoop testing workshop - july 2013
Hadoop testing workshop - july 2013Hadoop testing workshop - july 2013
Hadoop testing workshop - july 2013
 
Automation using ibm rft
Automation using ibm rftAutomation using ibm rft
Automation using ibm rft
 
10071756.ppt
10071756.ppt10071756.ppt
10071756.ppt
 
190711_Testbirds_Selenium_eclipsecon_FINAL_0.ppt
190711_Testbirds_Selenium_eclipsecon_FINAL_0.ppt190711_Testbirds_Selenium_eclipsecon_FINAL_0.ppt
190711_Testbirds_Selenium_eclipsecon_FINAL_0.ppt
 
KKSD_Testbirds_Selenium_eclipsecon_FINAL_0.ppt
KKSD_Testbirds_Selenium_eclipsecon_FINAL_0.pptKKSD_Testbirds_Selenium_eclipsecon_FINAL_0.ppt
KKSD_Testbirds_Selenium_eclipsecon_FINAL_0.ppt
 
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
 
Fp201 unit1 1
Fp201 unit1 1Fp201 unit1 1
Fp201 unit1 1
 
Hybrid automation framework
Hybrid automation frameworkHybrid automation framework
Hybrid automation framework
 
Frontend testing of (legacy) websites
Frontend testing of (legacy) websitesFrontend testing of (legacy) websites
Frontend testing of (legacy) websites
 
Selenium IDE and Extensions
Selenium IDE and ExtensionsSelenium IDE and Extensions
Selenium IDE and Extensions
 
Selenium online training
Selenium online trainingSelenium online training
Selenium online training
 

Recently uploaded

The Role of DevOps in Digital Transformation.pdf
The Role of DevOps in Digital Transformation.pdfThe Role of DevOps in Digital Transformation.pdf
The Role of DevOps in Digital Transformation.pdf
mohitd6
 
Streamlining End-to-End Testing Automation
Streamlining End-to-End Testing AutomationStreamlining End-to-End Testing Automation
Streamlining End-to-End Testing Automation
Anand Bagmar
 
The Ultimate Guide to Top 36 DevOps Testing Tools for 2024.pdf
The Ultimate Guide to Top 36 DevOps Testing Tools for 2024.pdfThe Ultimate Guide to Top 36 DevOps Testing Tools for 2024.pdf
The Ultimate Guide to Top 36 DevOps Testing Tools for 2024.pdf
kalichargn70th171
 
Building the Ideal CI-CD Pipeline_ Achieving Visual Perfection
Building the Ideal CI-CD Pipeline_ Achieving Visual PerfectionBuilding the Ideal CI-CD Pipeline_ Achieving Visual Perfection
Building the Ideal CI-CD Pipeline_ Achieving Visual Perfection
Applitools
 
Trailhead Talks_ Journey of an All-Star Ranger .pptx
Trailhead Talks_ Journey of an All-Star Ranger .pptxTrailhead Talks_ Journey of an All-Star Ranger .pptx
Trailhead Talks_ Journey of an All-Star Ranger .pptx
ImtiazBinMohiuddin
 
Boost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management AppsBoost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management Apps
Jhone kinadey
 
42 Ways to Generate Real Estate Leads - Sellxpert
42 Ways to Generate Real Estate Leads - Sellxpert42 Ways to Generate Real Estate Leads - Sellxpert
42 Ways to Generate Real Estate Leads - Sellxpert
vaishalijagtap12
 
Folding Cheat Sheet #6 - sixth in a series
Folding Cheat Sheet #6 - sixth in a seriesFolding Cheat Sheet #6 - sixth in a series
Folding Cheat Sheet #6 - sixth in a series
Philip Schwarz
 
Call Girls Bangalore🔥7023059433🔥Best Profile Escorts in Bangalore Available 24/7
Call Girls Bangalore🔥7023059433🔥Best Profile Escorts in Bangalore Available 24/7Call Girls Bangalore🔥7023059433🔥Best Profile Escorts in Bangalore Available 24/7
Call Girls Bangalore🔥7023059433🔥Best Profile Escorts in Bangalore Available 24/7
manji sharman06
 
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Paul Brebner
 
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data PlatformAlluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio, Inc.
 
Best Practices & Tips for a Successful Odoo ERP Implementation
Best Practices & Tips for a Successful Odoo ERP ImplementationBest Practices & Tips for a Successful Odoo ERP Implementation
Best Practices & Tips for a Successful Odoo ERP Implementation
Envertis Software Solutions
 
Going AOT: Everything you need to know about GraalVM for Java applications
Going AOT: Everything you need to know about GraalVM for Java applicationsGoing AOT: Everything you need to know about GraalVM for Java applications
Going AOT: Everything you need to know about GraalVM for Java applications
Alina Yurenko
 
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISDECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
Tier1 app
 
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
kalichargn70th171
 
What’s new in VictoriaMetrics - Q2 2024 Update
What’s new in VictoriaMetrics - Q2 2024 UpdateWhat’s new in VictoriaMetrics - Q2 2024 Update
What’s new in VictoriaMetrics - Q2 2024 Update
VictoriaMetrics
 
Stork Product Overview: An AI-Powered Autonomous Delivery Fleet
Stork Product Overview: An AI-Powered Autonomous Delivery FleetStork Product Overview: An AI-Powered Autonomous Delivery Fleet
Stork Product Overview: An AI-Powered Autonomous Delivery Fleet
Vince Scalabrino
 
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptxOperational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
sandeepmenon62
 
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
The Third Creative Media
 
Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...
Paul Brebner
 

Recently uploaded (20)

The Role of DevOps in Digital Transformation.pdf
The Role of DevOps in Digital Transformation.pdfThe Role of DevOps in Digital Transformation.pdf
The Role of DevOps in Digital Transformation.pdf
 
Streamlining End-to-End Testing Automation
Streamlining End-to-End Testing AutomationStreamlining End-to-End Testing Automation
Streamlining End-to-End Testing Automation
 
The Ultimate Guide to Top 36 DevOps Testing Tools for 2024.pdf
The Ultimate Guide to Top 36 DevOps Testing Tools for 2024.pdfThe Ultimate Guide to Top 36 DevOps Testing Tools for 2024.pdf
The Ultimate Guide to Top 36 DevOps Testing Tools for 2024.pdf
 
Building the Ideal CI-CD Pipeline_ Achieving Visual Perfection
Building the Ideal CI-CD Pipeline_ Achieving Visual PerfectionBuilding the Ideal CI-CD Pipeline_ Achieving Visual Perfection
Building the Ideal CI-CD Pipeline_ Achieving Visual Perfection
 
Trailhead Talks_ Journey of an All-Star Ranger .pptx
Trailhead Talks_ Journey of an All-Star Ranger .pptxTrailhead Talks_ Journey of an All-Star Ranger .pptx
Trailhead Talks_ Journey of an All-Star Ranger .pptx
 
Boost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management AppsBoost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management Apps
 
42 Ways to Generate Real Estate Leads - Sellxpert
42 Ways to Generate Real Estate Leads - Sellxpert42 Ways to Generate Real Estate Leads - Sellxpert
42 Ways to Generate Real Estate Leads - Sellxpert
 
Folding Cheat Sheet #6 - sixth in a series
Folding Cheat Sheet #6 - sixth in a seriesFolding Cheat Sheet #6 - sixth in a series
Folding Cheat Sheet #6 - sixth in a series
 
Call Girls Bangalore🔥7023059433🔥Best Profile Escorts in Bangalore Available 24/7
Call Girls Bangalore🔥7023059433🔥Best Profile Escorts in Bangalore Available 24/7Call Girls Bangalore🔥7023059433🔥Best Profile Escorts in Bangalore Available 24/7
Call Girls Bangalore🔥7023059433🔥Best Profile Escorts in Bangalore Available 24/7
 
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
 
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data PlatformAlluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
 
Best Practices & Tips for a Successful Odoo ERP Implementation
Best Practices & Tips for a Successful Odoo ERP ImplementationBest Practices & Tips for a Successful Odoo ERP Implementation
Best Practices & Tips for a Successful Odoo ERP Implementation
 
Going AOT: Everything you need to know about GraalVM for Java applications
Going AOT: Everything you need to know about GraalVM for Java applicationsGoing AOT: Everything you need to know about GraalVM for Java applications
Going AOT: Everything you need to know about GraalVM for Java applications
 
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISDECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
 
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
 
What’s new in VictoriaMetrics - Q2 2024 Update
What’s new in VictoriaMetrics - Q2 2024 UpdateWhat’s new in VictoriaMetrics - Q2 2024 Update
What’s new in VictoriaMetrics - Q2 2024 Update
 
Stork Product Overview: An AI-Powered Autonomous Delivery Fleet
Stork Product Overview: An AI-Powered Autonomous Delivery FleetStork Product Overview: An AI-Powered Autonomous Delivery Fleet
Stork Product Overview: An AI-Powered Autonomous Delivery Fleet
 
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptxOperational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
 
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
 
Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...
 

Automated Integration Regression Testing

  • 2. 2  Testing Layers  Test Projects  Jenkins/Docker Runs  Typical Test  Challenges Content
  • 3. 3 Testing Layers  Gherkin meta-language (behave Python library)  Python code using (Germanium API Python library)  Germanium itself handling browsers (includes Selenium Python library and web-drivers)
  • 4. 4 Testing Layers  Gherkin meta-language (behave Python library) ‒ Basically almost English free text test case executable by human. ‒ Simple text files are used called features. The feature can contain one or more scenarios (test cases) and each scenario may be executed one or more times if there are more test data sets available. ‒ The scenarios are self-contained integration “tests”. ‒ behave: http://pythonhosted.org/behave/ Single test step (sentence) Single Python function gets called
  • 5. 5 Testing Layers  Gherkin meta-language (behave Python library) ‒ We tend to have one scenario per one feature (best practice). ‒ We store the feature files in repository along the Python testing code. ‒ The sentences (test steps) are read by a Python library called “behave” that links them with their implementation and executes them one by one.
  • 6. 6 Testing Layers  Gherkin meta-language (behave Python library) ‒ There is very little structure – feature name and scenario name + keywords Given / When / Then. ‒ “When” marks action and “Then” marks assertion (not necessary – just best practice)
  • 7. 7 Testing Layers  Gherkin meta-language (behave Python library) ‒ Note convention for providing data used for reusing steps (= sentences) in more tests. ‒ Same convention enables the same test to run with multiple data sets – note part “Examples”. Each line represents a test run.
  • 8. 8 Testing Layers  Python code using (Germanium API Python library) ‒ Each sentence (test step) is mapped to one Python function. ‒ These may use other functions, mappings of elements (selectors of buttons, dialogs, parts of text…) and generally anything doable in Python and/or Germanium API. ‒ This layer is simply code in Python. ‒ We use and depend fully on the API https://germaniumhq.com/documentation/
  • 9. 9 Testing Layers  Python code using (Germanium API Python library) ‒ Example:
  • 10. 10 Testing Layers  Germanium itself handling browsers (includes/integrates Selenium Python library and web-drivers) ‒ Basically that’s it because we do not directly use Selenium. ‒ We write / customize stuff only for Gherkin/behave and Germanium/Python, this layer just does the job in background if all goes well.
  • 12. 12  Example test projects for our apps called Workplace and Administrator Test Projects 12
  • 14. 14 Jenkins/Docker Runs ‒ Jenkins part of running tests is more technical and/or complicated. ‒ In our case there are two Jenkins jobs that run the whole tests suite for the two tested apps against whatever is currently deployed on test machine. ‒ These jobs are triggered at certain time generally every night regardless of other jobs/builds/deployments. ‒ Typically this time is when we expect or suppose that the build and deployment to test machine was already done.
  • 15. 15 Jenkins/Docker Runs ‒ The how/where of the test run is complicated/technical. Somehow a virtual environment (Docker) is created with the specified browser, all the tests are fetched from repository and executed against .90 test server running the recently built and deployed web-application. ‒ There is very little configuration in the Jenkins GUI – most is hidden in the linked Jenkinsfile stored in the repository
  • 16. 16 Jenkins/Docker Runs ‒ More necessary details how to create the environment from which the tests will be run are hidden inside the “Dockerfile” (in repository):
  • 17. 17 Jenkins/Docker Runs ‒ The output (log) is available in simple text form (very messy, not structured) in the Jenkins job output to potentially analyze by a person. ‒ One way to analyze failures is to rerun failed tests locally (from Idea) and/or manually (by hand).
  • 19. 19 Typical Test ‒ The test cases are generally rather short and simple. ‒ Generally it is a series of actions (click link/button) and assertions (expect certain text is on the page / in a dialog or expect certain page to load or dialog to show up) ‒ Example for our Workplace application: Login -> check status and version if it is even reasonable to continue -> run Business Case -> check if Human Task opened correctly and if it has all the expected content -> continue to Debug Human Task and check content -> finish Business Case -> Logout. ‒ Challenge: It is difficult, error-prone and time consuming to check that certain actions cause a new page to load with a random content when it takes a random relatively long time.
  • 20. 20 Typical Test ‒ Having short and simple and static TCs seems to be best practice - one would argue that this is good / sufficient approach. ‒ Best practice: One should expect fixed / static texts and values and never compute expected values (never replicate features of the tested app). ‒ Automated integration regression testing should be like a sanity check that really basic feature still work and that stuff generally opens and loads as expected every day after nightly deployment. ‒ You don’t do it to find bugs – more like to:  avoid testing the same basic stuff every day  have some confidence in the morning that generally stuff works  free real people to do more investigative testing
  • 22. 22 Challenges 1. Maintenance. 2. Random technical failures in Jenkins/Docker run not replicable locally. 3. Jenkins run output is not structured – it is very difficult to analyze and offers almost no help in determining which tests failed and why. 4. Running the same tests on other browsers (Firefox, recent IE) 5. Marking tests that fail because known real failures - bugs. 6. Found bugs are ignored long-term – ”fix” the tests? 7. Tests are dependent on constant state of “public” and constantly changing environment (application settings, content/resource storage) 8. Tests too slow. Faster execution causes random failures. 9. Difficult/complicated to configure Jenkins job/run to execute only a subset of all tests in a project.
  • 23. 23 Conclusion ‒ Integration level of automated regression testing in web-frontend area is useful but benefits depend on many factors ‒ It is always an open and valid question how to automate, how much to automate, who should automate and also if to automate at all Thank you for your attention.