Content deleted Content added
adding reference |
Correcting opening sentence and no space between references |
||
Line 1:
▲[[API]] testing is a type of [[software testing]] that involves testing APIs directly and as part of [[integration testing]] to determine if they meet expectations for functionality, reliability, performance, and security.<ref name="reichart1">[http://searchsoftwarequality.techtarget.com/tip/Testing-APIs-protects-applications-and-reputations Testing APIs protects applications and reputations], by Amy Reichert, SearchSoftwareQuality March 2015</ref> Since APIs lack a [[Graphical_user_interface|GUI]], API testing is performed at the [[Communications_protocol#Layering|message layer]]. <ref name="stickyminds">[http://www.stickyminds.com/interview/all-about-api-testing-interview-jonathan-cooper All About API Testing: An Interview with Jonathan Cooper], by Cameron Philipp-Edmonds, Stickyminds August 19, 2014</ref> API testing is now considered critical for automating testing because APIs now serve as the primary interface to [[application logic]] and because [[Graphical user interface testing|GUI tests]] are difficult to maintain with the short release cycles and frequent changes commonly used with [[Agile software development]] and [[DevOps]]). <ref name="forrblog">[http://blogs.forrester.com/diego_lo_giudice/15-04-23-the_forrester_wave_evaluation_of_functional_test_automation_fta_is_out_and_its_all_about_going_be?cm_mmc=RSS-_-BT-_-63-_-blog_1769 The Forrester Wave™ Evaluation Of Functional Test Automation (FTA) Is Out And It's All About Going Beyond GUI Testing], by Diego Lo Giudice, [[Forrester]] April 23, 2015</ref> <ref name="layers">[http://www.gartner.com/document/2645817?ref=QuickSearch Produce Better Software by Using a Layered Testing Strategy], by Sean Kenefick, [[Gartner]] January 7, 2014</ref>
Line 6 ⟶ 5:
API testing involves testing APIs directly (in isolation) and as part of the end-to-end transactions exercised during integration testing.<ref name="reichart1"/> Beyond [[Representational state transfer|RESTful APIs]], these transactions include multiple types of endpoints such as [[web services]], [[Enterprise service bus|ESBs]], [[database]]s, [[Mainframe computer|mainframes]], [[Web application|web UIs]], and [[Enterprise resource planning|ERPs]]. API testing is performed on APIs that the development team produces as well as APIs that the team consumes within their application (including third-party APIs).<ref name="reichart2">[http://searchsoftwarequality.techtarget.com/tip/Onus-for-third-party-APIs-is-on-enterprise-developers Onus for third-party APIs is on enterprise developers], by Amy Reichert, SearchSoftwareQuality July 2014</ref>
API testing is used to determine whether APIs return the correct response (in the expected format) for a broad range of feasible requests, react properly to [[edge cases]] such as failures and unexpected/extreme inputs, deliver responses in an [[Service-level agreement|acceptable amount of time]], and respond securely to potential [[Cyberwarfare|security attacks]].
API testing commonly includes testing [[Representational state transfer|REST]] APIs or [[SOAP]] [[web services]] with [[JSON]] or [[XML]] [[Payload (computing)|message payloads]] being sent over [[HTTP]], [[HTTPS]], [[Java Message Service|JMS]], and [[IBM WebSphere MQ|MQ]].<ref name="stickyminds"/><ref name="guidance">[http://www.gartner.com/document/2827918 A Guidance Framework for Designing a Great Web API], by Eric Knipp and Gary Olliffe , [[Gartner]] August 20, 2014</ref> It can also include message formats such as [[Society for Worldwide Interbank Financial Telecommunication|SWIFT]], [[Financial_Information_eXchange|FIX]], [[Electronic data interchange|EDI]] and similar fixed-length formats, [[Comma-separated values|CSV]], [[ISO 8583]] and [[Protocol Buffers]] being sent over
[[Communications_protocol|transports/protocols]] such as [[TCP/IP]], [[ISO 8583]], [[MQTT]], [[Financial_Information_eXchange|FIX]], [[Java remote method invocation|RMI]], [[SMTP]], [[TIBCO Rendezvous]], and [[Financial_Information_eXchange|FIX]].
==API testing, GUI testing, and test automation==
API Testing is recognized as being more suitable for [[test automation]] and [[continuous testing]] (especially the automation used with [[Agile software development]] and [[DevOps]]) than GUI testing.
* '''System complexity:''' GUI tests can't sufficiently verify functional paths and back-end APIs/services associated with multitier architectures. APIs are considered the most stable interface to the system under test.
Line 18 ⟶ 17:
* '''Short release cycles with fast feedback loops:''' Agile and DevOps teams working with short iterations and fast feedback loops find that GUI tests require considerable rework to keep pace with frequent change. Tests at the API layer are less brittle and easier to maintain.
For these reasons, it is recommended that teams increase their level of API testing while decreasing their reliance on GUI testing. API testing is recommended for the vast majority of test automation efforts and as much edge testing as possible. GUI testing is then reserved for validating typical use case scenarios at the system level, mobile testing, and usability testing.<ref name="layers"/>
==Types of API testing==
Line 34 ⟶ 33:
==API testing tools==
[[Forrester Research]] identified nine tools that met their criteria for API Testing and Test Automation. All tools that met the criteria were desktop-based tools. Based on a 40-criteria evaluation, the tools were ranked in the following order:
# [[Parasoft]] [[Soatest]] and Development Testing Platform
# [[IBM]] Rational Test Workbench
|