JBoss Wise is a Java library that makes it easy to test web services with little to no code. It allows dynamic invocation of web service operations by browsing WSDL models and populating request parameters. Users can define their own data models to map to service parameters using mappers like Smooks. Wise also includes a web-based GUI that allows testing services visually without XML or Java knowledge. The goal is to lower the barrier to web service testing and enable business analysts to perform acceptance tests.
1. JBoss Wise: breaking barriers to WS testing
Alessio Soldano
alessio.soldano@jboss.com
Principal Software Eng.
JBoss - Red Hat
October 22nd, 2013
Milan JBoss User Group
2. Let's invoke a WS in Java...
●
You've been given a WSDL (reference)...
●
...so you start by generating the stubs (JAXWS tools)
3. Let's invoke a WS in Java...
●
Then you import the sources in your IDE...
●
... finally you code against them an invoke the endpoint
4. Perhaps you automate the process a bit...
●
Maven plugins for generating the stubs automatically
... but ...
5. Pros / Cons
●
Your code is actually bound to the generated classes
(client – server coupling)
●
Good solution for clients of stable endpoints
●
Not suitable to quick testing of multiple/different endpoints
6. JBoss Wise
●
Java library for easily invoking webservices
●
Built on top of JBossWS stack
●
Goals
‣Effective
‣Easy
client/server decoupling
browsing of WSDL models
‣(nearly)zero-code
‣Lowering
invocation of WS operations
the technical entry level to WS testing
8. Dynamic client API
●
or browse the model to choose the method to call
●
What about parameters?
‣
non-trivial endpoints get and return structured data...
‣
we need Object instances to put in the invocation
Map...
9. WebParameter inspection + reflection
●
Get Java type from WebParameter instances
●
Use reflection to build up the desired data
●
... working on classes generated on-the-fly by Wise ...
●
ugly, unpractical, etc.
10. Wise mappers
●
Allow users to invoke endpoints using their own model
●
Map user model to internally generated client classes
●
Any custom mapper can be implemented
●
... moving the problem to defining the proper vehicle and
transformation of user data into target endpoint
parameters
11. Smooks mapper
●
“Smooks is an extensible framework for building
applications for processing XML and non XML data (CSV,
Java, ...) using Java”
with proper Smooks mappers, Wise can invoke a WS
endpoint given any model (even in different formats) !
13. Tree model
So the request / response model is really the core
concept here... what about something very simple yet
generic, with String only values?
●
Tree-like view model
●
kind of a DOM tree built on the
valid WS req/res space
14. Tree model usage
●
Get tree view model and populate it...
●
Invoke the endpoint and convert the result in another tree...
15. Tree model advantages
●
Detyped model... but still compliant to the WSDL/schema
●
Simple and generic...
enough to build a GUI !
Demo Time :-)
16. Wise GUI
●
Web based
‣
‣
usable everywhere (even on mobile...)
‣
●
no need for Eclipse / IDE
deployed on JBoss (even on Openshift...)
Focus on the data, not on the technology
‣
No WS, XML or Java knowledge required
‣
Fast / agile WS testing
‣
Enable business acceptance tests from analysts
17. Wise Invokes Services Easily
●
Wise is built on top of a JavaEE certified stack (JBossWS)
... this ensures core correctness and interoperability.
●
You're consuming WS services (based on WSDL / XSD)
‣
you're granted compliance with the contract
‣
... but you don't get your hands dirty with SOAP ;-)
Is it really that complex and inconvenient to call one of
those dreaded WSDL based WS services? ;-)
18. Future features (maybe...)
●
GUI user management
●
Import / export GUI environment
●
Multiple authentication options
●
Explicit WS-Policy support
●
Smooks Eclipse plugin for Wise mappers generation?
●
...
... but we need help from YOU !