SlideShare a Scribd company logo
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
Ad

More Related Content

What's hot (18)

Ppt of soap ui
Ppt of soap uiPpt of soap ui
Ppt of soap ui
pkslide28
 
Webservice performance testing with SoapUI
Webservice performance testing with SoapUIWebservice performance testing with SoapUI
Webservice performance testing with SoapUI
Phuoc Nguyen
 
Testing with test_complete
Testing with test_completeTesting with test_complete
Testing with test_complete
binuiweb
 
Selenium
SeleniumSelenium
Selenium
Sun Technlogies
 
Testing soapui
Testing soapuiTesting soapui
Testing soapui
Shahid Shaik
 
Test Complete
Test CompleteTest Complete
Test Complete
RomSoft SRL
 
Qa process
Qa processQa process
Qa process
Aila Bogasieru
 
Automation Testing with TestComplete
Automation Testing with TestCompleteAutomation Testing with TestComplete
Automation Testing with TestComplete
RomSoft SRL
 
Web UI test automation instruments
Web UI test automation instrumentsWeb UI test automation instruments
Web UI test automation instruments
Artem Nagornyi
 
Selenium web driver
Selenium web driverSelenium web driver
Selenium web driver
Sun Technlogies
 
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
seleniumconf
 
Test automation using selenium
Test automation using seleniumTest automation using selenium
Test automation using selenium
shreyas JC
 
Introduction to Selenium Web Driver
Introduction to Selenium Web DriverIntroduction to Selenium Web Driver
Introduction to Selenium Web Driver
Return on Intelligence
 
Silk Performer Presentation v1
Silk Performer Presentation v1Silk Performer Presentation v1
Silk Performer Presentation v1
Sun Technlogies
 
Selenium ppt
Selenium pptSelenium ppt
Selenium ppt
Aneesh Rangarajan
 
Selenium notes
Selenium notesSelenium notes
Selenium notes
wholcomb
 
Selenium WebDriver
Selenium WebDriverSelenium WebDriver
Selenium WebDriver
Yuriy Bezgachnyuk
 
Advanced Selenium Workshop
Advanced Selenium WorkshopAdvanced Selenium Workshop
Advanced Selenium Workshop
Clever Moe
 
Ppt of soap ui
Ppt of soap uiPpt of soap ui
Ppt of soap ui
pkslide28
 
Webservice performance testing with SoapUI
Webservice performance testing with SoapUIWebservice performance testing with SoapUI
Webservice performance testing with SoapUI
Phuoc Nguyen
 
Testing with test_complete
Testing with test_completeTesting with test_complete
Testing with test_complete
binuiweb
 
Automation Testing with TestComplete
Automation Testing with TestCompleteAutomation Testing with TestComplete
Automation Testing with TestComplete
RomSoft SRL
 
Web UI test automation instruments
Web UI test automation instrumentsWeb UI test automation instruments
Web UI test automation instruments
Artem 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/WebDriver
seleniumconf
 
Test automation using selenium
Test automation using seleniumTest automation using selenium
Test automation using selenium
shreyas JC
 
Silk Performer Presentation v1
Silk Performer Presentation v1Silk Performer Presentation v1
Silk Performer Presentation v1
Sun Technlogies
 
Selenium notes
Selenium notesSelenium notes
Selenium notes
wholcomb
 
Advanced Selenium Workshop
Advanced Selenium WorkshopAdvanced Selenium Workshop
Advanced Selenium Workshop
Clever Moe
 

Similar to 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
Tim Pettersen
 
SwtBot: Unit Testing Made Easy
SwtBot: Unit Testing Made EasySwtBot: Unit Testing Made Easy
SwtBot: Unit Testing Made Easy
Ankit Goel
 
Creation&imitation
Creation&imitationCreation&imitation
Creation&imitation
Tae Young Lee
 
Advance RCP
Advance RCPAdvance RCP
Advance RCP
Rahul Shukla
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
Sandeep Chawla
 
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 Basics
mehramit
 
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
Paul 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 profit
Pascal 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-Apps
chrisb206 chrisb206
 
Gui
GuiGui
Gui
Sardar Alam
 
Plugins And Making Your Own
Plugins And Making Your OwnPlugins And Making Your Own
Plugins And Making Your Own
Lambert Beekhuis
 
Start Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMSStart Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMS
Magnolia
 
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
SpringPeople
 
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
Holasz Kati
 
Testing Java Web Apps With Selenium
Testing Java Web Apps With SeleniumTesting Java Web Apps With Selenium
Testing Java Web Apps With Selenium
Marakana Inc.
 
Automation testing by Durgasoft in Hyderabad
Automation testing by Durgasoft in HyderabadAutomation testing by Durgasoft in Hyderabad
Automation testing by Durgasoft in Hyderabad
Durga Prasad
 
Automation testing material by Durgasoft,hyderabad
Automation testing material by Durgasoft,hyderabadAutomation testing material by Durgasoft,hyderabad
Automation testing material by Durgasoft,hyderabad
Durga Prasad
 
NewSeriesSlideShare
NewSeriesSlideShareNewSeriesSlideShare
NewSeriesSlideShare
Sandeep Putrevu
 
myslide1
myslide1myslide1
myslide1
Sandeep Putrevu
 
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
Tim Pettersen
 
SwtBot: Unit Testing Made Easy
SwtBot: Unit Testing Made EasySwtBot: Unit Testing Made Easy
SwtBot: Unit Testing Made Easy
Ankit 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 Basics
mehramit
 
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
Paul 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 profit
Pascal 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-Apps
chrisb206 chrisb206
 
Plugins And Making Your Own
Plugins And Making Your OwnPlugins And Making Your Own
Plugins And Making Your Own
Lambert Beekhuis
 
Start Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMSStart Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMS
Magnolia
 
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
SpringPeople
 
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
Holasz Kati
 
Testing Java Web Apps With Selenium
Testing Java Web Apps With SeleniumTesting Java Web Apps With Selenium
Testing Java Web Apps With Selenium
Marakana Inc.
 
Automation testing by Durgasoft in Hyderabad
Automation testing by Durgasoft in HyderabadAutomation testing by Durgasoft in Hyderabad
Automation testing by Durgasoft in Hyderabad
Durga Prasad
 
Automation testing material by Durgasoft,hyderabad
Automation testing material by Durgasoft,hyderabadAutomation testing material by Durgasoft,hyderabad
Automation testing material by Durgasoft,hyderabad
Durga Prasad
 
Ad

More from 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
SmartBear
 
Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1
SmartBear
 
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 SwaggerHub
SmartBear
 
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
SmartBear
 
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
SmartBear
 
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
SmartBear
 
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 World
SmartBear
 
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
SmartBear
 
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
SmartBear
 
Testing Without a GUI Using TestComplete
 Testing Without a GUI Using TestComplete Testing Without a GUI Using TestComplete
Testing Without a GUI Using TestComplete
SmartBear
 
Hidden Treasure - TestComplete Script Extensions
Hidden Treasure - TestComplete Script ExtensionsHidden Treasure - TestComplete Script Extensions
Hidden Treasure - TestComplete Script Extensions
SmartBear
 
How Bdd Can Save Agile
 How Bdd Can Save Agile How Bdd Can Save Agile
How Bdd Can Save Agile
SmartBear
 
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
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 SwaggerHub
SmartBear
 
Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1
SmartBear
 
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 SwaggerHub
SmartBear
 
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
SmartBear
 
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
SmartBear
 
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
SmartBear
 
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 World
SmartBear
 
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
SmartBear
 
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
SmartBear
 
Testing Without a GUI Using TestComplete
 Testing Without a GUI Using TestComplete Testing Without a GUI Using TestComplete
Testing Without a GUI Using TestComplete
SmartBear
 
Hidden Treasure - TestComplete Script Extensions
Hidden Treasure - TestComplete Script ExtensionsHidden Treasure - TestComplete Script Extensions
Hidden Treasure - TestComplete Script Extensions
SmartBear
 
How Bdd Can Save Agile
 How Bdd Can Save Agile How Bdd Can Save Agile
How Bdd Can Save Agile
SmartBear
 
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
SmartBear
 
Ad

Recently uploaded (20)

Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
How can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptxHow can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptx
laravinson24
 
Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025
kashifyounis067
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
AxisTechnolabs
 
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
How can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptxHow can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptx
laravinson24
 
Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025
kashifyounis067
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
AxisTechnolabs
 

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 [email protected] 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