接口测试

接口测试理论、http协议、cookies、cache、接口文档

一、什么是接口测试?

接口可以分下面几种
1、系统与系统之间的调用,比如银行会提供接口供电子商务网站调用,或者说,支付宝会提供接口给淘宝调用

2、上层服务对下层服务的调用,比如service层会调用DAO层的接口,而应用层又会调用服务层提供的接口,一般会通过服务之间的调用,比如注册用户时,会先调用用户查询的服务,查看该用户是否已经注册。


二、接口测试的数据准备,应该怎么做呢?

接口测试的数据准备,可以从下面几个方面去考虑:
1、如果是只测试一次的接口,可以使用硬编码的方式准备测试数据,在写测试代码的时候,使用到什么数据就写什么数据,为了避免数据重复,可能比较多的会用到随机字符或随机数

2、可以直接通过调用其他API的方式准备测试数据,这种情况在测试最上层服务的时候比较有用,比如测试团购购买服务,就需要准备要购买的团购数据,购买团购的用户数据,这个时候,可以直接调用生产团购的api和生成用户的api直接生成测试数据。

 

三、http协议

http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式。

http协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。 为了解决这个问题, Web程序引入了Cookie机制来维护状态.

Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。 我们最常见的就是GET和POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息.

 

状态码

Response 消息中的第一行叫做状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。

状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response.

HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别

  1XX  提示信息 - 表示请求已被成功接收,继续处理

  2XX  成功 - 表示请求已被成功接收,理解,接受

  3XX  重定向 - 要完成请求必须进行更进一步的处理

  4XX  客户端错误 -  请求有语法错误或请求无法实现

  5XX  服务器端错误 -   服务器未能实现合法的请求

 

常见状态码:

200 - 服务器成功返回网页

301 - 永久移动,请求的网页已被永久移动到新位置

404 - 请求的网页不存在,网页不存在。

500 - 服务器遇到错误,无法完成请求。

502 - 服务器作为网关或代理,从上游服务器得到了无效的响应

503 - 服务器暂时不可用,目前无法使用服务器(由于超载或进行停机维护)。

 

四、Cookies是什么?

Cookie的诞生

由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的。Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用。比如判断用户是否是第一次访问网站。目前最新的规范是RFC 6265,它是一个由浏览器服务器共同协作实现的规范。

 

Cookie的处理分为:

服务器向客户端发送cookie

浏览器将cookie保存

之后每次http请求浏览器都会将cookie发送给服务器端

 

五、cache缓存

缓存分为客户端缓存和服务端缓存

服务端缓存又分为 代理服务器缓存 和 反向代理服务器缓存(也叫网关缓存,比如 Nginx反向代理、Squid等),其实广泛使用的 CDN (快播貌似就是用的这个)也是一种服务端缓存,目的都是让用户的请求走”捷径“,并且都是缓存图片、文件等静态资源。

 

客户端缓存一般指的是浏览器缓存,浏览器缓存控制机制有两种:HTML Meta标签 vs. HTTP头信息。目的就是加速各种静态资源的访问,想想现在的大型网站,随便一个页面都是一两百个请求,每天 pv 都是亿级别,如果没有缓存,用户体验会急剧下降、同时服务器压力和网络带宽都面临严重的考验。

 

六、接口文档

1.接口文档

接口文档,顾名思义就是对接口说明的文档。好的接口文档包含了对接口URL,参数以及输出内容的说明,我们参照接口文档就能编写出一个个的测试用例。而且接口文档详细的话,测试用例编写简单,不会遗漏。

如果一个接口文档没有写清楚,你从文档中分不出哪些儿参数是必需的,哪些儿是非必须的,而且没有参数的取值说明,返回值的结构等信息的话,测试人员是无法编写相应的测试用例的。但是由于开发人员不愿意写文档,所以很多接口文档相对来说比较简单,模糊不清,这对我们做接口自动化测试是很大的阻碍。

2 接口文档的结构

接口文档可以包含很多信息,有的愿意写就可以多写的,不太愿意写的话,就写的信息相对来说会少点儿。不过,下面几项内容必须有,这是我们使用接口中和测试接口的依据:

(1)接口名称。标识各个接口的简单说明,如登录接口,获取项目详情接口等。

(2)接口URL。接口的调用地址,在测试环境下前面的域名可能不一样,不过接口名是不会变的。

(3)调用方式。接口的调用方式:Post/Get方式,决定了如何调用接口及传递参数。

(4)    参数。接口需要传递的参数,参数需要增加些儿说明: 

(a) 参数值类型说明:参数值要说明一下,只支持字母,数据,特殊字符或是字母数据混搭。

(b)参数长度说明:参数接收最大多少个的字符串,或是最大是多少的数值等。

(c) 参数取值范围:像枚举型的参数,只接收什么范围内的数据,如1-5等。

(d)参数的配合说明:有些儿参数需要配合起作用的,如:offset和count参数。

(e) 参数是必需的还是非必需的。

(5)返回值。接口的返回值说明需要包含正确和错误的情况,正确的情况下有哪儿数据,错误的情况下会有什么提示?

(6)其他的一些儿说明。上面的说明是通用的,还有其他的一些儿说明,如必须是登录状态调用,或是版本号等说明,在某些儿情况下也需要说明一下。

严格要求的公司会要求接口开发人员标明上面相关的接口说明,此时我们做接口测试的时候,就可以参照文档来转化我们的测试用例。但目前国内很多公司不太注重文档,接口信息不全是常有的事情。

3 接口文档缺失

   针对目前接口文档信息不全或是没有接口文档的情况下,如果上面的领导要求我们做接口自动化测试,这无异是一个非常艰辛的任务。但是奉承着“兵来将当,水来土掩”的原则,我们要想着解决办法。

(1)完全没有接口文档。这个情况是最麻烦的,我们要找开发人员来商量 ,最好能补个接口文档,如果实在来不及那就给个调用接口的实例。实例中会有接口地址,参数等信息,我们去测试环境中调用一下,就能看到返回结果的情况。

(2)接口文档信息不全。信息不全这个最常见,像参数说明缺少啊,没有说明哪些儿是必需的参数,哪些儿是非必需的,或是没有说明取值范围等。此时我们能问开发就问开发,如果不太方便,就要做尝试:一般非必需的参数不会做容错的判断,必需的参数检测的方面比较全面。

(3)文档不是最新的。接口的后续的工作中被修改或是优化过,我们按接口文档上的说明去调用,返回和预期的不一样。通知开发更新文档,然后用最新的文档再去修改测试用例。

   这个接口文档需要和接口开发人员做好约定,开发新接口时要把接口信息写清楚,如果更新原来的接口,要及时更新接口文档。同时在写接口自动化测试用例的时候,要多和开发人员沟通,只有通过大家的一起努力,才能把工作做的越来越好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值