一、接口测试目的
接口测试会更早的发现bug,而使得修改bug的成本更低,接口测试会减少功能测试的时间,应该接口测试会确保主要流程功能的正确性,能减少回归测试的次数。
接口测试类型: 模块接口测试和web接口测试
模块接口测试一般为程序内部模块之间相互调用的内部测试,常被应用在单元测试中,俗称白盒测试(通常是开发完成的)
Web接口测试一般为程序外部测试,也就是黑盒测试,不需要关注内部实现,只需要关注输入输出是否符合预期结果。
API函数是一种接口,一般开放平台都会对外提供API函数,以供第三方程序调用
web接口测试:服务器接口测试和外部接口测试
服务器接口测试:测试浏览器与服务器的接口
这个很容易理解,我们知道web开发一般分前端和后端,前端开发人员用html/css/javascript等技术。后端开发人用php/java/python/c#等各种语言。用户输入的数据是输入到的前端页面上,怎样把这些数据传递的后台的呢?通过http协议的get与post请求来实现前后端的数据传递。这就是接口测试,调用的登录接口还是查询接口,传参的是用户密码还是搜索关键字。
外部接口测试:
这个很典型的例子就是第三方登录,比如你做的新系统免于新用户重新注册的麻烦会提供第三方登录,那用户在登录的时候调用的就是第三方登录的接口,由第三方验证用户名和密码并且返回给当前系统。
web接口测试有哪些测试要点:
1、请求是否正确,默认请求成功是200,如果请求错误也应当返回404、500等。
2、检查返回数据的正确性与格式,json是一种非常创建的格式。
3、接口的安全性,一般web都不会暴露在网上任意被调用,需要做一些限制,比如鉴权或认证。例如禁止SQL注入。
4、接口的性能,web接口同样注重性能,这直接影响用户的使用体验。如果我搜索一个关键字半天结果都没返回,则说明接口代码需要优化。
二、接口测试流程
接口示例:
http://ams.wonderbuy.xyz/rs/product/getHomeList
http://amsseller.wonderbuy.xyz/rs/store/getStore?storeId=4&pn=1&ps=10
比如这个接口地址:
storeId=1表示商店为1的那个店;
pn=1即page number=1 意思为第一页;
ps=10即page sum =10 意思为每页展示10条记录;

怎么做接口测试:
1.首先获取开发的接口文档
2.熟悉每个接口是干什么的,每个参数的意义,以及多个参数组合的意义,以及组合参数应该返回什么样的数据是对的,以及分析错误状态码。
3.在URL里面直接输入请求的接口地址和参数就可以查看服务器返回的json格式数据,然后检查返回的列表中的数据是否准确(检查数据展示及状态码是否准确),这只限于get请求方式。另外也可以使用jmeter工具对get或是post请求方式,做接口测试。
步骤:添加线程组,再添加http请求,在http请求中设置服务器地址,端口,路径,请求方式,设置参数及参数值,添加查看结果树,执行这个请求,然后在查看结果树的响应部分查看核对json数据,检查数据展示或是数据状态是否准确。
三、接口文档示例:
1:获取商品信息接口
接口地址:
http://amsseller.wonderbuy.xyz/rs/store/getStore
请求方式:get
请求参数:
storeId:门店ID
pn:第几页
PS:每页显示多少条记录
状态码:
200:响应成功
20001:门店信息错误
20002:没有对应的数据
20003:网络异常
举例:
罗湖店:1 90
宝安店:2 100
福田店:3 200
http://amsseller.wonderbuy.xyz/rs/store/getStore?storeId=2&pn=10&ps=10
显示宝安店的第10也的10条数据:91-100
http://amsseller.wonderbuy.xyz/rs/store/getStore?storeId=2&pn=11&ps=10
① 没有对应数据;②默认给最前/最后一页的数据
http://amsseller.wonderbuy.xyz/rs/store/getStore?storeId=4&pn=10&ps=10
① 门店信息错误;②给默认的门店信息
请求示例:
http://amsseller.wonderbuy.xyz/rs/store/getStore?storeId=2&pn=10&ps=10
响应格式:
{
: “trxrc”:20001,
: “state”:
: {
: : “code”:200,
: : “msg”:”ok”
: },
: “storeName”:”Twireless”,
: “storeEmail”:”joejustinesia@gmail.com“,
: “storeMobile”:”09178313838”,
: “storeImage”:”http://data.wonderbuy.xyz/20161129/store/img/64f16c09ebe5e83318408ba8192531cd.jpg",
: “commodityList”:
: [
: : {
: : : “id”:2085,
: : : “modelId”:2085,
: : : “modelName”:”Planet CCTV AHD425 Dome Cam 1080P IR”,
: : : “inventory”:9,
: : : “price”:”2,850.00”,
: : : “moneyTag”:”PHP”,
: : : “itemIconUrl”:”http://data.wonderbuy.xyz/20170324/model/logo/315cc948878b1073b15196d6c340c24b.jpg"
: : },
四、接口测试用例模板
接口名称、用例编号、用例说明、请求参数、请求方法、请求地址、请求头部信息、预期响应状态、测试结果
以查询接口为例:

以注册接口为例:

五、jmeter接口测试步骤:
1、 添加线程组:在“测试计划”上点击鼠标右键–>添加–>threads(Users)–>线程组,添加测试场景设置组件,(接口测试中一般设置为1个“线程数”,根据测试数据的个数设定“循环次数”,接口性能测试是并发测试,因此一般就设置多个线程数)
2、 再在“线程组”下面添加一个HTTP cookie管理器
Cookie 管理器就像一个 web 浏览器那样存储并发送 cookie, 一个测试计划内最好只有一个cookie manager, 没有cookie管理器,登录后的用户名admin就显示不了
3、 添加Http请求默认值组件
HTTP默认请求值: 当所有的接口测试的访问域名和端口都一样时,可以使用该元件,一旦服务器地址变更,只需要修改请求默认值即可。
在“HTTP 请求默认值”组件配置页面,填写:
被测系统的域名、端口、http请求的实现包版本、协议类型
后续添加的线程组里的所有“HTTP Sampler”可默认使用此设置。
4、 添加接口的请求,线程组–>HTTP请求
在HTTP请求设置页面,录入被测接口的详细信息,包括请求路径,对应的请求方法,以及随请求一起发送的参数列表
注:由于Jmeter请求线程组内的请求时从第一个开始执行,所以我们将需要最先执行的请求放在前面
后续继续添加其它请求,如果提交的请求中参数带有中文字符,就讲字符编码设置为GBK,就不会乱码了
5、 接下来,可以参数化、关联、添加事务,集合点 、查看结果树、聚合报告等等运行测试
(最简单的接口测试,可以直接添加一个查看结果树、聚合报告就可以测试了)
那么仅仅是状态码ok了,就表明返回数据一定是正确的吗? 不一定,我们还得通过在返回
的页面中检查部分数据是否符合正确预期结果,那么就是检查有没有出现欢迎xxx登录了,这个可以通过接口文档查得(或者问开发),这里是admin用户登录

接口测试步骤:
1:熟悉接口定义文档,获得接口功能描述、接口请求方式、请求URL、请求参数、返回参数以及状态码信息等(从接口说明文档中整理出接口测试点)
2:写接口测试用例(主要的接口业务)
3:编写接口脚本(就是使用jmeter编写脚本,添加查看结果树)
4:在接口测试工具(Jmeter)执行接口测试用例
5:分析查看结果树中接口测试返回的结果及状态