There is an app—a computer application—for just about everything these days. The sheer number of apps and the range of their functions boggles the mind. Furthermore, if an app for a given problem or need does not exist, it seems to be easy to develop it. This short development time is likely due to advances in the field of APIs.
API or Application Programming Interface is a well-thought-out methodology of building computer software. Simply put, it involves having all the components of software development readily available to programmers: the software definitions, protocols, and tools used to build programs. The specifications for APIs are incredibly varied and can include routines, data structures, and variables, to name a few. Regardless, APIs follow a number of general principles.
One of the important points to consider in API is the choice between SOAP (Simple Object Access Protocol) and REST (Representational State Transfer). To make this choice soundly is to understand the difference between them. REST is for operations based on data; its main use is CRUD—Create, Read, Update, Delete—operations for public API over the internet. SOAP is meant to expose named operations; it focuses on pieces of application logic, with little focus on data.
As a general rule, most web developers opt for REST-based API tools. This is because, since it uses standard HTTP, REST is simpler to understand and use. Furthermore, REST offers better performance and scalability, better browser support, and the ability to cache reads. It also allows for multiple data formats, whereas SOAP permits only XML.
That said, SOAP does have its uses. SOAP supports SSL and WS-Security, thus adding extra security features to the development environment. Also, SOAP is better able to handle transactions across the internet. Finally, SOAP-based messaging is more reliable than REST-based messaging, since SOAP has successful/retry logic onboard.
The API approach, as one would expect, makes software development much easier. API is often known best for its use in developing web applications, but it is not limited to only web apps. The development of operating systems, databases, software libraries and even computer hardware often owe much to a good API.
This fact, however, poses the question: what makes a good API? The answer to this question largely depends on a number of factors, the first being what the programmer needs it to develop. Naturally, the ideal API for developing an operating system will differ from the ideal API needed for a database or web application. Another consideration is whether or not a programmer will use a REST- or SOAP-based API. Since APIs can vary wildly, there is a wide range of tools and programs that one can use to construct exactly the kind of API one will need. The sheer number of API tools is nearly impossible to count—much less fully cover in one article—so we will cover thirty of the more well-known API tools here.
As its name implies, REST-Assured is designed to test REST services, and it does so remarkably well. What sets this Domain-Specific Language (DSL) apart is that it is able to test Java applications in REST. Normally, REST testing and validation for Java-based services would be more difficult than testing services grounded in more dynamic languages, but REST-Assured is purpose-built to simplify matters. With REST-Assured, users no longer have any need to create or use boilerplate code to interact with a REST service. Given that template code adds an extra level of complexity, testing Java apps can be more time-consuming than most. REST-Assured brings the simplicity of dynamic languages—Ruby and Groovy, to name two—into the Java domain, allowing it to integrate with Java-based projects flawlessly. Fully able to support Request/Responses with XML and JSON, REST-Assured also supports BBD syntax, including Given/When/Then. For REST-oriented Java programmers, REST-Assured is a solid programming tool.
For programmers who are focused on REST-based applications, Postman is quite easy to use, and lets developers hit the ground running. Initially, Postman was a Chrome plugin, but it has recently had its functionality expanded to Linux-, Mac-, and Windows-based systems. Given its capabilities, it is easy to see why. Postman lets users perform exploratory API testing on the fly, but it also has enough power to develop integrated solutions in its own right. Postman’s interface is remarkably rich, and includes Run, Test, Document, and Monitoring features. In addition to exploratory testing, Postman can run automated testing on applications. Its functionality includes support for the Swagger and RAML formats and can write Boolean tests within its interface, all without needing a new language. Finally, Postman can easily package and send off all a user’s requests and expected responses to another user, making knowledge-sharing a breeze. REST-based developers who work on multiple browsers will get a lot from Postman.
A long-time veteran of the API field, SoapUI has been hailed as the most widely popular API testing tool in the world. Its name is slightly misleading, as this program supports REST and SOAP applications, and can integrate with 13 API management platforms. Available as both an open source version and a Pro version, SoapUI offers considerable flexibility. Even the free version is fully loaded and offers Drag and Drop Test creation, complex scenario creation, Asynchronous Testing, and Mock Service. Users can also use Groovy to write custom code, or even modify SoapUI with access to the full source code—a boast the Pro version can’t make. Those that opt for the Pro version trade the source code for more ease of use and extra functionality. These Pro bonuses include a form editor, an XPath assertion wizard, and an SQL query builder. For development teams with complex API testing scenarios, SoapUI is an excellent place to start.
A jack-of-all-trades amongst its brethren, JMeter has everything a programmer needs for API testing. Initially designed for load testing, JMeter has since expanded its repertoire to include functional testing. Able to automatically work with CSV files, this program allows for unique parameter values in API tests. JMeter is fully compatible with Jenkins, which allows users to integrate API tests into CI pipelines. Not limited to use in static elements, JMeter can utilize dynamic resources in performance testing. Furthermore, JMeter allows for replaying of API test results, thus permitting users to see their test results from every possible angle. With its ability to load and test multiple protocol types—Web, FTP, LDAP, and Mail, to name a few—JMeter’s versatility is unquestioned. Finally, its results are available in a complete, ready-to-go HTML report. If developers need a way to multitask (to create functional tests to be leveraged in performance tests), Jmeter is the way to go.
One of the newer kids on the API block, KarateDSL brings the cutting edge of API technology into users’ hands. Based on the Cucumber library, takes the creation of step definitions out of the picture, since it comes preloaded with all the step definitions it will ever need. This way, testers can focus on writing meaningful web service tests, even if they have little-to-no knowledge of Java; in fact, even non-programmers can devise tests with KarateDSL. This testing tool allows users to re-use their payload data and retain all user-defined functions from any test they write. KarateDSL offers excellent flexibility in that it can test any web service that sequences calls and verifies that the responses fit desired parameters. It even supports configuration switching or staging, as well as multithreaded parallel execution. KarateDSL may not have stood the test of time yet, but it shows more than enough potential. Anyone who opts for KarateDSL will not regret it.
For developers whose applications center on HTTP, Fiddler is easily their new best friend. This tool is more than up to the task when it comes to website debugging. With Fiddler, users can monitor, modify, and salvage HTTP requests for reuse, streamlining website debugging considerably. Fiddler doesn’t stop there, however; its extensions make it an effective API tool in its own right. Able to spot a page’s “total weight,” as well as HTTP caching and compression, Fiddler can detect and isolate any bottlenecks in a website. Its APITest extension, alongside the FiddlerCore.NET class library, allows it to handle API testing, from lighthearted tests to hardcore programming, with everything in between. Furthermore, Fiddler can log and debug any HTTP traffic to and from a computer, and even run security tests, right up to decrypting all site traffic. If users are running HTTP tests with .NET languages, this is one Fiddler you do not want to keep on a roof.
When it comes to running tests for websites and web-based applications, HttpMaster Express certainly earns its name. While this tool is certainly able to test REST-based web services, it is fully capable of monitoring API responses. HttpMaster’s functionality is state-of-the-art, with a wide array of features. Its Command Line Interface allows users to automate the execution of any projects they are running. Its Request Data Builder and Response Data Viewer allow users to parse existing HTML to rapidly build a request body while working with viewers in multiple data formats. HttpMaster offers the standard REST methods, but also allows for custom verbs, as well as defined global parameters for multiple website requests. Users are able to customize their API requests as needed and can integrate dynamic data with their requests. HttpMaster is also compatible with Swagger, which can easily be imported into a new project. When it comes to web development, this program truly is a Master.
For an exhaustive, free-to-use HTTP client library with full .NET compatibility, few do the job better than RestSharp. This tool makes building hardy applications a breeze; it is easy to use and install, and supports Get, Post, Put, Patch, Head, Options, and Delete operations. Its intuitive, streamlined interface takes out a lot of guesswork, cutting out considerable development time with its ability to seamlessly handle public APIs and raw data from HTTP requests. RestSharp’s functionality allows for serialization and deserialization, as well as synchronous and asynchronous requests. Its ability to parse both XML and JSON is invaluable, especially with regards to fuzzy element name matching. RestSharp can upload files and forms in multiple parts, which can cut down on upload times. Furthermore, its authentication protocols include oAuth1, oAuth2, Basic, NLTM, and Parameter-based authentication. When one considers all these features, it becomes easy to see why RestSharp is one of the hottest REST-based tools in the field.
If users need an effective tool for building, debugging, and testing, they need look no further than the Rest Console. This REST-based HTTP Client Visualizer and Constructor makes devising query parameters a cinch and can highlight syntax for easy identification of errors. The Console’s user interface is highly intuitive and allows users to develop customized headers, and even boasts an Auto-Complete feature. Its authentication protocols are quite flexible, and support Plain, Basic, and OAuth authentication, as well as custom authentication. The interface itself is also fully customizable; users can derive their own keyboard navigation and shortcuts with ease. Far from content to rest on its laurels, the Console is being updated with additional functionality. In the future, users can look forward to Auto-Complete on all fields, a Request History, HAR Support, and the ability to send binary files as body. Developers of REST-based applications will have an invaluable asset in the Rest Console.
For users that need a server to run tests, but don’t have a server available, the RoboHydra Server is exactly what the doctor ordered. This HTTP testing tool carves out a unique niche all its own as a stand-in server. Users simply connect their clients-under-test to it and run the tests; RoboHydra then puts out the same responses as if from a regular server. Remarkably versatile, RoboHydra can test any HTTP, HTTPS, or WebSockets client with no difficulty. It can handle GUIs with a public API, mobile applications, and complex Java-based programs that use a server data-store, just to name a few. RoboHydra allows for both exploratory testing and debugging, and lets users modify its behavior via the web interface. Finally, RoboHydra can reverse proxy requests, increasing its utility considerably. When server space is not immediately available, and developers need to run a test suite or duplicate an error, the RoboHydra Server is the one to call.
Another tool for REST-based API testing, Hippie-Swagger is tough to beat, and for very good reason. This tool comes preloaded with a copy of Hippie onboard, bringing its intuitive consistency, middlewares, and custom serializer and parser support with it. With its stringent testing standards, Hippie-Swagger misses absolutely nothing when it comes to API tests. In addition to behavior validation, this tool reviews the swagger documentation with a fine-tooth comb. Swagger file parameters, request/response body information, paths, and everything in between are validated, and any missing or inaccurate information is an automatic failure. Likewise, if any requests or responses, even one, don’t match up with the swagger file criteria, the program throws an automatic exception—test failure. With Hippie-Swagger, users can rest easy knowing that their file documentation lines up with real-world expectations. Added to this tool’s accurate, easy-to-read assertion messages, and one can see that Hippie-Swagger has earned its strut.
For open source automated tests on web apps and web-based services, developers need look no further than WebInject. This command line tool can test any system component with an HTTP interface, including JSP, CGI, AJAX, Servlets, SOAP, REST, and XML web services. WebInject readily operates as a test harness and can create suites of fully automated functional, regression, and acceptance tests. This allows users to run multiple test cases, while WebInject collects the results and devises a report. With its own user interface, this tool can stand on its own as a full test framework, but it is not limited to solo testing. WebInject is equally capable of serving as a test runner that other applications can call on. Although it uses XML to define and load test cases, WebInject can operate on any platform with Perl interpretation. If developers need a handy test automation tool with a bit of extra flexibility, they won’t go astray with WebInject.
If REST-testers and microbenchmarks are in need of something completely different, PyRestTest may be just what they are looking for. This Python-based API tool is limited to Mac-based and Linux-based systems and is quite easy to utilize. This program’s tests are all in basic YAML or JSON configuration files; users need not provide any kind of additional code. Since PyRestTest is written entirely in Python its logic is fully extensible, and can support various add-ons. PyRestTest’s dependencies are minimal, which lets it deploy on-server quickly, making it ideal for smoke-tests or system health-checks. Able to devise full test scenarios, PyRestTest supports Generate, Extract, and Validate mechanisms. When a test fails, this program returns an exit code, which users can slot into automated configuration management tools, which in turn yields fully parseable logs. With its adaptable functionality, any user will concede that PyRestTest is worthy of a flying circus all by itself.
API developers with strong roots in Ruby will find a real gem in Airborne. This open-source API automation test tool is grounded in Ruby and RSpec and is compatible with both Rack- and Rails-based applications. A full programming framework, Airborne has no user interface of its own, so users will need to memorize a few key methods along with the fundamentals of Ruby and RSpec to get the most out of it. Thankfully, Airborne makes it easy for users new to programming to quickly pick these up along the way. Those that do so will find plenty of features vital to an API framework. Airborne includes wrappers to simplify calls, assertions, the ability to extend and create assertions, chaining, and the ability to recycle parts of API calls in the next call. Whether a user is a Ruby newbie or has a good deal of programming experience, Airborne will serve them well.
For every kind of API testing, users need an extensive library, and with so many programming languages, it can be hard to know where to turn. That is where Unirest comes in; this application is a lightweight library of virtually every HTTP request client. Unirest offers support to all the major programming languages: Node, Python, Ruby, Objective-C, PHP, .NET, and Java. Unirest also sports a documentation page that acts as a quick reference guide; here, users can skim through all existing REST methods. In addition, Unirest can combine with xUnit or BDD runner to become a test tool in its own right. Furthermore, when using RapidAPI, users can make HTTP requests to any API endpoint; Unirest even includes code snips to show how to create the proper call request for the endpoint. If API testers are looking for a solid resource for web development, they won’t go wrong by picking up a Unirest library card.
While mocking in real life is hardly something to encourage, the ability to mock API endpoints is a valuable asset, and that is precisely what the Mockbin does. With Mockbin, users can produce customized endpoints for a variety of operations, such as endpoint mock-ups, testing, and tracking HTTP requests and responses to and from APIs, libraries, and sockets. Mockbin can use any archived HTTP response object to create a custom endpoint for virtually any purpose the user requires. Free of the limitation to only Get and Post operations, Mockbin can accept all standard methods, and even includes an override protocol. When it comes to in-browser testing, Mockbin works with HTML, XML, and YAML in addition to JSON; users are no longer limited to one language in their test output. Able to log and inspect calls to custom endpoints, Mockbin can accurately assess how clients call up the API. If users need a mock endpoint, they will be certain to find something in the Mockbin that will help them.
One of the best-kept secrets of the API universe, the Citrus Framework is one of the best open-source API automation tools in service today. Able to run integration tests for virtually any data format, Citrus works with REST, SOAP, HTTP, and JMS, to name only a few. As a test automator, Citrus can control test flow with simulated interface partners for numerous protocols such as HTTP, JMS, and TCP/IP. Its message validation features include validating JSON messages, JSON path elements, XML message payloads, and XML tree comparisons, to list a handful. With the ability to customize functions, write custom test actions, and execute Groovy code, Citrus provides a great deal of flexibility. Despite not being well-known, the Citrus Framework has stood the test of time, as has its ability to create tests with Java or XML. Just as its namesake is an important dietary staple, the Citrus Framework should be a staple in any API tester’s arsenal.
Arguably the most popular open-source Web automation framework in service, Selenium has been adapting and evolving with Web technology ever since the 2000s. The framework of choice for expert scripters and programmers, Selenium’s technology has formed the nuclei of other automation tools, including Watir, Protractor, and Robot Framework. Able to support Windows, Mac, and Linux systems, Selenium works across virtually any browser, from Chrome to Internet Explorer. Selenium scripts can be written in all programming languages—Java, Groovy, Python, C#, Ruby, PHP, and Pearl—which lets programmers from virtually any background make use of it. With Selenium, developers can write advanced scripts for practically any complex situation, provided they have the level of technical skill to do so. Selenium demands a heavy price in technical skill, but users who make the cut will find an exemplary development asset in this tool. If API testers feel they are up to the challenge of Selenium, they will reap impressive programming rewards.
Stemming from Selenium’s development lineage, Katalon Studio offers powerful solutions for mobile and web-based application testing. Where it sure demands a high level of technical skill, Katalon welcomes programmers of all skill levels and offers tool-sets for each. Newcomers will find it easy to get started on a project and commence automation testing, while veterans will find ways to save time on libraries and scripting. Katalon Studio is laughably easy to deploy, as everything a user needs—frameworks, integrations, and plugins—are all rolled into one multi-system package. The user interface is remarkably easy to use, making it even easier for newer users to create, run, and oversee tests in no time flat. In the same vein as Google, Katalon Studios provides its own web analytics, for a comprehensive assessment of test results portal. Finally, the Katalon support community is over 100K strong, with presence across YouTube, GitHub, and Udemy. Anyone interesting in performing web-based automation tests will find and discover that the Katalon Studio has plenty to offer.
When it comes to both commercial and functional testing, few tools are more well-known than UFT. Formally known as Unified Functional Testing, UFT offers a comprehensive toolkit for desktop-, mobile-, and web-based applications. Able to handle API, web services, and GUI testing, UFT registers object control and testing processes via Visual Basic Scripting Edition. UFT’s Graphical Canvas allows users to manage test parameters and actions, change the order of tests, and run and debug tests. UFT also boasts image-based recognition, enabling test protocols to learn as humans do, and thus keep pace with controls beyond factory defaults. Able to support a command interface by integrating with Jenkins or other CI tools, UFT is also compatible with Mercury Business Process Testing and Mercury Quality Center. If API developers need an effective, adaptable toolset for functional tests, UFT delivers in spades. Any programmer who uses Unified Functional Testing will not be sorry.
Hailing from the proud lineage of Ruby-based API automation suites, Watir is an excellent open-source addition to any developer’s toolbelt. Short for Web Application Testing In Ruby, Watir, pronounced like “water”, is compatible with all the most popular web browsers: Chrome, Internet Explorer/Edge, Firefox, Safari, and Opera. Able to integrate flawlessly with BBD tools—Cucumber, RSpec, and Test/Unit, to name a few—Watir supports data-driven testing with complete ease. Watir stands out in that it consists of several smaller projects, though users will focus mainly on watir-classic, watir-webdriver, and watirspec. Leveraging Ruby’s Object Linking and Embedding functionality, watir-classic drives browsers programmatically, directly through the OLE protocol. With its roots in Selenium 2.0, including the HTML specification, watir-webdriver is always W3C-compliant. As the executable specification of Watir, the watirspec ties the other two together. For users who are familiar with both Ruby and Selenium, a sip of Watir may be exactly what is needed.
Another data-driven testing platform, the IBM Rational Functional Tester is a success story of API versatility. Able to support a variety of applications—Java, .NET, SAP, Flex, and AJAX—the RFT performs functional and regression tests flawlessly. With its Storyboard functionality, this program breaks down testing into natural language alongside screenshots, simplifying editing and visualization. In other words, the Tester records an entire test session and then runs it back in story format. With ScriptAssure technology, the RFT can automate users’ most frequently-run tests, even across multiple sets of test data. The Tester can also record user actions and then customize them with an entire suite of options, allowing for highly intelligent scripting and script maintenance. Far from being a solo act, the RFT smoothly integrates with its siblings, such as the IBM Rational Team Concert and the Rational Quality Manager, or any other Jazz-based IBM application. If a developer needs a rational tester, IBM has them covered.
From the cutting edge of technology – almost extending into the realm of sci-fi – Eggplant emerges to bring users a highly intelligent, user-focused approach to API testing. What truly sets Eggplant apart is its use of artificial intelligence; Eggplant maximizes machine learning and analytics to forge a bond of efficiency and effectiveness between man and machine. With separate tools that focus exclusively on functional and performance testing, Eggplant can validate any user experience on any platform. The Eggplant Manager focuses on executing tests via REST API, regardless of what CI tool initiated the tests. Working alongside the Eggplant Automation Cloud and Eggplant Network, the Manager can easily emulate any necessary network conditions. Finally, to automate the entire automation process, Eggplant’s AI algorithms ceaselessly track failure patterns and automate test cases, boosting productivity and speed to stratospheric levels. Anyone who claims that artificial intelligence is a threat has obviously never met a user of Eggplant.
When it comes to providing agile support to DevOps methodologies, Tricentis Tosca is an asset like no other. This model-based automation tool allows users to readily optimize and reuse test assets as they see fit. Tosca supports a myriad of technologies and applications—web and mobile to name only two—in addition to SOAP-based and REST-based API. For end-to-end testing, Tosca helps users develop maintainable, easy-to-use tests. For users already familiar with SoapUI, Tosca can readily import any SoapUI tests they have, and reuse them across multiple channels. Tricentis Tosca’s functionality also includes features for integration management, risk analysis, and distributed execution. Finally, it allows for easy collaboration on test cases, to reduce the learning curve. With its array of features, Tosca easily fits into any Agile or DevOps testing cycle. Any programmer who needs to automate or reuse API tests in either REST or SOAP will be glad to have Tricentis Tosca in his toolkit.
A comprehensive test automation framework if there ever was one, Ranorex supports testing for desktop, web, and mobile applications. Offering a complete, all-in-one API testing tool suite, Ranorex works with Edge, Chrome, Safari, and Firefox browsers. With Ranorex’s built-in testing methodology, users of all skill levels can develop test scripts and deploy them in one day. Ranorex’s reporting functionality is easy to understand and makes use of error logs, charts, and screenshots to identify any errors that occur during testing. These reports can easily be summarized as PDF files, or customized and exported however users see fit. Ranorex also boasts GUI recognition, record/playback options, reusable test scripts, and codeless test creation. Any user can pick this tool up and devise a professional test script, with or without programming experience. With Selenium integration and a low price point, Ranorex is an ideal start-point for many first-time API testers.
Amongst the open-source API frameworks, the Robot Framework provides a high-quality generic testing tool suite. This automation framework utilizes the keyword-driven approach to acceptance testing and the acceptance test-driven development methodology. Robot comes pre-loaded with an impressive test automation arsenal, but its repertoire can be expanded further with the Python and Java test libraries. Users who are familiar with the Selenium WebDriver will find that it makes a ready external library for the Robot Framework, thanks to its modular architecture. Robot is more than capable when it comes to web testing, but clever engineers can also leverage it for mobile testing as an automation framework for both Android and iOS. Users who are familiar with the keyword-driven approach will find this framework is an excellent jumping-off point for API testing. Even experienced testers will find a lot to love about the Robot Framework.
For validating API description documents, Dredd is the best command-line tool this side of Mega City One. After a thorough check of the documentation, Dredd scans the API description’s every step, to ensure that the responses line up with the predicted ones. Fully compatible with API Blueprint and Swagger, Dredd supports multiple programming languages, including Go, Node.js, Perl, PHP, Python, Ruby, and Rust. Dredd also supports writing hooks, which facilitate testing setup and teardown, and can work with Linux, macOS, and Windows-based systems. Regardless of the system used, Dredd treats every Request and Response file to the same stringent check against expected responses. Perfectly suited to running API tests from the CI/CD pipeline, Dredd can also handle many advanced test definitions without a hitch. Web developers can rest easy with this tool; when it comes to API validation, Dredd is the law.
Create, edit, customize, and share visual sitemaps integrated with Google Analytics for easy discovery, planning, and collaboration.