SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
Functional Testing made easy
with SWTBot for Developers
and Testers
Aurelien Pupier - @apupier
Studio Development Leader
© 2015 Bonitasoft 2
What is SWTBot?
Java Framework for SWT automated UI tests
© 2015 Bonitasoft 3
And also…
SWTBot – General workings
• Encapsulate UI components
• Send SWT Events to simulate User interaction
4© 2015 Bonitasoft
SWTBot – Sample
5© 2015 Bonitasoft
bot.textWithLabel(“Name *”).setText(“userName”);
bot.comboBox().select(“Text”);
bot.textWithLabel(“Default value”).setText(“john”);
bot.button(“Finish”).click();
SWTBot – Advantages
• Easy to understand for developers
• Easy to write first shot
• … Even a recorder
• Access to Java API for assertions
• Test code coverage
6© 2015 Bonitasoft
SWTBot limitations (1/5)
• Underlying components knowledge
– Widget types
– Eclipse wording
7© 2015 Bonitasoft
Table or List?
Combo or CCombo?
SWTBot limitations (2/5)
• Same widget at different place
– SWTBotConstants.SWTBOT_WIDGET_ID_KEY
– production code modified
8© 2015 Bonitasoft
SWTBot limitations (3/5)
• UI Thread synchronization  Robustness hard:
– Correct implementation of waitUntil required
– (even if Conditions provided)
9© 2015 Bonitasoft
SWTBot limitations (4/5)
• Java code not accessible for Java/Eclipse beginners
– For all previously mentioned reasons
10© 2015 Bonitasoft
SWTBot limitations (5/5)
• Maintenance of tests:
– Requires to be close to production code
• Message updated (to fix a typo)
• UI updated (from Combo to CCombo…)
11© 2015 Bonitasoft
SWTBot conclusion
SWTBot is an handy test tool
for developers
12© 2015 Bonitasoft
What about testers?
• How to let testers writing Functional tests?
– Do not care of implementation details
13© 2015 Bonitasoft
Application Oriented API
‘Page Object Pattern’
14© 2015 Bonitasoft
Application Oriented API
15© 2015 Bonitasoft
Page Pattern sample (1/2)
16© 2015 Bonitasoft
new BotDataDialog().
.setName(“userName”)
.setType(“Text”)
.setDefaultValue(“john”)
.finish();
bot.waitUntil(Conditions.shellIsActive(Messages.newVariable));
SWTBotShell shell = bot.activeShell();
bot.textWithLabel(Messages.name_mandatory).setText(“userName”);
bot.comboBox().select(“Text”);
bot.textWithLabel(Messages.defaultValue).setText(“john”);
bot.button(IDialogConstants.FINISH_LABEL).click();
bot.waitUntil(Conditions.shellCloses(shell));
Page Pattern sample (2/2)
17© 2015 Bonitasoft
new BotDataDialog().
.setName(“userName”)
.setType(“Text”)
.setDefaultValue(“john”)
.finish();
bot.waitUntil(Conditions.shellIsActive(Messages.newVariable));
SWTBotShell shell = bot.activeShell();
bot.textWithLabel(Messages.name_mandatory).setText(“userName”);
bot.comboBox().select(“Text”);
bot.textWithLabel(Messages.defaultValue).setText(“john”);
bot.button(IDialogConstants.FINISH_LABEL).click();
bot.waitUntil(Conditions.shellCloses(shell));
What decided us?
• Successful implementation with Selenium and
Chinese QA team
• Code mess
– Big static utility classes…
– Sometimes right utility class hard to find
• Robustness issue
– CI infra updated  ~10% of UI tests unstable
• Half-day for one test
• Invite QA testers to join the party
• Same tooling Development/QA
18© 2015 Bonitasoft
Observed benefits
Eases writing…
… and maintaining Functional Tests
… for Testers AND Developers
– New UI test: Half-day  1 hour
– More factorized code
– Robustness
19© 2015 Bonitasoft
Feedback on implementation
• Setup time ~3 weeks
• On the fly
20© 2015 Bonitasoft
What’s next?
21© 2015 Bonitasoft
What’s next?
• BDD
– Get stake holders and user advocates to join the party
– Talk about using Cucumber with SWTBot
• RedDeer
– Reuse the Eclipse components
22© 2015 Bonitasoft
Visit us online
bonitasoft.com
Join our community
Bonitasoft.org
Download
Bonitasoft.com/downloads
Follow us on twitter
@bonitasoft
“Page” your App!
@apupier
© 2015 Bonitasoft 23
24© 2015 Bonitasoft

Weitere ähnliche Inhalte

Was ist angesagt?

PHP Unit Testing in Yii
PHP Unit Testing in YiiPHP Unit Testing in Yii
PHP Unit Testing in YiiIlPeach
 
Unit Testing Android Applications
Unit Testing Android ApplicationsUnit Testing Android Applications
Unit Testing Android ApplicationsRody Middelkoop
 
Automating UI testing
Automating UI testingAutomating UI testing
Automating UI testingAdam Siton
 
Efficient JavaScript Unit Testing, May 2012
Efficient JavaScript Unit Testing, May 2012Efficient JavaScript Unit Testing, May 2012
Efficient JavaScript Unit Testing, May 2012Hazem Saleh
 
iOS UI Testing in Xcode
iOS UI Testing in XcodeiOS UI Testing in Xcode
iOS UI Testing in XcodeJz Chang
 
Tellurium At Rich Web Experience2009
Tellurium At Rich Web Experience2009Tellurium At Rich Web Experience2009
Tellurium At Rich Web Experience2009John.Jian.Fang
 
Dusan Lukic Magento 2 Integration Tests Meet Magento Serbia 2016
Dusan Lukic Magento 2 Integration Tests Meet Magento Serbia 2016Dusan Lukic Magento 2 Integration Tests Meet Magento Serbia 2016
Dusan Lukic Magento 2 Integration Tests Meet Magento Serbia 2016Dusan Lukic
 
[XCode] Automating UI Testing
[XCode] Automating UI Testing[XCode] Automating UI Testing
[XCode] Automating UI TestingPhineas Huang
 
Codeception presentation
Codeception presentationCodeception presentation
Codeception presentationAndrei Burian
 
Tellurium.A.New.Approach.For.Web.Testing
Tellurium.A.New.Approach.For.Web.TestingTellurium.A.New.Approach.For.Web.Testing
Tellurium.A.New.Approach.For.Web.TestingJohn.Jian.Fang
 
How to setup unit testing in Android Studio
How to setup unit testing in Android StudioHow to setup unit testing in Android Studio
How to setup unit testing in Android Studiotobiaspreuss
 
Protractor framework – how to make stable e2e tests for Angular applications
Protractor framework – how to make stable e2e tests for Angular applicationsProtractor framework – how to make stable e2e tests for Angular applications
Protractor framework – how to make stable e2e tests for Angular applicationsLudmila Nesvitiy
 
Quickly Testing Qt Desktop Applications
Quickly Testing Qt Desktop ApplicationsQuickly Testing Qt Desktop Applications
Quickly Testing Qt Desktop ApplicationsClare Macrae
 
Unit Testing on Android - Droidcon Berlin 2015
Unit Testing on Android - Droidcon Berlin 2015Unit Testing on Android - Droidcon Berlin 2015
Unit Testing on Android - Droidcon Berlin 2015Buşra Deniz, CSM
 
Unit-testing and E2E testing in JS
Unit-testing and E2E testing in JSUnit-testing and E2E testing in JS
Unit-testing and E2E testing in JSMichael Haberman
 
Test all the things! Automated testing with Drupal 8
Test all the things! Automated testing with Drupal 8Test all the things! Automated testing with Drupal 8
Test all the things! Automated testing with Drupal 8Sam Becker
 
軟體測試是在測試什麼?
軟體測試是在測試什麼?軟體測試是在測試什麼?
軟體測試是在測試什麼?Yao Nien Chung
 

Was ist angesagt? (20)

PHP Unit Testing in Yii
PHP Unit Testing in YiiPHP Unit Testing in Yii
PHP Unit Testing in Yii
 
Unit Testing Android Applications
Unit Testing Android ApplicationsUnit Testing Android Applications
Unit Testing Android Applications
 
Automating UI testing
Automating UI testingAutomating UI testing
Automating UI testing
 
Efficient JavaScript Unit Testing, May 2012
Efficient JavaScript Unit Testing, May 2012Efficient JavaScript Unit Testing, May 2012
Efficient JavaScript Unit Testing, May 2012
 
iOS UI Testing in Xcode
iOS UI Testing in XcodeiOS UI Testing in Xcode
iOS UI Testing in Xcode
 
Tellurium At Rich Web Experience2009
Tellurium At Rich Web Experience2009Tellurium At Rich Web Experience2009
Tellurium At Rich Web Experience2009
 
Dusan Lukic Magento 2 Integration Tests Meet Magento Serbia 2016
Dusan Lukic Magento 2 Integration Tests Meet Magento Serbia 2016Dusan Lukic Magento 2 Integration Tests Meet Magento Serbia 2016
Dusan Lukic Magento 2 Integration Tests Meet Magento Serbia 2016
 
[XCode] Automating UI Testing
[XCode] Automating UI Testing[XCode] Automating UI Testing
[XCode] Automating UI Testing
 
Codeception presentation
Codeception presentationCodeception presentation
Codeception presentation
 
Tellurium.A.New.Approach.For.Web.Testing
Tellurium.A.New.Approach.For.Web.TestingTellurium.A.New.Approach.For.Web.Testing
Tellurium.A.New.Approach.For.Web.Testing
 
Unit testing on mobile apps
Unit testing on mobile appsUnit testing on mobile apps
Unit testing on mobile apps
 
Codeception
CodeceptionCodeception
Codeception
 
How to setup unit testing in Android Studio
How to setup unit testing in Android StudioHow to setup unit testing in Android Studio
How to setup unit testing in Android Studio
 
Protractor framework – how to make stable e2e tests for Angular applications
Protractor framework – how to make stable e2e tests for Angular applicationsProtractor framework – how to make stable e2e tests for Angular applications
Protractor framework – how to make stable e2e tests for Angular applications
 
Quickly Testing Qt Desktop Applications
Quickly Testing Qt Desktop ApplicationsQuickly Testing Qt Desktop Applications
Quickly Testing Qt Desktop Applications
 
Unit Testing on Android - Droidcon Berlin 2015
Unit Testing on Android - Droidcon Berlin 2015Unit Testing on Android - Droidcon Berlin 2015
Unit Testing on Android - Droidcon Berlin 2015
 
Unit-testing and E2E testing in JS
Unit-testing and E2E testing in JSUnit-testing and E2E testing in JS
Unit-testing and E2E testing in JS
 
Test all the things! Automated testing with Drupal 8
Test all the things! Automated testing with Drupal 8Test all the things! Automated testing with Drupal 8
Test all the things! Automated testing with Drupal 8
 
Unit Testing in iOS
Unit Testing in iOSUnit Testing in iOS
Unit Testing in iOS
 
軟體測試是在測試什麼?
軟體測試是在測試什麼?軟體測試是在測試什麼?
軟體測試是在測試什麼?
 

Ähnlich wie Functional Testing made easy with SWTBot

Coded ui in a nutshell
Coded ui in a nutshellCoded ui in a nutshell
Coded ui in a nutshellOmer Karpas
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitIMC Institute
 
Android the Agile way
Android the Agile wayAndroid the Agile way
Android the Agile wayAshwin Raghav
 
Top100summit 谷歌-scott-improve your automated web application testing
Top100summit  谷歌-scott-improve your automated web application testingTop100summit  谷歌-scott-improve your automated web application testing
Top100summit 谷歌-scott-improve your automated web application testingdrewz lin
 
Testing SharePoint solutions overview
Testing SharePoint solutions overviewTesting SharePoint solutions overview
Testing SharePoint solutions overviewSpiffy
 
Google Web Toolkits
Google Web ToolkitsGoogle Web Toolkits
Google Web ToolkitsYiguang Hu
 
GEF Support in SWTBot - ESE 09
GEF Support in SWTBot - ESE 09GEF Support in SWTBot - ESE 09
GEF Support in SWTBot - ESE 09Chauvin Mariot
 
Joget Workflow v5 Training Slides - Module 18 - Integrating with External System
Joget Workflow v5 Training Slides - Module 18 - Integrating with External SystemJoget Workflow v5 Training Slides - Module 18 - Integrating with External System
Joget Workflow v5 Training Slides - Module 18 - Integrating with External SystemJoget Workflow
 
AngularJS for Web and Mobile
 AngularJS for Web and Mobile AngularJS for Web and Mobile
AngularJS for Web and MobileRocket Software
 
Better User Experience with .NET
Better User Experience with .NETBetter User Experience with .NET
Better User Experience with .NETPeter Gfader
 
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyRed Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyMark Proctor
 
UI Testing for Your Xamarin.Forms Apps
UI Testing for Your Xamarin.Forms AppsUI Testing for Your Xamarin.Forms Apps
UI Testing for Your Xamarin.Forms AppsCodrina Merigo
 
Odo improving the developer experience on OpenShift - hack & sangria
Odo   improving the developer experience on OpenShift - hack & sangriaOdo   improving the developer experience on OpenShift - hack & sangria
Odo improving the developer experience on OpenShift - hack & sangriaJorge Morales
 
Automated Builds And UI Testing in SharePoint 2010 Development
Automated Builds And UI Testing in SharePoint 2010 DevelopmentAutomated Builds And UI Testing in SharePoint 2010 Development
Automated Builds And UI Testing in SharePoint 2010 DevelopmentChris O'Brien
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2JooinK
 
Coded ui - lesson 1 - overview
Coded ui - lesson 1 - overviewCoded ui - lesson 1 - overview
Coded ui - lesson 1 - overviewOmer Karpas
 

Ähnlich wie Functional Testing made easy with SWTBot (20)

Java server faces
Java server facesJava server faces
Java server faces
 
Coded ui in a nutshell
Coded ui in a nutshellCoded ui in a nutshell
Coded ui in a nutshell
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
 
Android the Agile way
Android the Agile wayAndroid the Agile way
Android the Agile way
 
Deep Dive Modern Apps Lifecycle with Visual Studio 2012: How to create cross ...
Deep Dive Modern Apps Lifecycle with Visual Studio 2012: How to create cross ...Deep Dive Modern Apps Lifecycle with Visual Studio 2012: How to create cross ...
Deep Dive Modern Apps Lifecycle with Visual Studio 2012: How to create cross ...
 
Top100summit 谷歌-scott-improve your automated web application testing
Top100summit  谷歌-scott-improve your automated web application testingTop100summit  谷歌-scott-improve your automated web application testing
Top100summit 谷歌-scott-improve your automated web application testing
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Testing SharePoint solutions overview
Testing SharePoint solutions overviewTesting SharePoint solutions overview
Testing SharePoint solutions overview
 
Google Web Toolkits
Google Web ToolkitsGoogle Web Toolkits
Google Web Toolkits
 
GEF Support in SWTBot - ESE 09
GEF Support in SWTBot - ESE 09GEF Support in SWTBot - ESE 09
GEF Support in SWTBot - ESE 09
 
Joget Workflow v5 Training Slides - Module 18 - Integrating with External System
Joget Workflow v5 Training Slides - Module 18 - Integrating with External SystemJoget Workflow v5 Training Slides - Module 18 - Integrating with External System
Joget Workflow v5 Training Slides - Module 18 - Integrating with External System
 
AngularJS for Web and Mobile
 AngularJS for Web and Mobile AngularJS for Web and Mobile
AngularJS for Web and Mobile
 
Better User Experience with .NET
Better User Experience with .NETBetter User Experience with .NET
Better User Experience with .NET
 
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyRed Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
 
UI Testing for Your Xamarin.Forms Apps
UI Testing for Your Xamarin.Forms AppsUI Testing for Your Xamarin.Forms Apps
UI Testing for Your Xamarin.Forms Apps
 
Odo improving the developer experience on OpenShift - hack & sangria
Odo   improving the developer experience on OpenShift - hack & sangriaOdo   improving the developer experience on OpenShift - hack & sangria
Odo improving the developer experience on OpenShift - hack & sangria
 
PPT
PPTPPT
PPT
 
Automated Builds And UI Testing in SharePoint 2010 Development
Automated Builds And UI Testing in SharePoint 2010 DevelopmentAutomated Builds And UI Testing in SharePoint 2010 Development
Automated Builds And UI Testing in SharePoint 2010 Development
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2
 
Coded ui - lesson 1 - overview
Coded ui - lesson 1 - overviewCoded ui - lesson 1 - overview
Coded ui - lesson 1 - overview
 

Mehr von Aurélien Pupier

How to contribute textual tooling for apache camel in several id es
How to contribute textual tooling for apache camel in several id esHow to contribute textual tooling for apache camel in several id es
How to contribute textual tooling for apache camel in several id esAurélien Pupier
 
Feedback from an eclipse plugin developer to provide support to large set of ...
Feedback from an eclipse plugin developer to provide support to large set of ...Feedback from an eclipse plugin developer to provide support to large set of ...
Feedback from an eclipse plugin developer to provide support to large set of ...Aurélien Pupier
 
Adopting language server for apache camel feedback from a java/Eclipse plugi...
Adopting language server for apache camel  feedback from a java/Eclipse plugi...Adopting language server for apache camel  feedback from a java/Eclipse plugi...
Adopting language server for apache camel feedback from a java/Eclipse plugi...Aurélien Pupier
 
Why and how to leverage apache camel integration framework in your io t archi...
Why and how to leverage apache camel integration framework in your io t archi...Why and how to leverage apache camel integration framework in your io t archi...
Why and how to leverage apache camel integration framework in your io t archi...Aurélien Pupier
 
Master your integration projects on premise and in the cloud with fuse tooling
Master your integration projects on premise and in the cloud with fuse toolingMaster your integration projects on premise and in the cloud with fuse tooling
Master your integration projects on premise and in the cloud with fuse toolingAurélien Pupier
 
Classic middleware integration for your IoT Gateways integration
Classic middleware integration for your IoT Gateways integrationClassic middleware integration for your IoT Gateways integration
Classic middleware integration for your IoT Gateways integrationAurélien Pupier
 
Fast unit tests for Eclipse Plugins
Fast unit tests for Eclipse PluginsFast unit tests for Eclipse Plugins
Fast unit tests for Eclipse PluginsAurélien Pupier
 
Committing IDE meta files: misconceptions, misunderstandings, and solutions.
Committing IDE meta files: misconceptions, misunderstandings, and solutions.Committing IDE meta files: misconceptions, misunderstandings, and solutions.
Committing IDE meta files: misconceptions, misunderstandings, and solutions.Aurélien Pupier
 
How to contribute to Eclipse
How to contribute to EclipseHow to contribute to Eclipse
How to contribute to EclipseAurélien Pupier
 
Time to build and test results 3x faster - how we did it
Time to build and test results 3x faster - how we did itTime to build and test results 3x faster - how we did it
Time to build and test results 3x faster - how we did itAurélien Pupier
 
Take advantage of memory analyzer tool inside your continuous integration
Take advantage of memory analyzer tool inside your continuous integrationTake advantage of memory analyzer tool inside your continuous integration
Take advantage of memory analyzer tool inside your continuous integrationAurélien Pupier
 
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)Aurélien Pupier
 

Mehr von Aurélien Pupier (14)

How to contribute textual tooling for apache camel in several id es
How to contribute textual tooling for apache camel in several id esHow to contribute textual tooling for apache camel in several id es
How to contribute textual tooling for apache camel in several id es
 
Feedback from an eclipse plugin developer to provide support to large set of ...
Feedback from an eclipse plugin developer to provide support to large set of ...Feedback from an eclipse plugin developer to provide support to large set of ...
Feedback from an eclipse plugin developer to provide support to large set of ...
 
Adopting language server for apache camel feedback from a java/Eclipse plugi...
Adopting language server for apache camel  feedback from a java/Eclipse plugi...Adopting language server for apache camel  feedback from a java/Eclipse plugi...
Adopting language server for apache camel feedback from a java/Eclipse plugi...
 
Why and how to leverage apache camel integration framework in your io t archi...
Why and how to leverage apache camel integration framework in your io t archi...Why and how to leverage apache camel integration framework in your io t archi...
Why and how to leverage apache camel integration framework in your io t archi...
 
Master your integration projects on premise and in the cloud with fuse tooling
Master your integration projects on premise and in the cloud with fuse toolingMaster your integration projects on premise and in the cloud with fuse tooling
Master your integration projects on premise and in the cloud with fuse tooling
 
Classic middleware integration for your IoT Gateways integration
Classic middleware integration for your IoT Gateways integrationClassic middleware integration for your IoT Gateways integration
Classic middleware integration for your IoT Gateways integration
 
Fast unit tests for Eclipse Plugins
Fast unit tests for Eclipse PluginsFast unit tests for Eclipse Plugins
Fast unit tests for Eclipse Plugins
 
Committing IDE meta files: misconceptions, misunderstandings, and solutions.
Committing IDE meta files: misconceptions, misunderstandings, and solutions.Committing IDE meta files: misconceptions, misunderstandings, and solutions.
Committing IDE meta files: misconceptions, misunderstandings, and solutions.
 
How to contribute to Eclipse
How to contribute to EclipseHow to contribute to Eclipse
How to contribute to Eclipse
 
Time to build and test results 3x faster - how we did it
Time to build and test results 3x faster - how we did itTime to build and test results 3x faster - how we did it
Time to build and test results 3x faster - how we did it
 
Take advantage of memory analyzer tool inside your continuous integration
Take advantage of memory analyzer tool inside your continuous integrationTake advantage of memory analyzer tool inside your continuous integration
Take advantage of memory analyzer tool inside your continuous integration
 
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
 
What's new GMF for Juno?
What's new GMF for Juno?What's new GMF for Juno?
What's new GMF for Juno?
 
What's hot Juno?
What's hot Juno?What's hot Juno?
What's hot Juno?
 

Kürzlich hochgeladen

Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 

Kürzlich hochgeladen (20)

Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 

Functional Testing made easy with SWTBot

  • 1. Functional Testing made easy with SWTBot for Developers and Testers Aurelien Pupier - @apupier Studio Development Leader © 2015 Bonitasoft 2
  • 2. What is SWTBot? Java Framework for SWT automated UI tests © 2015 Bonitasoft 3 And also…
  • 3. SWTBot – General workings • Encapsulate UI components • Send SWT Events to simulate User interaction 4© 2015 Bonitasoft
  • 4. SWTBot – Sample 5© 2015 Bonitasoft bot.textWithLabel(“Name *”).setText(“userName”); bot.comboBox().select(“Text”); bot.textWithLabel(“Default value”).setText(“john”); bot.button(“Finish”).click();
  • 5. SWTBot – Advantages • Easy to understand for developers • Easy to write first shot • … Even a recorder • Access to Java API for assertions • Test code coverage 6© 2015 Bonitasoft
  • 6. SWTBot limitations (1/5) • Underlying components knowledge – Widget types – Eclipse wording 7© 2015 Bonitasoft Table or List? Combo or CCombo?
  • 7. SWTBot limitations (2/5) • Same widget at different place – SWTBotConstants.SWTBOT_WIDGET_ID_KEY – production code modified 8© 2015 Bonitasoft
  • 8. SWTBot limitations (3/5) • UI Thread synchronization  Robustness hard: – Correct implementation of waitUntil required – (even if Conditions provided) 9© 2015 Bonitasoft
  • 9. SWTBot limitations (4/5) • Java code not accessible for Java/Eclipse beginners – For all previously mentioned reasons 10© 2015 Bonitasoft
  • 10. SWTBot limitations (5/5) • Maintenance of tests: – Requires to be close to production code • Message updated (to fix a typo) • UI updated (from Combo to CCombo…) 11© 2015 Bonitasoft
  • 11. SWTBot conclusion SWTBot is an handy test tool for developers 12© 2015 Bonitasoft
  • 12. What about testers? • How to let testers writing Functional tests? – Do not care of implementation details 13© 2015 Bonitasoft
  • 13. Application Oriented API ‘Page Object Pattern’ 14© 2015 Bonitasoft
  • 14. Application Oriented API 15© 2015 Bonitasoft
  • 15. Page Pattern sample (1/2) 16© 2015 Bonitasoft new BotDataDialog(). .setName(“userName”) .setType(“Text”) .setDefaultValue(“john”) .finish(); bot.waitUntil(Conditions.shellIsActive(Messages.newVariable)); SWTBotShell shell = bot.activeShell(); bot.textWithLabel(Messages.name_mandatory).setText(“userName”); bot.comboBox().select(“Text”); bot.textWithLabel(Messages.defaultValue).setText(“john”); bot.button(IDialogConstants.FINISH_LABEL).click(); bot.waitUntil(Conditions.shellCloses(shell));
  • 16. Page Pattern sample (2/2) 17© 2015 Bonitasoft new BotDataDialog(). .setName(“userName”) .setType(“Text”) .setDefaultValue(“john”) .finish(); bot.waitUntil(Conditions.shellIsActive(Messages.newVariable)); SWTBotShell shell = bot.activeShell(); bot.textWithLabel(Messages.name_mandatory).setText(“userName”); bot.comboBox().select(“Text”); bot.textWithLabel(Messages.defaultValue).setText(“john”); bot.button(IDialogConstants.FINISH_LABEL).click(); bot.waitUntil(Conditions.shellCloses(shell));
  • 17. What decided us? • Successful implementation with Selenium and Chinese QA team • Code mess – Big static utility classes… – Sometimes right utility class hard to find • Robustness issue – CI infra updated  ~10% of UI tests unstable • Half-day for one test • Invite QA testers to join the party • Same tooling Development/QA 18© 2015 Bonitasoft
  • 18. Observed benefits Eases writing… … and maintaining Functional Tests … for Testers AND Developers – New UI test: Half-day  1 hour – More factorized code – Robustness 19© 2015 Bonitasoft
  • 19. Feedback on implementation • Setup time ~3 weeks • On the fly 20© 2015 Bonitasoft
  • 21. What’s next? • BDD – Get stake holders and user advocates to join the party – Talk about using Cucumber with SWTBot • RedDeer – Reuse the Eclipse components 22© 2015 Bonitasoft
  • 22. Visit us online bonitasoft.com Join our community Bonitasoft.org Download Bonitasoft.com/downloads Follow us on twitter @bonitasoft “Page” your App! @apupier © 2015 Bonitasoft 23