首页 > 技术文章 > 接口测试浅谈

wolfshining 2017-09-11 17:26 原文

  什么是软件接口?对于软件应用程序来说,接口就是一个程序内两个独立的组件或者说单元进行信息交换和共享的边界,通过它来实现信息传递和处理。在软件的程序中,接口从其作用范围来说可以划分为两类:内部接口和外部接口。内部接口,就是程序内部方法与方法、模块与模块之间交互的接口,比如bbs有登录、发帖等多个模块,而发帖必须先登录,这两个模块间的交互就可以通过一个接口来实现,这个接口就是内部接口;外部接口,就是系统与系统、系统与用户界面之间交互的接口,比如说你可能需要从国家气象局获取天气预报的数据,而气象局不可能把他的数据库给你去操作,那么他就会提供给你一个外部接口,通过调用它来获取到我们想要的天气数据,另一个,我们在网站、app浏览过程中的查询、登录等等,都是通过接口(这里把这类的接口也划分为外部接口)来传递并处理信息的。搞清了接口,那么接口测试具体该怎么做呢?接下来就说说接口测试。

一、接口测试:

  接口测试就是专门来测试程序接口的。主要检查接口在数据传递、处理和返回过程中的正确性,检查各接口间的依赖关系等。接口测试也是功能测试,我们在做功能(页面各种操作)测试的时候也会调用各种接口已经在这个过程中做了一部分接口测试的工作,那么既然功能测试的时候已经测试过了为何还要专门的接口测试呢?那是因为,接口测试可以测试到很多功能测试用例覆盖不到的点:

  1、接口测试可以发现界面操作发现不了的bug:比如很多功能前端做了校验,这样就限制了你在页面操作时只能提交符合前端校验规则的数据,但如果我们绕过前端直接调用接口而接口的校验处理不好的话就可能出现bug了;

  2、接口测试可以检查系统对异常处理的能力(更全面的检查程序的容错性好鲁棒性):很多异常输入在页面上是操作不了的,只有通过接口测试才能实现;

  3、接口测试可以测试系统的安全性和稳定性:比如,交互数据加密、参数篡改、SQL注入等。

二、接口协议:

  接口的协议就是接口间信息交互需要遵从的通信方式和要求。接口协议的种类非常多,比如最常见的有HTTP、webservice等。

三、接口测试流程:

  1、需求评审、熟悉业务需求;

  2、开发提供接口文档;

  3、设计测试用例;

  4、用例评审;

  5、执行测试;

  6、提交报告

四、接口测试用例,接口测试用例设计主要应包含以下几个方面:

  1、通过性验证:所有数据都按照正常传入,看是否得到预期输出

  2、参数组合:这种情况主要是正对同一个接口根据参数的不同而执行不同操作的时候就需要组合测试了,比如某网站,有这么一个接口,入参是:type、商品ID、商品价格、时间,其中type=1时:商品ID、商品价格有一个必传,执行的是修改商品操作

type=2时:商品ID必传,执行的是删除商品,这样的话我们就要组合测试当type=1时,只传入商品ID是否修改成功,所有参数都传入是否修改成功;type=2时,只传商品价格是否能删除....

  3、接口安全,主要包括绕过数据验证、绕过身份授权、重要参数是否加密、密码复杂度、异常验证等

  绕过验证,即绕过前端的验证,也就是提交时把参数篡改了绕后看接口的处理结果是否符合预期,比如测试某网站购买接口,入参包括:订单号、商品ID、商品价格、数量、时间等,提交时把价格改成负数,看接口是否还能成功购买该商品....;

  绕过身份授权,比如某商城有买家和卖家两种角色,对商品有不同的操作权限,这样就需要测试买家角色去调卖家的接口是否也能调成功;

  参数是否加密,比如用户的登录密码、交易密码等是否经过加密处理,如果不加密,比如HTTP接口,你电脑中毒了,浏览器被拦截,别人就能在你提交表单里获取到你的用户名密码了,这是不安全的;

  密码复杂度,比如纯数字、连续数字123456这类密码容易被破解;

  异常验证,这个就是跟它反着干,接口要求传入正数,我偏偏传入负数,接口要求传入数字,我偏偏传入一串字符串进去....反正我就是完全不按照接口文档里要求的来,检查接口是否都对这些异常做了处理;

五、接口测试用例模板

  上面说了接口测试用例应该包含的内容,那么这里就说一下接口测试的用例模板,:

  接口测试的用例应该包含以下一些字段(这里只是提供一个基本的参考,反正这东西按照自己的实际要求来设计呗),这里以一个http协议的请求来说吧:

  项目名称、功能模块、用例ID、接口名称、概要描述、请求方式、请求地址、传入参数、前置条件、预期结果、请求报文、响应报文、测试结果、测试人员 等

六、接口测试报告

  测试报告就是对本次所有接口测试用例的总体陈诉,自己把执行测试的过程、执行的用例、结果等内容组合起来就行了。

七、接口测试工具

  接口测试工具有很多,比较常用的有:loadrunner 、Jmeter 、postman等。接下来会分别有文章来介绍这些测试工具的使用方法。

推荐阅读