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 (20)

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

Similar to Automated Integration Regression Testing (20)

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

Recently uploaded (20)

PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
PDF
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
PDF
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
PDF
Technical-Careers-Roadmap-in-Software-Market.pdf
Hussein Ali
 
PDF
Latest Capcut Pro 5.9.0 Crack Version For PC {Fully 2025
utfefguu
 
PPTX
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
PPTX
iaas vs paas vs saas :choosing your cloud strategy
CloudlayaTechnology
 
PDF
Best Web development company in india 2025
Greenusys
 
PDF
Salesforce Experience Cloud Consultant.pdf
VALiNTRY360
 
PDF
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
PDF
Empower Your Tech Vision- Why Businesses Prefer to Hire Remote Developers fro...
logixshapers59
 
PDF
IObit Driver Booster Pro 12.4.0.585 Crack Free Download
henryc1122g
 
PDF
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
PDF
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
PDF
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
PDF
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
PPTX
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
PDF
AI Prompts Cheat Code prompt engineering
Avijit Kumar Roy
 
PPTX
Library_Management_System_PPT111111.pptx
nmtnissancrm
 
PDF
Why is partnering with a SaaS development company crucial for enterprise succ...
Nextbrain Technologies
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
Technical-Careers-Roadmap-in-Software-Market.pdf
Hussein Ali
 
Latest Capcut Pro 5.9.0 Crack Version For PC {Fully 2025
utfefguu
 
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
iaas vs paas vs saas :choosing your cloud strategy
CloudlayaTechnology
 
Best Web development company in india 2025
Greenusys
 
Salesforce Experience Cloud Consultant.pdf
VALiNTRY360
 
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
Empower Your Tech Vision- Why Businesses Prefer to Hire Remote Developers fro...
logixshapers59
 
IObit Driver Booster Pro 12.4.0.585 Crack Free Download
henryc1122g
 
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
AI Prompts Cheat Code prompt engineering
Avijit Kumar Roy
 
Library_Management_System_PPT111111.pptx
nmtnissancrm
 
Why is partnering with a SaaS development company crucial for enterprise succ...
Nextbrain Technologies
 
Ad

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.