Over the past month, I have had the opportunity to look at a number of web services testing tools, the structure of various publicly facing Web Service APIs, and a number of companies who are offering web services API management.
Why Should I Implement a Web API?
Web API’s have long been used to allow programmers access to functionality via a well defined interface without the need to understand exactly how that functionality is implemented. A web API (more generically referred to as a web service), extends this notion to the interaction between a client and a server. There are a variety of motivations for implementing a Web API. Perhaps the most compelling reasons include:
- Consolidating common functionality shared across many entities
- Harnessing the creativity of your partners (Think Google Maps)
- Extending your reach (think YouTube or Flickr)
- Monetizing your existing data
- Driving traffic to your website via embedded links in the Web Services data
A Trend Towards Web APIs
The website programmableweb provides some interesting statistics on the momentum of the trend towards Web APIs. The site lists over 1400 published APIs and almost 5000 mashup websites that leverage these APIs. While some of these APIs are from high profile sites like Google Maps, others are from more enterprise focused companies.
Another indicator of the growth of Web APIs is the number of venture capital funded companies the focus on helping companies manage their Web API offerings. This management includes metering access, obtaining access keys, ongoing uptime monitoring, security, and analysis of customer usage. These companies include the following:
Web API Critical Decisions
The second decision is to decide what data format to use when returning information to the client. The most popular data formats are XML and JSON, but there are many other formats supported by big players such as YouTube, which supports the Atom data format. The following table provides a view of the protocols and formats supported by the 10 most popular Web APIs (data obtained from www.ProgrammableWeb.com).
|Flickr||REST, SOAP, XML-RPC||XML, JSON, PHP|
|YouTube||GData, Atom||GData, RSS|
|Amazon eCommerce||REST, SOAP||XML|
|REST||XML, JSON, RSS, Atom|
The primary focus of my peak at Web API test tools was to determine the level of support for REST web services in these tools. As noted in previous posts, we recently completed a large REST testing project using SoapUI and we were interested in what other tools were out there. The following is a brief synopsis of what we found:
- RestClient – A free java tool with a simple GUI that will let you do very basic ad hoc functional testing of REST web services. There is no provision for test cases or validation of returned results.
- SoupUI – A very robust open source functional test tool, with some load testing capabilities. This tool supports both SOAP and REST web services. A professional version sells for $349 with support for more enterprise specific features. Previous blog posts have document our use of this tool for both functional and load testing.
- SoapSonar – A commercial SOAP functional test tool with capabilities similar to SoapUI, but with extremely limited support for REST web services. There is a crippled free version and the commercial version is $750 for a single user license.
- QEngine – This is a commercial SOAP functional and load test tool. A single user license was around $1000. There was no REST support. One interesting aspect of this product was that it used a Web client interface rather that a Java GUI as most of the others tools do.
- WebInject – This is a free open source functional test tool for SOAP or REST web services. The implementation is rather primitive with hand coded XML scripts for test cases.
- JMeter – An open source load testing tool for any web UI or http protocol including REST and SOAP. Very robust capabilities, but with a somewhat complex architecture and awkward interface. Books have been written on this tool and classes are offered by a number of companies. Will probably use this tool for our next Web API load testing project.
- TestComplete – This is a commercial functional and load testing tool that costs about $1000 with a wide range of testing capabilities, but no specific support for REST web services. It did have support for SOAP. Note that QualityLogic uses TestComplete for its PageSense product line.
- Grinder – This is a Java based open source HTTP/HTTPS load testing tool. The open source project has been dormant for many years and there is no GUI interface to the tool. Nevertheless, there are a number of posts on the Internet stating that this tool has been used successfully for Web services testing.
- WebService Studio – A nice open source ad hoc query tool for SOAP based web services. Point it at any WSDL and it provides a very easy to use GUI based interface for making calls and looking at results.
There were a number of tools capable of doing Web API testing that were outside of the scope of my investigation due to cost and other factors. These included: HP’s LoadRunner, IBM’s Rational Tester, Spirent’s Avalanche, and iTKO’s Lisa. Selenium, a very popular open source functional tool for Websites, was also deemed out of scope as it is exclusively GUI centric. OpenSTA, an open source load testing tool, was also not evaluated as it appears to have been dormant since 2007. This was a commercial product put into open source by Cyrano.
At QualityLogic we are excited about the opportunity to leverage our many decades of API testing experience in the Web API domain. For more info on QualityLogic’s Web API testing services, click here.