代码改变世界

让你分分钟了解Web接口测试

2018-09-04 16:35  第二个卿老师  阅读(3084)  评论(0编辑  收藏  举报

因为前后端架构分离技术的兴起,接口测试也越来越重要,最近一直想总结下,作为一个近三年的测试人员,接口这个词是耳濡目染的,而开发张口闭口也都是这个接口或那个接口怎么怎么样,自己遇到的bug也很多是接口问题,本着不懂装懂的原则,自己网上扒了些资料,有不准确的地方,欢迎指出。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1,什么是接口

 百度说:接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式

上面这句有点抽象,反正我是看不懂,网上的资料也是一大把(黑纠结),来自某个大佬的通俗解释:

1,设计概念的接口,就是一系列约定,这种约定既可以是行为的约定,也可以是外观的约定(比如国标插头和美标插头具有相同的行为约定和不同的外观约定)。

2,而编程语言层面的接口,是为了实现设计要求而产生的,接口可以是方法,属性,事件,索引器的任意组合。

从程序方面来说,接口习惯别叫做API(application programming interface),可大致分为程序接口和协议接口两类,见文章https://www.cnblogs.com/fanjq/p/7835438.html

  • 程序接口(也可以看作是程序模块接口,具体到程序中一般就是提供了输入输出的类、方法或函数,一般需要使用与开发程序接口相同的语言)
  • 协议接口(一般是指系统通过不同的协议提供的接口,这种类型的接口对底层代码做了封装,通过协议的方式对外提供调用,不受语言的限制)

发展至今包括:

①、操作系统接口

②、web接口

③、应用程序接口

④、数据库接口

...

它们可能本质差别不大,姑且这么分个类,我们这里着重讲Web接口。

2,什么是接口测试

 百度说:接口测试是测试系统组件间接口的一种测试;接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点;测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

 接口测试也是一种完整的测试体系,也分为接口功能测试、接口性能测试、接口稳定性测试、接口安全性测试。类比功能测试,有个通俗的解释:接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求,见文章https://www.cnblogs.com/feng0815/p/7509541.html

借鉴上面的文章,常见的web接口:

1、webService接口:是用soap协议包装后用http运输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。可以使用的工具有SoapUI、jmeter、loadrunner等。

2、http api接口:直接用http协议运输,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。可以使用的工具有postman、RESTClient、jmeter、loadrunner等。

 web应用中,客服端需要与服务端通信,也就是前端和后端通信,都是通过接口交互;根据是否是外部接口,web接口测试可分两类:服务端接口测试和外部接口测试。

 3,接口测试的重要性

 在软件开发生命周期中发現缺陷越早,那么修正缺陷的代价就越小,所以应更早的介入测试,而接口测试就是一种及早介入的方式。

为什么做了功能测试还要做接口测试,上面两篇文章说得很清楚:

①、不依赖前端页面,可以发现很多在页面上操作发现不了的bug

②、 检查系统的异常处理能力

③、检查系统的安全性、稳定性

④、前端随便变,接口测好了,后端不用变

⑤、一般能集成自动化,能提高测试效率,用于冒烟测试和回归测试

当然由于接口测试的特殊性,需要依赖一些测试工具或代码模拟http请求的发送和接收,对测试人员的要求更高。

4,如何做接口测试

接口测试也属于功能测试,每个公司的流程或侧重点可能不同。

第一种轻量级测试方案:

1, 分析出测试需求,并拿到开发提供的接口说明文档;

2,从接口说明文档中整理出接口测试案例,里面要包括详细的入参和出参数据以及明确的格式和检查点;

3, 和开发一起对接口测试案例进行评审;

4,结合开发库,准备接口测试案例中的入参和出参数据,整理成测试用例;

5, 执行测试用例,反馈接口测试结果。

第二种类似功能测试流程(接口文档 —> 接口测试计划 —> 接口测试用例 —> 接口测试执行 —> 接口测试报告):

1,接口文档

 类似于需求文档,由项目组长制定相关接口规范,开发人员一起更改维护,其中应该包括接口说明、方法、uri(请求地址,url是uri的子集)、请求参数、返回参数。

2,接口测试计划

类似于测试计划,5w原则,包括测试目的,测试方案,测试范围,测试资源安排,进度安排,风险控制等。

3,接口测试用例

测试用例设计,根据接口文档,主要对请求参数进行分析,包括通过性测试用例,多业务场景测试用例等。

4,接口测试执行

 执行接口测试用例,就是对接口进行请求,验证返回参数,可能还需要准备测试数据。

5,接口测试报告

及时反馈测试结果,如阻塞的测试,未通过的测试等。

5,接口自动化测试

做接口测试后可以顺便集成接口自动化,那么项目适合开展自动化吗?

①、需求稳定,不会频繁变更

②、多平台运行,组合遍历型、大量的重复任务

③、软件维护周期长,有生命力

④、被测系统开发较为规范,可测试性强(如果接口文档都没有,你知道的。。。)

⑤、人力资源足够

接口自动化测试适用场景:

    (1)开发自测,冒烟测试:一个新的自动化接口测试案例开发完成后,直接发给接口对应的开发,安排在开发本地环境执行,一旦开发确认完成接口开发,就开始执行接口测试案例,基本上可以实时拿到测试结果,方便开发快速做出判断。

    (2)回归测试:开发本地测试通过后,或整个需求手工测试通过后,把自动化的接口测试案例做分类整理,挑选出需要纳入到回归测试中的案例,提高测试效率。