6.4接口测试工具
6.4接口测试
主要是对系统各组件之间的接口进行测试,其主要用于检测系统内部模块之间以及与外部系统之间的交互情况。接口大致分为两大类:程序接口和协议接口。
1)程序接口主要是指程序之间的接口,具体到程序中就是通过了输入输出的类、方法或函数。一般需要使用于开发接口程序相同的编程语言。通过类、方法和函数的调用,验证其返回结果来进行测试。属于白盒测试。
2)协议接口主要是指系统提供不同的协议通过的接口,例如HTTP、SOAP协议等。这种类型的接口对底层代码做了封装,通过协议的方式对外提供调用。因为不涉及底层程序,一般不受编程语言的限制,可以通过测试接口工具进行测试。
接口测试中返回的数据格式,主要由JSON和XML两种格式,其中JSON数据格式应用比较广泛。
JSON(JavaScript Object Notation即JavaScript对象表示法)是一种轻量级的数据交换格式。采用独立语言和平台存储和表示数据,JSON解析器和JSON库支持不同的编程语言。JSON具有自我描述性、容易理解。
下面代码是一个JSON数据格式例子
JSON数据语法是JavaScrip对象表示语法的一个子集,语法格式很像Python语言的字典,数据放在键-值里面,所有数据用大括号括起来。值里面如果有多项数据需要用方括号括起来,相当于Python中的列表。语法特征如下:
数据在键-值对中
多项数据用逗号分隔
大括号把数据项括起来
中括号括起多组数据
XML(Extensible Markup Language可扩展标记语言)可以用标记数据、定义数据类型、是一种允许用户对自己的语言进行标记定义的标记语言。XML仅仅是一个纯文本,只用来结构化、存储以及传输信息。XIM数据语法格式跟HTML类似,不同的是XML的标签是可以自己定义的。语法特征如下:
所有XML元素必须能够关闭标签,只要有起始标签都必须有一个结束标签。
XML标签对大小写特别敏感
XML所有的特性必须都有值,而且属性值比较加上双引号
在XML中,空格会被保留
做好接口测试的三个维度是:请求(接口地址、方法)参数、返回值。需要开发人员通过接口文档、编写接口文档是开发中非常重要的一个环节。
开发的接口一般是给其他开发调用的,所以需要提供参考的接口文档。接口文档一般需要内容准确无误、且要及时更新。通常接口文档一般包括:接口名称、接口的描述、接口的地址(URL)调用方法、接口的参数、返回结果、见表6-8
接口测试的重点有以下几点
1)状态的检查:请求返回是否正确、比如请求返回成功是OK
2)检查返回数据的正确性,一般用JSON格式数据,检查关键字是否正确。
3)边界和异常扩展检查,主要关注参数是否必填、是否有空缺、参数的类型、参数的默认值、参数错误的检查等。
4)接口之间的关联测试:比如测试购物流程、依次要调用登陆接口、商品加入购物车接口、提交订单接口、 支付接口。需要按照接口的逻辑流程进行测试,通常前一个接口会动态产生一个特定的数据关联到下一个接口。
常用的接口测试工具有:Postman、Jmeter、HTTPrequest、SoapUI等。
6.4.2Postman
是一款API调试工具,功能强大、操作简单,最早存在于Chrome浏览器的插件中。现Postman提供了独立的安装包,不依赖于Chrome浏览器了。
Postman安装过程略过
2、Postman接口测试
启动Postman后,根据表6-8接口文档描述,首先在Postman中选择POST请求,在输入接口地址,如何在Body中输入参数、单击“Send”按钮就可以进行接口测试,如图6-72所示。Postman接口测试操作比较简单,不详细介绍了。
3、Postman生成代码
利用Postman生成多种语言的代码,来实现自动化测试。在图6-64中单击“Code”按钮后自动生成,如图6-73所示(Python代码)
6.4.3 Jmeter
是运行在Jave虚拟机上的一款开源的测试工具目前对软件进行接口测试和压力测试。
1、Jmeter 由于安装基于Jave,首先需要按照配置JDK(按照过程略过)
2、Jmeter组件介绍
(1)测试计划(Test plan)
测试计划是适应Jmeter进行测试的开始,是其他测试元件的容器。
(2)线程组(Therad Group)
就是行的线程,通俗地讲就是所有的测试都是在线程组下进行。如果进行性能测试,线程组可以理解为虚拟用户数。
(3)配置元件(Config Element)
主要是通过对静态数据配置的支持,如初始化默认值和变量等。利用配置元件可以对Cookie以及HTTP请求的默认数据进行管理。
(4)前置处理器(Pre processors)
主要是在采样器发出请求前对一些变量的值(这些变量的值不在服务器响应中获取)进行特殊处理。
(5)采样器(Sampler)
就是告诉Jmeter发送一个请求到指定服务器,并等待服务器的请求。采样器会安装其在测试树中的顺序去执行,还可以用逻辑控制器来改变采样器运行的重复次数。
(6)逻辑控制器(Logic Controller)
可以控制Jmeter的测试逻辑,特别是何时发送请求。逻辑控制器可以改变其子测试元件的请求执行顺序。
(7)后置处理器(Post processors)
是对发出请求之后得到服务器响应的数据进行特殊处理,也就是请求之间的依赖关系,可以理解为请求之间的关联。
(8)断言(Assertions)
用来检查在测试中从服务器获得响应内容是否符合预期,也可以理解为对测试结果进行判断是否正确。
(9)定时器(Timer)
定时器是由一个作用域的概念,主要来控制采样器或者逻辑控制器的子项的延迟。也可以理解为请求之间的等待时间。
(10)监听器(Listener)
主要收集Jmeter在测试期间的结果,并将结果数据给出一些展示的方式。常用的展示结果的元件有察看结果树、聚合报告、图形结果、断言结果等。