SlideShare una empresa de Scribd logo
1 de 37
SoapUI Pro Plugin Workshop 
#SoapUIPlugins
WHY CREATE A SOAPUI PRO 
PLUGIN?
Plugin Scenarios 
 Integrate with other tools, platforms or 
technologies 
 Tailor functionality for specific APIs 
 Add new functionality for existing protocols 
 Add new protocols
Business Scenario 
 Target SoapUI Pros 40000+ paying customers 
 Plugin authors can charge for plugins in any way they 
want 
 SmartBear is planning a plugin “Marketplace” to help 
promoting and monetizing 
 Plugins can be promoted to all existing SoapUI and 
SoapUI Pro users (> 1 million) from within the tool 
 Join the ranks of Mulesoft, Swagger, Apiary, etc.
How are plugins distributed? 
 Via SmartBears Plugin Repository 
– Available from inside SoapUI Pro 
– One-click download and install 
 Commercialization and Licensing up to the 
plugin author 
 Can be distributed as standalone files also
How to Submit Your Plug-in Idea 
• Build Your Plug-in 
• Email Your Extension to soapuiplugins@smartbear.com 
with the following: 
• Plugin Name 
• Description 
• Creator 
• URL to read more 
• IMPORTANT: remember to change the extension first! 
We’ll change it back to .jar for you. 
• First 50 submissions will receive a T-shirt
PLUGIN INTERNALS
What is a plugin technically? 
 A single JAR file that contains 
– Plugin functionality 
– 3rd party libraries 
 Plugins are easiest written in Java or Groovy 
 Building and packaging easiest with Maven 
 Plugins are distribute either via the integrated 
repository or as standalone files
A plugin can contain 
 Actions - that users invoke via menus/toolbars 
 Listeners - that are triggered for specific events 
happening in SoapUI Pro 
 Factories : that add 
– UI objects (editors, inspectors) 
– Testing objects (TestSteps, Assertions) 
– Miscellaneous behavior 
 Any combination of the above
Plugin Annotations 
 Plugin classes are “marked” with 
corresponding Java annotations 
 When SoapUI Pro loads a plugin it looks for 
these annotated classes and configures them 
accordingly 
 Annotations exist for each possible extension 
point (Actions, Listeners, Factories, etc)
The @PluginInfo annotation 
 Provides plugin metadata 
 All plugins need to have one @PluginInfo 
annotated class 
@PluginConfiguration( 
groupId = "com.smartbear.plugins", 
name = "testplugin SoapUI Action", 
version = "0.1”, 
autoDetect = true, 
description = "testplugin SoapUI Action”, 
infoUrl = "" ) 
public class PluginConfig extends PluginAdapter {}
GETTING STARTED 
Languages and Tools
Tools 
 Java Editor or IDE (like Eclipse or IntelliJ IDEA) 
 Maven build tool 
 SoapUI Pro (trial will work fine)
Creating an empty plugin project 
Generate: mvn archetype:generate 
-DarchetypeGroupId=com.smartbear.maven.archetypes 
-DarchetypeArtifactId=soapui-plugin-archetype 
- 
DarchetypeCatalog=http://www.eviware.com/repository/maven2 
Prompts for name, package, version, language and type 
(lots more on that later) 
(Read more: 
https://github.com/olensmar/maven-soapui-plugin-archetype)
Build and install 
 The archetype creates a working plugin 
skeleton 
 Build the plugin with 
mvn clean:install 
 The .jar file in the target folder is your plugin!
Packaging 3rd party libraries 
 Need to be added to the created jar in a “libs” folder 
 Automate this with the maven assembly plugin 
 Have look at the sample plugins on GitHub 
 Build with 
mvn assembly:single 
 SoapUI Pro will automatically unpack and add jars to 
plugins classpath
PLUGIN TYPES 
I know this is tedious – but I want to show you all the possibilities
Plugin types – Actions 
 Action: creates an Action, by default at the Project level 
 @ActionConfiguration annotation specifies; 
– actionGroup: which popup menu (see ActionGroups class added by archetype) 
– toolbarPosition: which toolbar to show in 
– beforeAction/afterAction: position in menu/toolbar 
– iconPath / toolbarIcon: icons to show 
– keyStroke: keyboard shortcut 
– description: (used for tooltip) 
– separatorBefore/separatorAfter: adds surrounding separators 
 Annotated class must implement “SoapUIAction” interface 
– The “perform” method is called with the selected object when invoked 
 Use to add any kind of user-driven functionality
Plugin types – Discovery 
 Discovery: creates a custom REST Discovery method 
 @PluginDiscoveryMethod – no annotation properties 
 Annotated class must implement “DiscoveryMethod” 
interface 
 APIs can be discovered asynchronously 
 Invoked from “New Project “ dialog
Plugin types – Import 
 Import: creates a custom Project Importer 
 @PluginImportMethod – no annotation properties 
 Annotated class must implement “SoapUIAction” interface 
 For new ways of importing APIs – for example an external API file 
format 
 Invoked from “New Project” dialog
Plugin types – PanelBuilder 
 PanelBuilder: creates a PanelBuilder for a SoapUI object 
 @PluginPanelBuilder 
– targetModelItem property; the object class for which panels can be built 
 Annotated class must implement “PluginBuilder” 
 Used for building Desktop and Overview panels (main and bottom left) 
 Main use case: Create panels for custom TestSteps 
– Secondary: Overriding existing panels
Plugin types – Prefs 
 Prefs: creates a custom tab in the global Preferences 
 @PluginPrefs annotation – no properties 
 Annotated class must implement “Prefs” interface 
 Shows up as a tab in the Global Settings dialog 
 Use it for managing global settings related to your plugin 
– Project-specific settings are better managed via a custom Project action
Plugin types – Editors Views 
 RequestEditor/ResponseEditor: create a custom Editor view 
 @PluginRequestEditorView / @PluginResponseEditorView 
annotations 
– viewId property; name of the View 
 Annotated class must implement “EditorView” interface 
 Adds custom editor tabs to request/response message editors 
 For new message formats, specific APIs, etc.
Plugin types – Editor Inspectors 
 RequestInspector/ResponseInspector: create a custom Inspector 
tabs 
 @PluginRequestInspector, @PluginResponseInspector annotations 
– inspectorId property; name of the inspector 
 Annotated class must implement “EditorInspector” interface 
 Adds inspector tab to request/response message editors 
 For editing custom aspects of a request, for example together with a 
custom RequestFilter or RequestTransport
Plugin types - TestSteps 
 TestStep: creates a custom TestStep 
 @PluginTestStep annotation, properties: 
– typeName : internal id to uniquely identify this type of TestStep 
– name: a verbal name of the type of TestStep 
– description: description of what it does 
– iconPath: an icon to show in the toolbar (optional, but recommended) 
 Annotated class must implement TestStep interface (usually extends 
WsdlTestStepWithProperties) 
 Adds a new TestStep to be used with functional tests 
 Usually combined with a @PluginPanelBuilder for providing views
Plugin types – Assertion 
 Assertion: creates a custom assertion 
 @PluginTestAssertion annotations, properties; 
– id: unique identifier for this type of Assertion 
– name: name for the type of assertion 
– description: a description of the assertion 
– category: which category the assertion belongs to 
• Available categories defined in AssertionCategoryMapping 
 Implementing class needs to extend WsdlMessageAssertion and 
implement RequestAssertion or ResponseAssertion (or both) 
 Adds a new Assertion for asserting request or response messages 
during functional and load tests (and soon MockServices as well)
Plugin types - RequestFilter 
 RequestFilter: creates a custom Request filter 
 @PluginRequestFilter annotation 
– protocol property defines which URL protocol to apply to 
 Annotated class must implement “RequestFilter” interface 
 For modifying incoming/outgoing messages, for example; 
– Add tokens/content 
– Apply transformations 
– Validations
Plugin types - ValueProvider 
 ValueProvider: creates a custom property-expansion 
ValueProvider 
 @PluginValueProvider annotation 
– valueName property – the text that triggers the provider 
 Annotated class must implement 
“DynamicPropertyResolver.ValueProvider” interface 
 For inserting dynamic content into messages and property values, 
for example tokens, external data, etc.
Plugin types – Listeners 
 Listener: creates an event listener 
 @ListenerConfiguration annotation – no properties 
 Annotated class must implement one of the supported SoapUI 
listener interfaces 
 Powerful way to react to SoapUI events, for example you could; 
– If a TestCase fails – automatically report a bug in issuetracker 
– When a load-test finishes, automatically write results to database 
– When a project is added – prompt user if they want to do X 
– Etc…
Execution related Listener interfaces 
 Functional Tests: 
– TestRunListener 
– TestSuiteRunListener 
– ProjectRunListener 
 MockRunListener 
 LoadTestRunListener 
 SecurityTestRunListener 
 SubmitListener
Object-modification related listeners 
 WorkspaceListener 
– Notifies when projects get added/removed/opened/closed 
– Notifies when workspaces are switched 
 ProjectListener 
– Notifies when Interfaces, TestSuites, MockServices and Environments get 
added/removed 
– Notifies when projects are loaded / saved 
 InterfaceListener 
– Notifies when Operations and Requests are added/removed 
 TestSuiteListener 
– Notifies when TestCases, TestSteps, LoadTests and SecurityTests are 
added/removed 
 Most objects also support standard Java propertyListeners for 
observing changes
SOAPUI INTERNALS 
How to know your way around
The SoapUI Object Model 
 Defined in com.eviware.soapui.model.* packages 
 Workspace 
– Project 
• Interface->Operation->(Action)->Request 
• TestSuites->TestCase-> 
 TestStep/LoadTest/SecurityTest 
• MockServices->MockOperation->MockResponse 
 Common methods for navigating; 
– getXXXCount(), getXXXAt( index ), getXXXList() 
– getXXXs – gets a Map<String, XXX.class> 
– getYYY for getting parents
The SoapUI Pro API 
Javadoc available at 
http://www.soapui.org/apidocs/ 
Code completion is your friend  
Useful classes include 
 SoapUI (soon to be deprecated) 
 SimpleDialog 
 UISupport
UISupport 
Very useful class for interacting with the 
SoapUI Pro GUI 
 UISupport.showInfoMessage(String) 
 UISupport.confirm(String, String) 
 UISupport.selectAndShow(ModelItem) 
… and much more ..
How to get help! 
 Have a look at existing open-source plugins 
– RAML plugin: https://github.com/olensmar/soapui-raml-plugin 
– Swagger plugin: https://github.com/olensmar/soapui-swagger-plugin 
– API-Blueprint plugin: https://github.com/olensmar/soapui-blueprint- 
plugin 
 SoapUI open-source codebase is the foundation of 
SoapUI Pro 
 Don’t be afraid of asking on the forum, on twitter, etc
Demo 
Questions? 
#SoapUIPlugins

Más contenido relacionado

La actualidad más candente

Ppt of soap ui
Ppt of soap uiPpt of soap ui
Ppt of soap uipkslide28
 
Webservice performance testing with SoapUI
Webservice performance testing with SoapUIWebservice performance testing with SoapUI
Webservice performance testing with SoapUIPhuoc Nguyen
 
Testing with test_complete
Testing with test_completeTesting with test_complete
Testing with test_completebinuiweb
 
Automation Testing with TestComplete
Automation Testing with TestCompleteAutomation Testing with TestComplete
Automation Testing with TestCompleteRomSoft SRL
 
Web UI test automation instruments
Web UI test automation instrumentsWeb UI test automation instruments
Web UI test automation instrumentsArtem Nagornyi
 
Self-Generating Test Artifacts for Selenium/WebDriver
Self-Generating Test Artifacts for Selenium/WebDriverSelf-Generating Test Artifacts for Selenium/WebDriver
Self-Generating Test Artifacts for Selenium/WebDriverseleniumconf
 
Test automation using selenium
Test automation using seleniumTest automation using selenium
Test automation using seleniumshreyas JC
 
Silk Performer Presentation v1
Silk Performer Presentation v1Silk Performer Presentation v1
Silk Performer Presentation v1Sun Technlogies
 
Selenium notes
Selenium notesSelenium notes
Selenium noteswholcomb
 
Advanced Selenium Workshop
Advanced Selenium WorkshopAdvanced Selenium Workshop
Advanced Selenium WorkshopClever Moe
 

La actualidad más candente (18)

Ppt of soap ui
Ppt of soap uiPpt of soap ui
Ppt of soap ui
 
Webservice performance testing with SoapUI
Webservice performance testing with SoapUIWebservice performance testing with SoapUI
Webservice performance testing with SoapUI
 
Testing with test_complete
Testing with test_completeTesting with test_complete
Testing with test_complete
 
Selenium
SeleniumSelenium
Selenium
 
Testing soapui
Testing soapuiTesting soapui
Testing soapui
 
Test Complete
Test CompleteTest Complete
Test Complete
 
Qa process
Qa processQa process
Qa process
 
Automation Testing with TestComplete
Automation Testing with TestCompleteAutomation Testing with TestComplete
Automation Testing with TestComplete
 
Web UI test automation instruments
Web UI test automation instrumentsWeb UI test automation instruments
Web UI test automation instruments
 
Selenium web driver
Selenium web driverSelenium web driver
Selenium web driver
 
Self-Generating Test Artifacts for Selenium/WebDriver
Self-Generating Test Artifacts for Selenium/WebDriverSelf-Generating Test Artifacts for Selenium/WebDriver
Self-Generating Test Artifacts for Selenium/WebDriver
 
Test automation using selenium
Test automation using seleniumTest automation using selenium
Test automation using selenium
 
Introduction to Selenium Web Driver
Introduction to Selenium Web DriverIntroduction to Selenium Web Driver
Introduction to Selenium Web Driver
 
Silk Performer Presentation v1
Silk Performer Presentation v1Silk Performer Presentation v1
Silk Performer Presentation v1
 
Selenium ppt
Selenium pptSelenium ppt
Selenium ppt
 
Selenium notes
Selenium notesSelenium notes
Selenium notes
 
Selenium WebDriver
Selenium WebDriverSelenium WebDriver
Selenium WebDriver
 
Advanced Selenium Workshop
Advanced Selenium WorkshopAdvanced Selenium Workshop
Advanced Selenium Workshop
 

Similar a SoapUI Pro Plugin Workshop #SoapUIPlugins

Rewriting a Plugin Architecture 3 Times to Harness the API Economy
Rewriting a Plugin Architecture 3 Times to Harness the API EconomyRewriting a Plugin Architecture 3 Times to Harness the API Economy
Rewriting a Plugin Architecture 3 Times to Harness the API EconomyTim Pettersen
 
SwtBot: Unit Testing Made Easy
SwtBot: Unit Testing Made EasySwtBot: Unit Testing Made Easy
SwtBot: Unit Testing Made EasyAnkit Goel
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...Paul Withers
 
Qtp Basics
Qtp BasicsQtp Basics
Qtp Basicsmehramit
 
Oh so you test? - A guide to testing on Android from Unit to Mutation
Oh so you test? - A guide to testing on Android from Unit to MutationOh so you test? - A guide to testing on Android from Unit to Mutation
Oh so you test? - A guide to testing on Android from Unit to MutationPaul Blundell
 
Understanding and extending p2 for fun and profit
Understanding and extending p2 for fun and profitUnderstanding and extending p2 for fun and profit
Understanding and extending p2 for fun and profitPascal Rapicault
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-AppsSelenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Appschrisb206 chrisb206
 
Plugins And Making Your Own
Plugins And Making Your OwnPlugins And Making Your Own
Plugins And Making Your OwnLambert Beekhuis
 
Start Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMSStart Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMSMagnolia
 
Mastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium SuccessfullyMastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium SuccessfullySpringPeople
 
Testing types functional and nonfunctional - Kati Holasz
Testing types   functional and nonfunctional - Kati HolaszTesting types   functional and nonfunctional - Kati Holasz
Testing types functional and nonfunctional - Kati HolaszHolasz Kati
 
Testing Java Web Apps With Selenium
Testing Java Web Apps With SeleniumTesting Java Web Apps With Selenium
Testing Java Web Apps With SeleniumMarakana Inc.
 
Automation testing by Durgasoft in Hyderabad
Automation testing by Durgasoft in HyderabadAutomation testing by Durgasoft in Hyderabad
Automation testing by Durgasoft in HyderabadDurga Prasad
 
Automation testing material by Durgasoft,hyderabad
Automation testing material by Durgasoft,hyderabadAutomation testing material by Durgasoft,hyderabad
Automation testing material by Durgasoft,hyderabadDurga Prasad
 

Similar a SoapUI Pro Plugin Workshop #SoapUIPlugins (20)

Rewriting a Plugin Architecture 3 Times to Harness the API Economy
Rewriting a Plugin Architecture 3 Times to Harness the API EconomyRewriting a Plugin Architecture 3 Times to Harness the API Economy
Rewriting a Plugin Architecture 3 Times to Harness the API Economy
 
SwtBot: Unit Testing Made Easy
SwtBot: Unit Testing Made EasySwtBot: Unit Testing Made Easy
SwtBot: Unit Testing Made Easy
 
Creation&imitation
Creation&imitationCreation&imitation
Creation&imitation
 
Advance RCP
Advance RCPAdvance RCP
Advance RCP
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
 
Qtp Basics
Qtp BasicsQtp Basics
Qtp Basics
 
Oh so you test? - A guide to testing on Android from Unit to Mutation
Oh so you test? - A guide to testing on Android from Unit to MutationOh so you test? - A guide to testing on Android from Unit to Mutation
Oh so you test? - A guide to testing on Android from Unit to Mutation
 
Understanding and extending p2 for fun and profit
Understanding and extending p2 for fun and profitUnderstanding and extending p2 for fun and profit
Understanding and extending p2 for fun and profit
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-AppsSelenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
 
Gui
GuiGui
Gui
 
Plugins And Making Your Own
Plugins And Making Your OwnPlugins And Making Your Own
Plugins And Making Your Own
 
Start Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMSStart Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMS
 
Mastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium SuccessfullyMastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium Successfully
 
Testing types functional and nonfunctional - Kati Holasz
Testing types   functional and nonfunctional - Kati HolaszTesting types   functional and nonfunctional - Kati Holasz
Testing types functional and nonfunctional - Kati Holasz
 
Testing Java Web Apps With Selenium
Testing Java Web Apps With SeleniumTesting Java Web Apps With Selenium
Testing Java Web Apps With Selenium
 
Automation testing by Durgasoft in Hyderabad
Automation testing by Durgasoft in HyderabadAutomation testing by Durgasoft in Hyderabad
Automation testing by Durgasoft in Hyderabad
 
Automation testing material by Durgasoft,hyderabad
Automation testing material by Durgasoft,hyderabadAutomation testing material by Durgasoft,hyderabad
Automation testing material by Durgasoft,hyderabad
 
myslide1
myslide1myslide1
myslide1
 
myslide6
myslide6myslide6
myslide6
 

Más de SmartBear

Enforcing Your Organization's API Design Standards with SwaggerHub
Enforcing Your Organization's API Design Standards with SwaggerHubEnforcing Your Organization's API Design Standards with SwaggerHub
Enforcing Your Organization's API Design Standards with SwaggerHubSmartBear
 
Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1SmartBear
 
IATA Open Air: How API Standardization Enables Innovation in the Airline Indu...
IATA Open Air: How API Standardization Enables Innovation in the Airline Indu...IATA Open Air: How API Standardization Enables Innovation in the Airline Indu...
IATA Open Air: How API Standardization Enables Innovation in the Airline Indu...SmartBear
 
The State of API 2020 Webinar – Exploring Trends, Tools & Takeaways to Drive ...
The State of API 2020 Webinar – Exploring Trends, Tools & Takeaways to Drive ...The State of API 2020 Webinar – Exploring Trends, Tools & Takeaways to Drive ...
The State of API 2020 Webinar – Exploring Trends, Tools & Takeaways to Drive ...SmartBear
 
How LISI Automotive Accelerated Application Delivery with SwaggerHub
How LISI Automotive Accelerated Application Delivery with SwaggerHubHow LISI Automotive Accelerated Application Delivery with SwaggerHub
How LISI Automotive Accelerated Application Delivery with SwaggerHubSmartBear
 
Standardising APIs: Powering the Platform Economy in Financial Services
Standardising APIs: Powering the Platform Economy in Financial ServicesStandardising APIs: Powering the Platform Economy in Financial Services
Standardising APIs: Powering the Platform Economy in Financial ServicesSmartBear
 
Getting Started with API Standardization in SwaggerHub
Getting Started with API Standardization in SwaggerHubGetting Started with API Standardization in SwaggerHub
Getting Started with API Standardization in SwaggerHubSmartBear
 
Adopting a Design-First Approach to API Development with SwaggerHub
Adopting a Design-First Approach to API Development with SwaggerHubAdopting a Design-First Approach to API Development with SwaggerHub
Adopting a Design-First Approach to API Development with SwaggerHubSmartBear
 
Standardizing APIs Across Your Organization with Swagger and OAS | A SmartBea...
Standardizing APIs Across Your Organization with Swagger and OAS | A SmartBea...Standardizing APIs Across Your Organization with Swagger and OAS | A SmartBea...
Standardizing APIs Across Your Organization with Swagger and OAS | A SmartBea...SmartBear
 
Effective API Lifecycle Management
Effective API Lifecycle Management Effective API Lifecycle Management
Effective API Lifecycle Management SmartBear
 
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...SmartBear
 
The API Lifecycle Series: Evolving API Development and Testing from Open Sour...
The API Lifecycle Series: Evolving API Development and Testing from Open Sour...The API Lifecycle Series: Evolving API Development and Testing from Open Sour...
The API Lifecycle Series: Evolving API Development and Testing from Open Sour...SmartBear
 
Artificial intelligence for faster and smarter software testing - Galway Mee...
Artificial intelligence for faster and smarter software testing  - Galway Mee...Artificial intelligence for faster and smarter software testing  - Galway Mee...
Artificial intelligence for faster and smarter software testing - Galway Mee...SmartBear
 
Successfully Implementing BDD in an Agile World
Successfully Implementing BDD in an Agile WorldSuccessfully Implementing BDD in an Agile World
Successfully Implementing BDD in an Agile WorldSmartBear
 
The Best Kept Secrets of Code Review | SmartBear Webinar
The Best Kept Secrets of Code Review | SmartBear WebinarThe Best Kept Secrets of Code Review | SmartBear Webinar
The Best Kept Secrets of Code Review | SmartBear WebinarSmartBear
 
How Capital One Scaled API Design to Deliver New Products Faster
How Capital One Scaled API Design to Deliver New Products FasterHow Capital One Scaled API Design to Deliver New Products Faster
How Capital One Scaled API Design to Deliver New Products FasterSmartBear
 
Testing Without a GUI Using TestComplete
 Testing Without a GUI Using TestComplete Testing Without a GUI Using TestComplete
Testing Without a GUI Using TestCompleteSmartBear
 
Hidden Treasure - TestComplete Script Extensions
Hidden Treasure - TestComplete Script ExtensionsHidden Treasure - TestComplete Script Extensions
Hidden Treasure - TestComplete Script ExtensionsSmartBear
 
How Bdd Can Save Agile
 How Bdd Can Save Agile How Bdd Can Save Agile
How Bdd Can Save AgileSmartBear
 
API Automation and TDD to Implement Master Data Survivorship Rules
API Automation and TDD to Implement Master Data Survivorship RulesAPI Automation and TDD to Implement Master Data Survivorship Rules
API Automation and TDD to Implement Master Data Survivorship RulesSmartBear
 

Más de SmartBear (20)

Enforcing Your Organization's API Design Standards with SwaggerHub
Enforcing Your Organization's API Design Standards with SwaggerHubEnforcing Your Organization's API Design Standards with SwaggerHub
Enforcing Your Organization's API Design Standards with SwaggerHub
 
Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1
 
IATA Open Air: How API Standardization Enables Innovation in the Airline Indu...
IATA Open Air: How API Standardization Enables Innovation in the Airline Indu...IATA Open Air: How API Standardization Enables Innovation in the Airline Indu...
IATA Open Air: How API Standardization Enables Innovation in the Airline Indu...
 
The State of API 2020 Webinar – Exploring Trends, Tools & Takeaways to Drive ...
The State of API 2020 Webinar – Exploring Trends, Tools & Takeaways to Drive ...The State of API 2020 Webinar – Exploring Trends, Tools & Takeaways to Drive ...
The State of API 2020 Webinar – Exploring Trends, Tools & Takeaways to Drive ...
 
How LISI Automotive Accelerated Application Delivery with SwaggerHub
How LISI Automotive Accelerated Application Delivery with SwaggerHubHow LISI Automotive Accelerated Application Delivery with SwaggerHub
How LISI Automotive Accelerated Application Delivery with SwaggerHub
 
Standardising APIs: Powering the Platform Economy in Financial Services
Standardising APIs: Powering the Platform Economy in Financial ServicesStandardising APIs: Powering the Platform Economy in Financial Services
Standardising APIs: Powering the Platform Economy in Financial Services
 
Getting Started with API Standardization in SwaggerHub
Getting Started with API Standardization in SwaggerHubGetting Started with API Standardization in SwaggerHub
Getting Started with API Standardization in SwaggerHub
 
Adopting a Design-First Approach to API Development with SwaggerHub
Adopting a Design-First Approach to API Development with SwaggerHubAdopting a Design-First Approach to API Development with SwaggerHub
Adopting a Design-First Approach to API Development with SwaggerHub
 
Standardizing APIs Across Your Organization with Swagger and OAS | A SmartBea...
Standardizing APIs Across Your Organization with Swagger and OAS | A SmartBea...Standardizing APIs Across Your Organization with Swagger and OAS | A SmartBea...
Standardizing APIs Across Your Organization with Swagger and OAS | A SmartBea...
 
Effective API Lifecycle Management
Effective API Lifecycle Management Effective API Lifecycle Management
Effective API Lifecycle Management
 
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
 
The API Lifecycle Series: Evolving API Development and Testing from Open Sour...
The API Lifecycle Series: Evolving API Development and Testing from Open Sour...The API Lifecycle Series: Evolving API Development and Testing from Open Sour...
The API Lifecycle Series: Evolving API Development and Testing from Open Sour...
 
Artificial intelligence for faster and smarter software testing - Galway Mee...
Artificial intelligence for faster and smarter software testing  - Galway Mee...Artificial intelligence for faster and smarter software testing  - Galway Mee...
Artificial intelligence for faster and smarter software testing - Galway Mee...
 
Successfully Implementing BDD in an Agile World
Successfully Implementing BDD in an Agile WorldSuccessfully Implementing BDD in an Agile World
Successfully Implementing BDD in an Agile World
 
The Best Kept Secrets of Code Review | SmartBear Webinar
The Best Kept Secrets of Code Review | SmartBear WebinarThe Best Kept Secrets of Code Review | SmartBear Webinar
The Best Kept Secrets of Code Review | SmartBear Webinar
 
How Capital One Scaled API Design to Deliver New Products Faster
How Capital One Scaled API Design to Deliver New Products FasterHow Capital One Scaled API Design to Deliver New Products Faster
How Capital One Scaled API Design to Deliver New Products Faster
 
Testing Without a GUI Using TestComplete
 Testing Without a GUI Using TestComplete Testing Without a GUI Using TestComplete
Testing Without a GUI Using TestComplete
 
Hidden Treasure - TestComplete Script Extensions
Hidden Treasure - TestComplete Script ExtensionsHidden Treasure - TestComplete Script Extensions
Hidden Treasure - TestComplete Script Extensions
 
How Bdd Can Save Agile
 How Bdd Can Save Agile How Bdd Can Save Agile
How Bdd Can Save Agile
 
API Automation and TDD to Implement Master Data Survivorship Rules
API Automation and TDD to Implement Master Data Survivorship RulesAPI Automation and TDD to Implement Master Data Survivorship Rules
API Automation and TDD to Implement Master Data Survivorship Rules
 

Último

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
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
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
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
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
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineeringssuserb3a23b
 
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
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
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
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 

Último (20)

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
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
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...
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
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
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineering
 
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...
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
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
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 

SoapUI Pro Plugin Workshop #SoapUIPlugins

  • 1. SoapUI Pro Plugin Workshop #SoapUIPlugins
  • 2. WHY CREATE A SOAPUI PRO PLUGIN?
  • 3. Plugin Scenarios  Integrate with other tools, platforms or technologies  Tailor functionality for specific APIs  Add new functionality for existing protocols  Add new protocols
  • 4. Business Scenario  Target SoapUI Pros 40000+ paying customers  Plugin authors can charge for plugins in any way they want  SmartBear is planning a plugin “Marketplace” to help promoting and monetizing  Plugins can be promoted to all existing SoapUI and SoapUI Pro users (> 1 million) from within the tool  Join the ranks of Mulesoft, Swagger, Apiary, etc.
  • 5. How are plugins distributed?  Via SmartBears Plugin Repository – Available from inside SoapUI Pro – One-click download and install  Commercialization and Licensing up to the plugin author  Can be distributed as standalone files also
  • 6. How to Submit Your Plug-in Idea • Build Your Plug-in • Email Your Extension to soapuiplugins@smartbear.com with the following: • Plugin Name • Description • Creator • URL to read more • IMPORTANT: remember to change the extension first! We’ll change it back to .jar for you. • First 50 submissions will receive a T-shirt
  • 8. What is a plugin technically?  A single JAR file that contains – Plugin functionality – 3rd party libraries  Plugins are easiest written in Java or Groovy  Building and packaging easiest with Maven  Plugins are distribute either via the integrated repository or as standalone files
  • 9. A plugin can contain  Actions - that users invoke via menus/toolbars  Listeners - that are triggered for specific events happening in SoapUI Pro  Factories : that add – UI objects (editors, inspectors) – Testing objects (TestSteps, Assertions) – Miscellaneous behavior  Any combination of the above
  • 10. Plugin Annotations  Plugin classes are “marked” with corresponding Java annotations  When SoapUI Pro loads a plugin it looks for these annotated classes and configures them accordingly  Annotations exist for each possible extension point (Actions, Listeners, Factories, etc)
  • 11. The @PluginInfo annotation  Provides plugin metadata  All plugins need to have one @PluginInfo annotated class @PluginConfiguration( groupId = "com.smartbear.plugins", name = "testplugin SoapUI Action", version = "0.1”, autoDetect = true, description = "testplugin SoapUI Action”, infoUrl = "" ) public class PluginConfig extends PluginAdapter {}
  • 13. Tools  Java Editor or IDE (like Eclipse or IntelliJ IDEA)  Maven build tool  SoapUI Pro (trial will work fine)
  • 14. Creating an empty plugin project Generate: mvn archetype:generate -DarchetypeGroupId=com.smartbear.maven.archetypes -DarchetypeArtifactId=soapui-plugin-archetype - DarchetypeCatalog=http://www.eviware.com/repository/maven2 Prompts for name, package, version, language and type (lots more on that later) (Read more: https://github.com/olensmar/maven-soapui-plugin-archetype)
  • 15. Build and install  The archetype creates a working plugin skeleton  Build the plugin with mvn clean:install  The .jar file in the target folder is your plugin!
  • 16. Packaging 3rd party libraries  Need to be added to the created jar in a “libs” folder  Automate this with the maven assembly plugin  Have look at the sample plugins on GitHub  Build with mvn assembly:single  SoapUI Pro will automatically unpack and add jars to plugins classpath
  • 17. PLUGIN TYPES I know this is tedious – but I want to show you all the possibilities
  • 18. Plugin types – Actions  Action: creates an Action, by default at the Project level  @ActionConfiguration annotation specifies; – actionGroup: which popup menu (see ActionGroups class added by archetype) – toolbarPosition: which toolbar to show in – beforeAction/afterAction: position in menu/toolbar – iconPath / toolbarIcon: icons to show – keyStroke: keyboard shortcut – description: (used for tooltip) – separatorBefore/separatorAfter: adds surrounding separators  Annotated class must implement “SoapUIAction” interface – The “perform” method is called with the selected object when invoked  Use to add any kind of user-driven functionality
  • 19. Plugin types – Discovery  Discovery: creates a custom REST Discovery method  @PluginDiscoveryMethod – no annotation properties  Annotated class must implement “DiscoveryMethod” interface  APIs can be discovered asynchronously  Invoked from “New Project “ dialog
  • 20. Plugin types – Import  Import: creates a custom Project Importer  @PluginImportMethod – no annotation properties  Annotated class must implement “SoapUIAction” interface  For new ways of importing APIs – for example an external API file format  Invoked from “New Project” dialog
  • 21. Plugin types – PanelBuilder  PanelBuilder: creates a PanelBuilder for a SoapUI object  @PluginPanelBuilder – targetModelItem property; the object class for which panels can be built  Annotated class must implement “PluginBuilder”  Used for building Desktop and Overview panels (main and bottom left)  Main use case: Create panels for custom TestSteps – Secondary: Overriding existing panels
  • 22. Plugin types – Prefs  Prefs: creates a custom tab in the global Preferences  @PluginPrefs annotation – no properties  Annotated class must implement “Prefs” interface  Shows up as a tab in the Global Settings dialog  Use it for managing global settings related to your plugin – Project-specific settings are better managed via a custom Project action
  • 23. Plugin types – Editors Views  RequestEditor/ResponseEditor: create a custom Editor view  @PluginRequestEditorView / @PluginResponseEditorView annotations – viewId property; name of the View  Annotated class must implement “EditorView” interface  Adds custom editor tabs to request/response message editors  For new message formats, specific APIs, etc.
  • 24. Plugin types – Editor Inspectors  RequestInspector/ResponseInspector: create a custom Inspector tabs  @PluginRequestInspector, @PluginResponseInspector annotations – inspectorId property; name of the inspector  Annotated class must implement “EditorInspector” interface  Adds inspector tab to request/response message editors  For editing custom aspects of a request, for example together with a custom RequestFilter or RequestTransport
  • 25. Plugin types - TestSteps  TestStep: creates a custom TestStep  @PluginTestStep annotation, properties: – typeName : internal id to uniquely identify this type of TestStep – name: a verbal name of the type of TestStep – description: description of what it does – iconPath: an icon to show in the toolbar (optional, but recommended)  Annotated class must implement TestStep interface (usually extends WsdlTestStepWithProperties)  Adds a new TestStep to be used with functional tests  Usually combined with a @PluginPanelBuilder for providing views
  • 26. Plugin types – Assertion  Assertion: creates a custom assertion  @PluginTestAssertion annotations, properties; – id: unique identifier for this type of Assertion – name: name for the type of assertion – description: a description of the assertion – category: which category the assertion belongs to • Available categories defined in AssertionCategoryMapping  Implementing class needs to extend WsdlMessageAssertion and implement RequestAssertion or ResponseAssertion (or both)  Adds a new Assertion for asserting request or response messages during functional and load tests (and soon MockServices as well)
  • 27. Plugin types - RequestFilter  RequestFilter: creates a custom Request filter  @PluginRequestFilter annotation – protocol property defines which URL protocol to apply to  Annotated class must implement “RequestFilter” interface  For modifying incoming/outgoing messages, for example; – Add tokens/content – Apply transformations – Validations
  • 28. Plugin types - ValueProvider  ValueProvider: creates a custom property-expansion ValueProvider  @PluginValueProvider annotation – valueName property – the text that triggers the provider  Annotated class must implement “DynamicPropertyResolver.ValueProvider” interface  For inserting dynamic content into messages and property values, for example tokens, external data, etc.
  • 29. Plugin types – Listeners  Listener: creates an event listener  @ListenerConfiguration annotation – no properties  Annotated class must implement one of the supported SoapUI listener interfaces  Powerful way to react to SoapUI events, for example you could; – If a TestCase fails – automatically report a bug in issuetracker – When a load-test finishes, automatically write results to database – When a project is added – prompt user if they want to do X – Etc…
  • 30. Execution related Listener interfaces  Functional Tests: – TestRunListener – TestSuiteRunListener – ProjectRunListener  MockRunListener  LoadTestRunListener  SecurityTestRunListener  SubmitListener
  • 31. Object-modification related listeners  WorkspaceListener – Notifies when projects get added/removed/opened/closed – Notifies when workspaces are switched  ProjectListener – Notifies when Interfaces, TestSuites, MockServices and Environments get added/removed – Notifies when projects are loaded / saved  InterfaceListener – Notifies when Operations and Requests are added/removed  TestSuiteListener – Notifies when TestCases, TestSteps, LoadTests and SecurityTests are added/removed  Most objects also support standard Java propertyListeners for observing changes
  • 32. SOAPUI INTERNALS How to know your way around
  • 33. The SoapUI Object Model  Defined in com.eviware.soapui.model.* packages  Workspace – Project • Interface->Operation->(Action)->Request • TestSuites->TestCase->  TestStep/LoadTest/SecurityTest • MockServices->MockOperation->MockResponse  Common methods for navigating; – getXXXCount(), getXXXAt( index ), getXXXList() – getXXXs – gets a Map<String, XXX.class> – getYYY for getting parents
  • 34. The SoapUI Pro API Javadoc available at http://www.soapui.org/apidocs/ Code completion is your friend  Useful classes include  SoapUI (soon to be deprecated)  SimpleDialog  UISupport
  • 35. UISupport Very useful class for interacting with the SoapUI Pro GUI  UISupport.showInfoMessage(String)  UISupport.confirm(String, String)  UISupport.selectAndShow(ModelItem) … and much more ..
  • 36. How to get help!  Have a look at existing open-source plugins – RAML plugin: https://github.com/olensmar/soapui-raml-plugin – Swagger plugin: https://github.com/olensmar/soapui-swagger-plugin – API-Blueprint plugin: https://github.com/olensmar/soapui-blueprint- plugin  SoapUI open-source codebase is the foundation of SoapUI Pro  Don’t be afraid of asking on the forum, on twitter, etc