接口测试介绍(转发)

转自博客:http://blog.csdn.net/u011541946/article/details/77745217

第一篇,主要介绍什么是接口测试。

1. 为什么要做接口测试

       在日常开发过程中,有人做前端开发,有人负责后端开发。接口就是连接前后台,由于前端开发和后端开发的速度可能不一样,例如后端开发好了,但是前端没有开发。那么我们是不是就不需要测试呢?一般我们大部分人都是做功能测试,很多是界面的功能测试。如果你理解了接口测试,那么你就可以针对接口进行测试。
    

       看看测试金字塔,接口测试是在中间部分,底层是单元测试,最顶端是界面测试。从三者的面积大小来看,单元测试和接口测试,才是重点,而界面测试真的是太少。这个面积,你可以理解为代码覆盖,也可以理解为测试的工作量。这里要提出一个观点:现在国内公司越来越重视接口测试,之前的几年,很多测试资源都放在了界面的测试,今后会逐步放在接口测试功能,性能,自动化和稳定性测试上面。白盒测试目前还是开发自己测试,有些大公司,注重软件产品质量,也会安排一些有代码能力的测试人员,去辅助和指导开发人员进行单元测试,共同保证软件的质量。

2.什么是接口测试

       我们一般来说,测试接口,就是指测试接口的功能,性能和稳定性测试,当然可能还有安全性测试。这个入门系列会让你掌握接口的功能测试。一般,来说我们听说到的接口基本上都是指HTTP或者HTTPS协议的接口测试,也就是一些web服务请求。一个软件项目中,有很多接口,少的有几十个,多的有几百上千个接口。这个时候,我们没有软件界面,没有具体的测试场景,只有一个接口描述文档。我们需要把接口这样抽象的东西,通过软件测试的理论和方法去测试接口,找出接口的功能和安全性的缺陷。接口有内部接口和外部接口。内部接口就是开发人员自己开发的接口。外部接口,好比网站调用微信支付和支付宝支付接口。还有一些模块与模块之间的接口。学习过Java或者用过selenium的人,应该对接口有了解。你的自动化脚本调用了很多selenium的接口。

3.接口的分类

       在开始做接口测试之前,有必要了解一下接口的分类。这里的分类,主要是HTTP请求方法分类。下面有很多种分类,我们最常见的有GET/POST/PUT/DELETE四种方法,工作中接口最多是GET和POST方法。

4.GET和POST的区别

这个问题,面试中经常被提到。简单来说,可以从三个方面去回到这个区别:方式、大小、安全

1).方式

方式指的是参数的传入方式,GET方法一般是指获取服务器上的数据,参数直接跟着URL后边,直接可以放到浏览器地址栏里,例如登录就是采用GET方法。而POST方法是指客户端给服务器上提交表单数据,所以POST是通过表单提交的,例如你网页上的调查问卷和答题就是采用POST方法。

2).大小

上面已经知道GET是直接在浏览器地址栏输入,由于浏览器有限制,一般整个URL的长度可以很长,但是不能超过2049KB的大小限制,而这个POST就没有大小限制。

3).安全性

由于GET的参数是在浏览器地址栏直接拼接,暴露在互联网中,肯定不安全。POST是通过表单数据提交,相对比GET方法更安全。

     前面我们已经介绍了什么是接口测试和接口测试的意义。在开始接口测试之前,我们来想一下,如何进行接口测试的准备工作。或者说,接口测试的流程是什么?有些人就很好奇,接口测试要流程干嘛?不就是拿着接口文档直接利用接口测试工具测试嘛。其实,如果只是三五个接口,你可以这么做一个临时的接口测试。但是,如果是上百个接口,或者,你们公司的这个项目,第一次做接口测试,那么,我们还是很有必要遵守测试的流程。

1.接口测试的流程

接口测试和功能测试一样,流程也大致遵守V模型,请看下图

       一般来说,接口测试左边的每个阶段,每个公司可能都侧重点不同,例如有些公司就没有需求讨论和需求评审这个阶段。不管如何,用例设计,这个是少不了,而且是重点,要花时间的阶段。只有覆盖全面的接口测试用例,才能有比较好的测试接口覆盖率,才会找出更多的接口的Bug.

2.为什么要写用例

         功能测试用例,大家都写过。接口测试用例,很多人没有写过。在写之前,我们来讨论下,为什么要写接口用例。

1)理清思路,避免漏测
2)提高测试效率
3)跟进测试进度
4)告诉领导做过
5)跟进重复性工作

       上面五点,结合自己测试实际经验,应该来说是很好理解和认同的。有用例,就有思路,避免漏掉测试点。跟着用例测试,避免随机测试那种没有目的性的测试,提高测试效率。有用例,上级问你完成的进度,你好用数据回答。有用例,用来标记你执行的结果,证明你做过测试。避免将来发生问题,人家说你没有测试,有数据和证据说话。接口测试也需要重复跑,跑几轮,或者用自动化天天跑。这样的重复性工作,用例可以保证每次重复做的是一样的情况。

3.接口主要设计用例点
主要从四个方面来设计接口用例:功能,逻辑业务,异常,安全

功能

1)功能是否正常;

2)功能是否按照接口文档实现

       举例:有些添加到购物车,需要登录才能添加。也就是业务要求不支持游客添加购物车功能,如果设计一个没有登录的用户,然后去测试添加购物车接口,结果接口能添加到购物车,说明功能不正常,不符合需求和接口文档描述。

逻辑业务:是否依赖业务;
      举例:该接口调用之前,需要调用登录接口,如果不登录也能请求数据,不符合业务规则。

异常:参数异常和数据异常
参数异常:关键字参数,参数为空,多,少参数,错误参数

数据异常:关键字数据,数据为空,长度不一致,错误数据
         举例:不管数据异常还是参数异常,测试点差不多,一个参数有key和value,key表示参数,value表示数据。第一,看看参数和数据能不能支持关键字,例如Java中的保留关键字等等。第二个就是参数和数据都为空,看看是否做了判断。第三个,参数多和少,例如有两个参数的接口,你需要设计一个三个参数的用例,一个只有一个参数的用例。数据那边长度不一致,例如设计很长的字符串是否支持,因为数据库创建表过程都设置好了每个字段的长度。输入错误的参数和数据,例如故意输出单词等等。

安全测试用例设计:
1)cookie:有cookie才能获取数据,如果不带cookie还有信息返回,说明有问题
2)header:正常接口带header信息,删除header看是否能够返回数据。
3)唯一识别码:app手机识别码,一般是唯一的。

       安全测试主要从上面三点检查。第三个是唯一识别码,主要是指app上手机的识别码,一般很少用到,除非很严格的接口测试,例如银行app登录,需要指纹,而指纹来源手机,一般有一个手机识别码判断过程

 

posted @ 2018-01-16 10:43  Young-Yang  阅读(1279)  评论(0编辑  收藏  举报