SlideShare a Scribd company logo
1 of 27
Download to read offline
Opensource in
Automated Testing
Luís Correia
Opensource in automated testing
Who am I?
●
Former Linux kernel developer and sysadmin
●
Now doing automated software testing
●
Maker, breaker, fixer, geek and everything in between
This presentation is about my work at
Instituto de Informática, I.P.
Some views are my own
Opensource in automated testing
Question, are you doing...
●
automated tests?
●
manual tests?
●
tests, what tests?
Opensource in automated testing
What the heck are automated tests anyway?
Opensource in automated testing
Automated tests are:
●
code (and human readable scripts)
●
a software project for testing business code
●
tests you don’t do manually
They avoid human mistakes & improve reliability
Opensource in automated testing
No code is really complete without tests
More (working) tests means more code coverage
Yes, regression testing is a thing
Opensource in automated testing
In 2018 we had 1958 software releases to test.
This means, on average, eight (8) releases per
working day
Test automation is a must
Opensource in automated testing
Our choices for automated tests were:
●
buy a licence/subscription for a vendor tool
●
build our own
●
none of the above
Opensource in automated testing
We could have spent taxpayers’ money on:
●
buy a licence/subscription for a vendor tool
(and be tied to it for eternity)
Opensource in automated testing
But instead we chose:
●
build our own
(and promise to fix all bugs forever)
Opensource in automated testing
These are the main
open source projects
we are currently using
Opensource in automated testing
We also use
Opensource in automated testing
Apache Maven
https://maven.apache.org/
(and lot of plugins)
Manages dependencies,
builds and tests software
projects
Opensource in automated testing
Cucumber
https://cucumber.io
(includes Gherkin)
Allows creation of
executable specifications
Given, When, Then
(human readable scripts)
Opensource in automated testing
Selenium Webdriver
https://seleniumhw.org
(web browser automation)
Provides interfaces for
browser manipulation and
interaction
Selenium Grid
Opensource in automated testing
Citrus Framework
https://citrusframework.org
(integration testing)
We use it for dependency
injection (Spring based)
and webservice testing
Opensource in automated testing
Codehaus Cargo
https://github.com/codehaus-cargo/cargo
(GlassFish deployer)
We have contributed with
code to provide missing
functionalities for
GlassFish property
configuration
Opensource in automated testing
Tests are part of the Project source tree
Build pipeline compiles business and test code
Build becomes unstable if test fails
Opensource in automated testing
Opensource in automated testing
It all starts with a Cucumber script
Given a certain precondition
When an action is made
Then results are verified
And a report is generated
Opensource in automated testing
Real world example:
@opensourcelisbon @logintest @smoke @availability
Cenário: Validar o login da aplicação
Dado que os sistemas estão disponíveis
Quando efectuamos o acesso com um utilizador interno
Então obtemos acesso aos sistemas
Opensource in automated testing
@Dado("^que os sistemas estão disponíveis$")
public void que_os_sistemas_estao_disponiveis() {
Navigate.to(SERVER_URL, LOGOUT_PAGE);
}
@Quando("^efectuamos o acesso com um utilizador interno$")
public void efectuamos_o_acesso_com_um_utilizador_interno() {
Navigate.withLogin(USERNAME, PASSWORD, SERVER_URL, LOGIN_PAGE);
Screenshot.take();
}
@Então("^obtemos acesso aos sistemas$")
public void obtemos_acesso_aos_sistemas() {
FindElements.byCssSelector(LOGIN_MSG);
}
Opensource in automated testing
DEMO
Opensource in automated testing
Conclusion
You CAN create a framework like we did
Be prepared to work on it permanently
Listen to feedback for further improvement
Contribute your work upstream (when possible)
Opensource in automated testing
luis.correia@seg-social.pt
Luis Correia - Instituto de Informática - OSL19

More Related Content

What's hot

Barcamp Bangkhen :: Robot Framework
Barcamp Bangkhen :: Robot FrameworkBarcamp Bangkhen :: Robot Framework
Barcamp Bangkhen :: Robot FrameworkSomkiat Puisungnoen
 
Robot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs IntegrationRobot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs IntegrationSauce Labs
 
Effective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and DapperEffective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and DapperMike Melusky
 
Speed upyourtest with_appium
Speed upyourtest with_appiumSpeed upyourtest with_appium
Speed upyourtest with_appiumVodqaBLR
 
Introduction to Robot Framework
Introduction to Robot FrameworkIntroduction to Robot Framework
Introduction to Robot FrameworkCarl Su
 
Dot all 2019 | Testing with Craft | Giel Tettelar
Dot all 2019 | Testing with Craft | Giel TettelarDot all 2019 | Testing with Craft | Giel Tettelar
Dot all 2019 | Testing with Craft | Giel TettelarGiel Tettelaar
 
Speed up your Titanium app development with automated tests - TiConf EU 2014
Speed up your Titanium app development with automated tests - TiConf EU 2014Speed up your Titanium app development with automated tests - TiConf EU 2014
Speed up your Titanium app development with automated tests - TiConf EU 2014Emanuele Rampichini
 
Automation is Easy! (python version)
Automation is Easy! (python version)Automation is Easy! (python version)
Automation is Easy! (python version)Iakiv Kramarenko
 
Automation using Javascript
Automation using JavascriptAutomation using Javascript
Automation using Javascriptkhanhdang1214
 
Mca 02 year_exp_unit_automation_testing_ldra_rtrt_c -
Mca 02 year_exp_unit_automation_testing_ldra_rtrt_c -Mca 02 year_exp_unit_automation_testing_ldra_rtrt_c -
Mca 02 year_exp_unit_automation_testing_ldra_rtrt_c -sandeep kumar gupta
 
How to kill test flake in appium
How to kill test flake in appiumHow to kill test flake in appium
How to kill test flake in appiumGaurav Singh
 
Testing with Codeception
Testing with CodeceptionTesting with Codeception
Testing with CodeceptionJeremy Coates
 
Codeception introduction and use in Yii
Codeception introduction and use in YiiCodeception introduction and use in Yii
Codeception introduction and use in YiiIlPeach
 

What's hot (20)

Barcamp Bangkhen :: Robot Framework
Barcamp Bangkhen :: Robot FrameworkBarcamp Bangkhen :: Robot Framework
Barcamp Bangkhen :: Robot Framework
 
Python in Test automation
Python in Test automationPython in Test automation
Python in Test automation
 
Integration testing - A&BP CC
Integration testing - A&BP CCIntegration testing - A&BP CC
Integration testing - A&BP CC
 
Robot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs IntegrationRobot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs Integration
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
Effective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and DapperEffective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and Dapper
 
Speed upyourtest with_appium
Speed upyourtest with_appiumSpeed upyourtest with_appium
Speed upyourtest with_appium
 
Robot Framework
Robot FrameworkRobot Framework
Robot Framework
 
Integration Testing in Python
Integration Testing in PythonIntegration Testing in Python
Integration Testing in Python
 
Introduction to Robot Framework
Introduction to Robot FrameworkIntroduction to Robot Framework
Introduction to Robot Framework
 
Dot all 2019 | Testing with Craft | Giel Tettelar
Dot all 2019 | Testing with Craft | Giel TettelarDot all 2019 | Testing with Craft | Giel Tettelar
Dot all 2019 | Testing with Craft | Giel Tettelar
 
Speed up your Titanium app development with automated tests - TiConf EU 2014
Speed up your Titanium app development with automated tests - TiConf EU 2014Speed up your Titanium app development with automated tests - TiConf EU 2014
Speed up your Titanium app development with automated tests - TiConf EU 2014
 
Introduction to robot framework
Introduction to robot frameworkIntroduction to robot framework
Introduction to robot framework
 
Automation is Easy! (python version)
Automation is Easy! (python version)Automation is Easy! (python version)
Automation is Easy! (python version)
 
Automation using Javascript
Automation using JavascriptAutomation using Javascript
Automation using Javascript
 
Mca 02 year_exp_unit_automation_testing_ldra_rtrt_c -
Mca 02 year_exp_unit_automation_testing_ldra_rtrt_c -Mca 02 year_exp_unit_automation_testing_ldra_rtrt_c -
Mca 02 year_exp_unit_automation_testing_ldra_rtrt_c -
 
How to kill test flake in appium
How to kill test flake in appiumHow to kill test flake in appium
How to kill test flake in appium
 
Introduction to Robot Framework
Introduction to Robot FrameworkIntroduction to Robot Framework
Introduction to Robot Framework
 
Testing with Codeception
Testing with CodeceptionTesting with Codeception
Testing with Codeception
 
Codeception introduction and use in Yii
Codeception introduction and use in YiiCodeception introduction and use in Yii
Codeception introduction and use in Yii
 

Similar to Luis Correia - Instituto de Informática - OSL19

Diving into the World of Test Automation The Approach and the Technologies
Diving into the World of Test Automation The Approach and the TechnologiesDiving into the World of Test Automation The Approach and the Technologies
Diving into the World of Test Automation The Approach and the TechnologiesQASymphony
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsAmazon Web Services
 
Quality Built In @ Spotify
Quality Built In @ SpotifyQuality Built In @ Spotify
Quality Built In @ SpotifyAndrii Dzynia
 
Dev ops on aws deep dive on continuous delivery - Toronto
Dev ops on aws deep dive on continuous delivery - TorontoDev ops on aws deep dive on continuous delivery - Toronto
Dev ops on aws deep dive on continuous delivery - TorontoAmazon Web Services
 
DevOps On AWS - Deep Dive on Continuous Delivery
DevOps On AWS - Deep Dive on Continuous DeliveryDevOps On AWS - Deep Dive on Continuous Delivery
DevOps On AWS - Deep Dive on Continuous DeliveryMikhail Prudnikov
 
Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020Marianne Harness
 
Security in CI/CD Pipelines: Tips for DevOps Engineers
Security in CI/CD Pipelines: Tips for DevOps EngineersSecurity in CI/CD Pipelines: Tips for DevOps Engineers
Security in CI/CD Pipelines: Tips for DevOps EngineersDevOps.com
 
Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020Alaina Carter
 
Continuous Integration: A Case Study
Continuous Integration: A Case StudyContinuous Integration: A Case Study
Continuous Integration: A Case StudyIndicThreads
 
DevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps WorldDevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps WorldWinston Laoh
 
5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test AutomationSauce Labs
 
Agile testing - Principles and best practices
Agile testing  - Principles and best practicesAgile testing  - Principles and best practices
Agile testing - Principles and best practicesDr Ganesh Iyer
 
Software Quality
Software QualitySoftware Quality
Software QualityJoe Walling
 
Infinum Android Talks #13 - Developing Android Apps Like Navy Seals by Ivan Kušt
Infinum Android Talks #13 - Developing Android Apps Like Navy Seals by Ivan KuštInfinum Android Talks #13 - Developing Android Apps Like Navy Seals by Ivan Kušt
Infinum Android Talks #13 - Developing Android Apps Like Navy Seals by Ivan KuštInfinum
 
AWS re:Invent 2016: DevOps on AWS: Accelerating Software Delivery with the AW...
AWS re:Invent 2016: DevOps on AWS: Accelerating Software Delivery with the AW...AWS re:Invent 2016: DevOps on AWS: Accelerating Software Delivery with the AW...
AWS re:Invent 2016: DevOps on AWS: Accelerating Software Delivery with the AW...Amazon Web Services
 
Manual JavaScript Analysis Is A Bug
Manual JavaScript Analysis Is A BugManual JavaScript Analysis Is A Bug
Manual JavaScript Analysis Is A BugLewis Ardern
 
Making Security Agile
Making Security AgileMaking Security Agile
Making Security AgileOleg Gryb
 
Continuous Integration using Cruise Control
Continuous Integration using Cruise ControlContinuous Integration using Cruise Control
Continuous Integration using Cruise Controlelliando dias
 

Similar to Luis Correia - Instituto de Informática - OSL19 (20)

Diving into the World of Test Automation The Approach and the Technologies
Diving into the World of Test Automation The Approach and the TechnologiesDiving into the World of Test Automation The Approach and the Technologies
Diving into the World of Test Automation The Approach and the Technologies
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
 
Quality Built In @ Spotify
Quality Built In @ SpotifyQuality Built In @ Spotify
Quality Built In @ Spotify
 
Dev ops on aws deep dive on continuous delivery - Toronto
Dev ops on aws deep dive on continuous delivery - TorontoDev ops on aws deep dive on continuous delivery - Toronto
Dev ops on aws deep dive on continuous delivery - Toronto
 
DevOps On AWS - Deep Dive on Continuous Delivery
DevOps On AWS - Deep Dive on Continuous DeliveryDevOps On AWS - Deep Dive on Continuous Delivery
DevOps On AWS - Deep Dive on Continuous Delivery
 
Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020
 
Security in CI/CD Pipelines: Tips for DevOps Engineers
Security in CI/CD Pipelines: Tips for DevOps EngineersSecurity in CI/CD Pipelines: Tips for DevOps Engineers
Security in CI/CD Pipelines: Tips for DevOps Engineers
 
Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020
 
Continuous Integration: A Case Study
Continuous Integration: A Case StudyContinuous Integration: A Case Study
Continuous Integration: A Case Study
 
DevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps WorldDevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps World
 
5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation
 
Agile testing - Principles and best practices
Agile testing  - Principles and best practicesAgile testing  - Principles and best practices
Agile testing - Principles and best practices
 
Software Quality
Software QualitySoftware Quality
Software Quality
 
Infinum Android Talks #13 - Developing Android Apps Like Navy Seals by Ivan Kušt
Infinum Android Talks #13 - Developing Android Apps Like Navy Seals by Ivan KuštInfinum Android Talks #13 - Developing Android Apps Like Navy Seals by Ivan Kušt
Infinum Android Talks #13 - Developing Android Apps Like Navy Seals by Ivan Kušt
 
AWS re:Invent 2016: DevOps on AWS: Accelerating Software Delivery with the AW...
AWS re:Invent 2016: DevOps on AWS: Accelerating Software Delivery with the AW...AWS re:Invent 2016: DevOps on AWS: Accelerating Software Delivery with the AW...
AWS re:Invent 2016: DevOps on AWS: Accelerating Software Delivery with the AW...
 
DevOps on AWS
DevOps on AWSDevOps on AWS
DevOps on AWS
 
Manual JavaScript Analysis Is A Bug
Manual JavaScript Analysis Is A BugManual JavaScript Analysis Is A Bug
Manual JavaScript Analysis Is A Bug
 
E2 e test with testcafe
E2 e test with testcafeE2 e test with testcafe
E2 e test with testcafe
 
Making Security Agile
Making Security AgileMaking Security Agile
Making Security Agile
 
Continuous Integration using Cruise Control
Continuous Integration using Cruise ControlContinuous Integration using Cruise Control
Continuous Integration using Cruise Control
 

More from marketingsyone

Eneko Astigarraga - ELSE - OSL19
Eneko Astigarraga - ELSE - OSL19Eneko Astigarraga - ELSE - OSL19
Eneko Astigarraga - ELSE - OSL19marketingsyone
 
Jean Christophe - Aquinetic - OSL19
Jean Christophe - Aquinetic - OSL19Jean Christophe - Aquinetic - OSL19
Jean Christophe - Aquinetic - OSL19marketingsyone
 
Oscar Cabanillas - Elastic - OSL19
Oscar Cabanillas - Elastic - OSL19Oscar Cabanillas - Elastic - OSL19
Oscar Cabanillas - Elastic - OSL19marketingsyone
 
Sergio Silva - CyberS3c - OSL19
Sergio Silva - CyberS3c - OSL19Sergio Silva - CyberS3c - OSL19
Sergio Silva - CyberS3c - OSL19marketingsyone
 
David Buckhurst - BBC - OSL19
David Buckhurst - BBC - OSL19David Buckhurst - BBC - OSL19
David Buckhurst - BBC - OSL19marketingsyone
 
Juarez Barbosa Junior - Microsoft - OSL19
Juarez Barbosa Junior - Microsoft - OSL19Juarez Barbosa Junior - Microsoft - OSL19
Juarez Barbosa Junior - Microsoft - OSL19marketingsyone
 
Rui Violante - Syone - OSL19
Rui Violante - Syone - OSL19Rui Violante - Syone - OSL19
Rui Violante - Syone - OSL19marketingsyone
 
João Faria - Syone - OSL19
João Faria - Syone - OSL19João Faria - Syone - OSL19
João Faria - Syone - OSL19marketingsyone
 
Tiago Fonseca & Rui Velho - Syone & Leroy Merlin - OSL19
Tiago Fonseca & Rui Velho - Syone & Leroy Merlin - OSL19Tiago Fonseca & Rui Velho - Syone & Leroy Merlin - OSL19
Tiago Fonseca & Rui Velho - Syone & Leroy Merlin - OSL19marketingsyone
 
Tiago Carrondo - Ubuntu - OSL19
Tiago Carrondo - Ubuntu - OSL19Tiago Carrondo - Ubuntu - OSL19
Tiago Carrondo - Ubuntu - OSL19marketingsyone
 
Sergio Seabra - Red Hat - OSL19
Sergio Seabra - Red Hat - OSL19Sergio Seabra - Red Hat - OSL19
Sergio Seabra - Red Hat - OSL19marketingsyone
 
Miguel Vera - Unbabel - OSL19
Miguel Vera - Unbabel - OSL19Miguel Vera - Unbabel - OSL19
Miguel Vera - Unbabel - OSL19marketingsyone
 
François Cartegnie - VideoLAN - OSL19
François Cartegnie - VideoLAN - OSL19François Cartegnie - VideoLAN - OSL19
François Cartegnie - VideoLAN - OSL19marketingsyone
 
Filipe Barroso - Google Developers Group - OSL19
Filipe Barroso - Google Developers Group - OSL19Filipe Barroso - Google Developers Group - OSL19
Filipe Barroso - Google Developers Group - OSL19marketingsyone
 
Jose Manrique - OSPO - OSL19
Jose Manrique - OSPO - OSL19Jose Manrique - OSPO - OSL19
Jose Manrique - OSPO - OSL19marketingsyone
 
Francisco Javier Ramirez Urea - Hopla - OSL19
Francisco Javier Ramirez Urea - Hopla - OSL19Francisco Javier Ramirez Urea - Hopla - OSL19
Francisco Javier Ramirez Urea - Hopla - OSL19marketingsyone
 
Ricardo Fiel - Microsoft - OSL19
Ricardo Fiel - Microsoft - OSL19Ricardo Fiel - Microsoft - OSL19
Ricardo Fiel - Microsoft - OSL19marketingsyone
 
Paulo Ribeiro - ESOP - OSL19
Paulo Ribeiro - ESOP - OSL19Paulo Ribeiro - ESOP - OSL19
Paulo Ribeiro - ESOP - OSL19marketingsyone
 
Despina Mitropoulou (open room) - GFOSS - OSL19
Despina Mitropoulou (open room) - GFOSS - OSL19Despina Mitropoulou (open room) - GFOSS - OSL19
Despina Mitropoulou (open room) - GFOSS - OSL19marketingsyone
 
Regina Pison - Elastic - OSL19
Regina Pison - Elastic - OSL19Regina Pison - Elastic - OSL19
Regina Pison - Elastic - OSL19marketingsyone
 

More from marketingsyone (20)

Eneko Astigarraga - ELSE - OSL19
Eneko Astigarraga - ELSE - OSL19Eneko Astigarraga - ELSE - OSL19
Eneko Astigarraga - ELSE - OSL19
 
Jean Christophe - Aquinetic - OSL19
Jean Christophe - Aquinetic - OSL19Jean Christophe - Aquinetic - OSL19
Jean Christophe - Aquinetic - OSL19
 
Oscar Cabanillas - Elastic - OSL19
Oscar Cabanillas - Elastic - OSL19Oscar Cabanillas - Elastic - OSL19
Oscar Cabanillas - Elastic - OSL19
 
Sergio Silva - CyberS3c - OSL19
Sergio Silva - CyberS3c - OSL19Sergio Silva - CyberS3c - OSL19
Sergio Silva - CyberS3c - OSL19
 
David Buckhurst - BBC - OSL19
David Buckhurst - BBC - OSL19David Buckhurst - BBC - OSL19
David Buckhurst - BBC - OSL19
 
Juarez Barbosa Junior - Microsoft - OSL19
Juarez Barbosa Junior - Microsoft - OSL19Juarez Barbosa Junior - Microsoft - OSL19
Juarez Barbosa Junior - Microsoft - OSL19
 
Rui Violante - Syone - OSL19
Rui Violante - Syone - OSL19Rui Violante - Syone - OSL19
Rui Violante - Syone - OSL19
 
João Faria - Syone - OSL19
João Faria - Syone - OSL19João Faria - Syone - OSL19
João Faria - Syone - OSL19
 
Tiago Fonseca & Rui Velho - Syone & Leroy Merlin - OSL19
Tiago Fonseca & Rui Velho - Syone & Leroy Merlin - OSL19Tiago Fonseca & Rui Velho - Syone & Leroy Merlin - OSL19
Tiago Fonseca & Rui Velho - Syone & Leroy Merlin - OSL19
 
Tiago Carrondo - Ubuntu - OSL19
Tiago Carrondo - Ubuntu - OSL19Tiago Carrondo - Ubuntu - OSL19
Tiago Carrondo - Ubuntu - OSL19
 
Sergio Seabra - Red Hat - OSL19
Sergio Seabra - Red Hat - OSL19Sergio Seabra - Red Hat - OSL19
Sergio Seabra - Red Hat - OSL19
 
Miguel Vera - Unbabel - OSL19
Miguel Vera - Unbabel - OSL19Miguel Vera - Unbabel - OSL19
Miguel Vera - Unbabel - OSL19
 
François Cartegnie - VideoLAN - OSL19
François Cartegnie - VideoLAN - OSL19François Cartegnie - VideoLAN - OSL19
François Cartegnie - VideoLAN - OSL19
 
Filipe Barroso - Google Developers Group - OSL19
Filipe Barroso - Google Developers Group - OSL19Filipe Barroso - Google Developers Group - OSL19
Filipe Barroso - Google Developers Group - OSL19
 
Jose Manrique - OSPO - OSL19
Jose Manrique - OSPO - OSL19Jose Manrique - OSPO - OSL19
Jose Manrique - OSPO - OSL19
 
Francisco Javier Ramirez Urea - Hopla - OSL19
Francisco Javier Ramirez Urea - Hopla - OSL19Francisco Javier Ramirez Urea - Hopla - OSL19
Francisco Javier Ramirez Urea - Hopla - OSL19
 
Ricardo Fiel - Microsoft - OSL19
Ricardo Fiel - Microsoft - OSL19Ricardo Fiel - Microsoft - OSL19
Ricardo Fiel - Microsoft - OSL19
 
Paulo Ribeiro - ESOP - OSL19
Paulo Ribeiro - ESOP - OSL19Paulo Ribeiro - ESOP - OSL19
Paulo Ribeiro - ESOP - OSL19
 
Despina Mitropoulou (open room) - GFOSS - OSL19
Despina Mitropoulou (open room) - GFOSS - OSL19Despina Mitropoulou (open room) - GFOSS - OSL19
Despina Mitropoulou (open room) - GFOSS - OSL19
 
Regina Pison - Elastic - OSL19
Regina Pison - Elastic - OSL19Regina Pison - Elastic - OSL19
Regina Pison - Elastic - OSL19
 

Recently uploaded

Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
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
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
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
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
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
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
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
 

Recently uploaded (20)

Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
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...
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
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
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
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
 

Luis Correia - Instituto de Informática - OSL19

  • 2. Opensource in automated testing Who am I? ● Former Linux kernel developer and sysadmin ● Now doing automated software testing ● Maker, breaker, fixer, geek and everything in between
  • 3. This presentation is about my work at Instituto de Informática, I.P. Some views are my own Opensource in automated testing
  • 4. Question, are you doing... ● automated tests? ● manual tests? ● tests, what tests? Opensource in automated testing
  • 5. What the heck are automated tests anyway? Opensource in automated testing
  • 6. Automated tests are: ● code (and human readable scripts) ● a software project for testing business code ● tests you don’t do manually They avoid human mistakes & improve reliability Opensource in automated testing
  • 7. No code is really complete without tests More (working) tests means more code coverage Yes, regression testing is a thing Opensource in automated testing
  • 8. In 2018 we had 1958 software releases to test. This means, on average, eight (8) releases per working day Test automation is a must Opensource in automated testing
  • 9. Our choices for automated tests were: ● buy a licence/subscription for a vendor tool ● build our own ● none of the above Opensource in automated testing
  • 10. We could have spent taxpayers’ money on: ● buy a licence/subscription for a vendor tool (and be tied to it for eternity) Opensource in automated testing
  • 11. But instead we chose: ● build our own (and promise to fix all bugs forever) Opensource in automated testing
  • 12. These are the main open source projects we are currently using Opensource in automated testing
  • 13. We also use Opensource in automated testing
  • 14. Apache Maven https://maven.apache.org/ (and lot of plugins) Manages dependencies, builds and tests software projects Opensource in automated testing
  • 15. Cucumber https://cucumber.io (includes Gherkin) Allows creation of executable specifications Given, When, Then (human readable scripts) Opensource in automated testing
  • 16. Selenium Webdriver https://seleniumhw.org (web browser automation) Provides interfaces for browser manipulation and interaction Selenium Grid Opensource in automated testing
  • 17. Citrus Framework https://citrusframework.org (integration testing) We use it for dependency injection (Spring based) and webservice testing Opensource in automated testing
  • 18. Codehaus Cargo https://github.com/codehaus-cargo/cargo (GlassFish deployer) We have contributed with code to provide missing functionalities for GlassFish property configuration Opensource in automated testing
  • 19. Tests are part of the Project source tree Build pipeline compiles business and test code Build becomes unstable if test fails Opensource in automated testing
  • 21. It all starts with a Cucumber script Given a certain precondition When an action is made Then results are verified And a report is generated Opensource in automated testing
  • 22. Real world example: @opensourcelisbon @logintest @smoke @availability Cenário: Validar o login da aplicação Dado que os sistemas estão disponíveis Quando efectuamos o acesso com um utilizador interno Então obtemos acesso aos sistemas Opensource in automated testing
  • 23. @Dado("^que os sistemas estão disponíveis$") public void que_os_sistemas_estao_disponiveis() { Navigate.to(SERVER_URL, LOGOUT_PAGE); } @Quando("^efectuamos o acesso com um utilizador interno$") public void efectuamos_o_acesso_com_um_utilizador_interno() { Navigate.withLogin(USERNAME, PASSWORD, SERVER_URL, LOGIN_PAGE); Screenshot.take(); } @Então("^obtemos acesso aos sistemas$") public void obtemos_acesso_aos_sistemas() { FindElements.byCssSelector(LOGIN_MSG); } Opensource in automated testing
  • 25. Conclusion You CAN create a framework like we did Be prepared to work on it permanently Listen to feedback for further improvement Contribute your work upstream (when possible) Opensource in automated testing