什么是接口测试

什么是接口测试

本来想写篇接口测试的基础文章,但看到这个,就偷个懒用Google翻译搬过来,想看原文的点这里http://www.softwaretestingmagazine.com/knowledge/api-testing-definition/,之后博主再整理更新更多关于接口测试以及用Python搭建框架的一些内容吧。

什么是API?

现代计算机系统通常使用“分层架构方法”来设计:

什么是接口测试_第1张图片

这意味着系统的核心功能包含在“业务逻辑”层中,作为一系列离散但连接的业务组件。它们负责从各种用户界面(UI)获取信息,在数据库层上执行计算和事务,然后将结果呈现回用户界面。

然而,除了经由UI层与人进行通信之外,计算机系统必须能够彼此直接通信。例如,您的移动乘车共享应用程序将需要与地图服务,交通和天气服务以及提供乘车的驾驶员使用的其他专门应用程序进行通信。在这个现代和相互关联的世界中,我们认为所有这些不同的系统可以无缝地相互通信,但在现实中,如果没有API是不可能的。

API定义

在其核心,应用程序编程接口(API)是作为两个单独的软件之间的保证合同的正式规范。 API提供程序定义了它期望的一组操作,数据格式和协议。API的消费者(称为客户端)将使用那些规则,客户端将永远不必担心API本身的内部,只要它遵循规则。

什么是接口测试_第2张图片

API的重要性在于,它们允许不同的组织创建与其他应用程序和服务讨论的软件应用程序,而不必在相关应用程序或服务的内部更改时不断更新其应用程序。只要API本身保持稳定,实现就可以改变。 这是API的一个重要特性:它们由不改变的部分组成 - 指定操作,数据格式和行为的“接口或合同” - 以及可根据需要更改的实现。

处理API更改

那么当您想要更改API并公开新功能时会发生什么? 你基本上有两个选择:

  • 更改现有API以反映更新的版本。 但是,这被称为“破坏兼容性”,意味着API的所有客户端都需要更新。 有时这是必要的,但如果可能,应该避免。这对于广泛使用并且具有许多依赖于它的应用的应用尤其如此。
  • 创建一个新的API版本并保留旧的API。 这是推荐的选项。如果可能,您可以创建一个新的API来公开新的功能,但保留现有客户端的旧API。 您可能需要添加翻译图层,以确保旧API的行为与以前完全相同。

什么是接口测试_第3张图片

API测试

因此,现在我们已经确立了什么是API,以及为什么API对于现代互连的,全局分布式应用程序和服务至关重要,因此了解为什么API测试是关键的,这一点很重要。

API测试包括直接测试应用程序编程接口(API)以及作为集成测试的一部分,以确定它们是否满足对功能,可靠性,性能和安全性的期望。由于API缺少GUI,因此在消息层执行API测试。API测试对于自动化测试至关重要,因为API现在是应用程序逻辑的主要接口,因为GUI测试很难通过Agile软件开发和DevOps常用的短暂发布周期和频繁更改来维护。

什么是接口测试_第4张图片

当您发布新版本的系统(例如更改某些业务组件或内部数据结构)时,您需要具有快速,易于运行的API回归测试集,以验证这些内部更改是否会破坏API接口。这是为了确保依赖于API的客户端应用程序将继续像以前一样运行。

我可以测试什么样的API?

多年来,API已经从简单的代码库演化而来,应用程序可以在同一台计算机上运行代码,远程API可用于允许一台计算机上的代码调用其他地方的代码。

下面是以大致时间顺序存在的更常见的API技术的快速列表:

  • TCP / IP套接字
  • 远程过程调用(RPC)
  • 公共对象请求代理体系结构(CORBA)
  • Java远程方法调用(RMI)和企业Java Bean(EJB)
  • Microsoft分布式组件对象模型(DCOM) - 也称为ActiveX
  • Web服务(SOAP然后REST)

当查看API测试工具时,了解您将使用哪些API技术以及如何最好地测试它们是非常重要的。现在大多数API将会是Web服务类型(REST或SOAP),但你可能会遇到其他技术,如Java EJB或Microsoft DCOM /ActiveX DLL。

Web服务测试

Web服务是可以使用HTTP远程调用的托管代码的单位,也就是说,它可以使用HTTP请求激活。 Web服务允许您通过网络公开现有代码的功能。一旦它暴露在网络上,其他应用程序可以使用您的程序的功能。

有两大类的Web服务:

  • 简单对象访问协议(SOAP)
  • 表示状态转移(REST)

测试SOAP Web服务

SOAP Web服务使用Web服务定义语言(WDSL)并使用HTTP POST请求进行通信。它们本质上是将RPC对象调用序列化为XML,然后可以将其传递到Web服务。 传递到SOAP Web服务的XML需要与WSDL中指定的格式匹配。

SOAP Web服务是完全自我描述的,因此大多数客户端不直接使用SOAP XML语言,而是使用客户端代理生成器创建Web服务(例如Java,.NET对象)的客户端对象表示。 Web服务消费者与SOAP Web服务的这些特定于语言的表示进行交互。

但是,当您测试SOAP服务以及具有用于查看提供服务和调用测试操作的漂亮界面时,您需要始终有一种方法来验证以XML发送的原始SOAP请求和响应数据包:

什么是接口测试_第5张图片

此特定功能将真正的SOAP解决方案与仅仅是SOAP客户端库区分开来。前者可帮助您测试服务并了解故障,而后者只是使用不同编程语言更轻松地进行SOAP Web服务调用的一种方法。

在SOAP Web服务测试工具中应该需要以下功能:

  • 能够下载远程Web服务描述语言(WSDL)文件并可视化检查其所有功能和数据结构。
  • 应该有一种方法通过获取函数并填充所需的参数,然后查看从API返回的响应,以图形方式创建SOAP请求。它应该处理两个简单的值(称为基元,如整数,日期,字符串)和更复杂的结构化对象(例如一个新的用户对象)
  • 应该有一种方法来查看发送请求和检索到的响应的原始SOAP XML结构。 理想情况下,应该有一种方法来查看XML数据格式,以便更容易理解交互。
  • 如果可能,该工具应支持不同版本的SOAP(1.0,1.1,1.2),并且还处理特定于供应商的扩展,例如Microsoft Windows Communication Foundation(WCP)和ASP.NET Web Services(ASMX)。

测试REST Web服务

RESTful Web API(也称为RESTful Web服务)是使用HTTP和REST原则实现的Web API。与基于SOAP的Web服务不同,RESTful Web API没有“官方”标准。 这是因为REST是一种架构风格,不像SOAP是一种协议。

什么是接口测试_第6张图片

通常,REST Web服务将其操作展示为对应于特定URL的一系列唯一“资源”。每个标准HTTP方法(POST,GET,PUT和DELETE)然后映射到每个资源上的四个基本CRUD(创建,读取,更新和删除)操作。REST Web服务可以使用不同的数据序列化方法(XML,JSON,RSS等)。

用于REST Web服务的格式传统上是XML。 这部分是因为它在SOAP Web服务中被广泛使用,因此是熟悉的,但是当带宽不是限制因素时,它是自描述的,其中字段和数据清楚地描述:

在基于Web浏览器的API中使用的通用格式是JSON,因为它返回数据作为JavaScript对象符号(JSON)对象,可以直接在Web浏览器中使用,因为它与JavaScript用于存储数组和对象的格式匹配。它也是一种非常紧凑的格式,使其成为有限带宽的移动网络上的通信的理想选择。

在选择用于执行REST Web服务测试的工具时,应查找:

  • 能够原型化和预览HTTP请求,能够指定HTTP标头,正文,方法和标准HTTP凭据。
  • 以各种格式(包括JSON和XML)查看请求和响应正文的能力。 最好的工具提供自动格式化程序,使数据更易于输入和查看。
  • 记录您的操作并生成可以自动执行回归和API测试的编程测试脚本的能力。如果可能的话,工具应该提供一种方法来将请求和响应转换为软件“对象”,使得处理数据更容易。
  • 如果可能,应该有一种方法来参数化REST请求,以便您可以创建通用REST测试函数,可以以不同的方式在测试脚本中使用,而不必每次都重写。

Microsoft DCOM / ActiveX测试

Microsoft的组件对象模型(COM)也称为ActiveX,是用于单独设计的软件组件(源)之间的通信的标准。任何具有COM接口的对象都可以创建并远程使用:

var doc = new ActiveXObject("Word.Application");
doc.Documents.Open(wordFileName);

使用此方法,可以通过测试工具来本地测试任何作为COM或.NET可访问动态链接库(DLL)打包的API,这些测试工具支持测试以下不同类型的DLL API:

  • 托管DLL - 使用.NET Framework编写,该工具应提供特殊的访问类来测试这些API。
  • 未管理的DLL - 使用本机Intel x86代码编写,该工具应提供一个特殊的DynamicWrapper,使它更容易访问这些API

你可能感兴趣的:(接口测试)