1.接口测试范围
一、被测项目中同层之间的接口(如DAO层、Service层),一个接口调用了其他的接口
二、外部系统与系统之间的交互点(如一个App调用了第三方支付宝的API)
三、各个子系统之间的交互点(如App客户端调用了服务端的Http接口)
2.接口的主要两类
一类提供给查询功能接口,一类提供保存数据功能接口,数据保存后要去数据库中查看,jmerter可链接数据库进行操作代理手工
大批量数据制造,数据的参数化,可以使用jmerterKh的计数器、或者随机函数
https://my.oschina.net/hellotest/blog/512482
3.API用例设计方法
出发点:参数、业务
参数--参数异常时是否正常处理,如业务中要求参数不能为null/空字符串,设计 用例为:当给相应的参数传null值/空字符串时,系统是否正确的处理了
业务--给API的各形参传入满足业务的实数后,系统是否做出了正确的处理
4.接口用例类型
1)逻辑测试:主要是根据开发写的JavaDoc来编写测试用例,JavaDoc包含的要素(前提条件,输入参数,业务逻辑,输出值的描述),此类主要是测试在正常输入的情况下,是否能得出正确的结果。
也存在失败了但返回的是成功
2)出错测试:接口逻辑的测试中主要测试的是正常逻辑,即对外提供的接口服务是能够工作的,但是这些测试不能保证数据的安全,以及程序在异常情况下的逻辑的正确性
(a) 空值输入:如当传一个对象参数(形参类型为Object类型)时,需要值null值测试
(b) 参数属性测试:如输入一个未赋值的参数(即参形参传的值也为变量,但此变量没有被赋值)
(c) 异常测试:制造一些异常的测试场景,测试的异常描述是否清晰(如测试“按名称搜索”API,传的名称是系统中不存在的值,则返回回来的描述信息是否正确)
(d) 对参数个数,参数类型时的出错测试(如在测试App的Http接口时,传的值个数不足时,返回的结果是否正确)
3)路径测试:当被测API的实现方法中,有很多的判断,且判断中又调用了其他的接口,此时必须要进行路径测试。
5.接口与用例是一对多的关系
如发朋友圈的接口用例:
- 有图片、有文字,预期返回发布成功
- 无图片,有文字,预期返回发布成功
- 有图片,无文字,预期返回发布成功
- 无图片,无文字,预期返回发布失败
- 有图片、有文子,预期返回发布成功,同时数据库中的记录符合预期
每一个用例测试一个点,发布成功这个返回值是否正确由一个单独的用例来覆盖就足够了。
6.WEB接口测试
应用商店的测试属于WEB接口测试
web接口测试又可分为两类:服务器接口测试和外部接口测试。
服务器接口测试:是测试浏览器与服务器的接口。用户输入的数据是输入到的前端页面上,怎样把这些数据传递的后台的呢?通过http协议的get与post请求来实现前后端的数据传递。这也可认为是接口测试。
外部接口测试:这个很典型的例子就是第三方支付,比如在我们应用中在充流量时,交话费时,都会调用第三方支付接口。
主要测试要点如下:
请求是否正确,默认请求成功是200,如果请求错误也能返回404、500等。
检查返回数据的正确性与格式;json是一种非常常见的格式。
接口的安全性,一般web都不会暴露在网上任意被调用,需要做一些限制,比如鉴权或认证。
接口的性能,这直接影响用户的使用体验。
7.怎么做接口测试
1)首先看你的请求是基于什么协议的,测试接口时主要是通过工具或代码模拟http请求的发送与接收
看接口的访问方式是get、post、delete
请求头:header中的cookies信息或者UA信息等重要信息,其中Content-Type是开发者经常用到的,比如json,xml格式数据,都会有对应Content-Type类型,必须设置,否则服务器无法识别
1、 服务端需要返回一段普通文本给客户端,Content-Type="text/plain"
2 、服务端需要返回一段HTML代码给客户端 ,Content-Type="text/html"
3 、服务端需要返回一段XML代码给客户端 ,Content-Type="text/xml"
4 、服务端需要返回一段javascript代码给客户端,Content-Type="text/javascript"
5 、服务端需要返回一段json串给客户端,Content-Type="application/json"
看响应头中诸如referer等信息
看接口的参数构成是否合理。
看所传参数有无敏感数据需要加密传输
看接口的返回体是否返回一些不必要的敏感信息,返回格式是否合理等
改:请求体中参数的常规修改。常规修改就是通用的边界值方法,如极大值、极小值、极长值、null、空。未对这些值做校验的后果可大可小
2)选择什么样的工具