SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

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
 

Tendances (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
 

Similaire à 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
 

Similaire à 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
 

Plus 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
 

Plus 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
 

Dernier

Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
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
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
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
 
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
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingShane Coughlan
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 

Dernier (20)

Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
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
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
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...
 
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
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 

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