接口测试

测试工作中你是否常常有这样的疑虑:

1.什么是接口,接口到底长啥样?

2.什么时候进行接口测试?

3.接口文档是什么样的?

4.接口测试的正确姿势是什么样的?

 

什么时候展开接口测试?

1.项目处于开发阶段,前后端联调接口是否请求成功

2.有接口文档,开发已完成联调,功能测试展开之前

3.专项测试:如测流量大小、查看图片压缩大小、测试接口请求响应时间

4.版本上线前,进入整体回归测试,查看接口是否有异常

5.版本功能文档后,接口自动化

 

什么是接口?

接口测试:按照接口文档的要求,验证接口程序是否满足对外部程序提供数据的使用需求

接口是可以交换数据和信息的,我们常说的接口是指对外部提供数据交换的程序,以此来实现不同系统模块和不同系统之间的数据交换

 

接口测试的分类

1.模块接口测试(可划分到白盒测试中):如订单模块下单时,需要去用户资金模块查询余额等

2.Web接口测试,有可分为以下两类

  2.1.系统对外部系统提供的接口:如第三方登录

  2.2.内部子系统的服务之间的接口(服务器接口):是测试浏览器与服务器的接口

我们知道web开发一般分前端和后端,前端开发人员用HTML/CSS/JavaScript等技术。后端开发人用PHP/JAVA/Python/Ruby等各种语言。

用户输入的数据是输入到的前端页面上,怎样把这些数据传递的后台的呢?通过HTTP协议的GET与POST请求来实现前后端的数据传递。

常见的协议:

计算机内部传输都是二进制数,那么数据传输过程中,获取多少数据,传到哪里,同时通过协议来定义的,协议就相当于制定内部传输规则

  • tcp/ip 协议

  • http/https、websocket、json、xml

  • webservice(soap/wsdl)、restservice、xmpp、自定义协议

  • hession、dubbo

网络传输:

  • 文本:http、https、webservice、json

  • 二进制:thrift、protobuf、hession

 

接口测试的意义

1、保证系统的稳定性:

一个系统的服务端越接近底层,对系统的影响就越大,甚至有可能牵一发而动全身,服务端的一个缺陷可能会引起客户端的几个甚至十几个缺陷,更可怕的是服务端的缺陷有可能引起系统的崩溃,这对整个系统来说,损失将是不可估量的,因此服务端接口的质量将直接影响到系统的正确和稳定。

然而,在实际的开发过程中,开发人员并没有充足的时间编写单元测试,并且他们往往对自己编写的代码有足够的信心,不愿意将时间“浪费”在编写单元测试身上。这个时候接口测试就肩负着重要的作用。

2、将bug控制在项目前期:

就笔者所做的微信活动而言,后端系统比较成熟,对于前端开发来说,每个活动都有很大不同。这就导致后端接口开发只需要一天就可完成,而前端开发的工作量至少需要两、三天。而在这个空当期就可以充分的对接口进行测试,从而尽早的发现系统bug;减少功能测试的工作量,缩短产品的发布周期。

3、检查服务器的异常处理能力:

我们通常把前端的验证称为弱验证,因为它很容易被绕过,这个时候如果只站在功能的层面时行测试,就很难发现一些安全的问题。不以前功能为入口的接口测试就会发挥出它的作用。

 

接口测试的用例设计流程

1.明确出发点

2.选择好测试的对象

3.确认完整的测试对象的功能

可从以下情况考虑:

 

针对查询的接口要与数据库进行数据核对,检查数据的准确性

工具有很多如:postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。

接口测试用例设计思路

主要为三个方面

1、输入参数

  输入参数的校验:必填校验,长度校验,参数的有效性校验(如身份证,手机号码的等),参数的组合校验(不同的参数组合可能会存在不同的业务场景)

2、接口业务逻辑

  设计方法是分支覆盖---路径覆盖----场景覆盖,主要还是需要结合实际的业务场景,根本不会发生的业务场景就是无效的测试用例。

  为避免遗漏可以将业务流程图先画出来,依据流程图分别涉及不同的分支不同的场景,考虑:接口超时,接口异常,接口请求成功或失败,成功后怎么处理,失败后怎么继续执行等等

3、输出

  输出结果包括正常的输出,异常的输出,常用的方法是错误推断法,列举出程序中可能存在的错误或者异常,根据他们选择测试用例

 

接口测试文档

包括URL,调用方式,传入参数,返回值,状态码等

每一个状态码要有一条用例

测试步骤:

从开发人员那里获取接口文档,接口文档应该包括完整的功能接口、接口请求方式、接口请求URL、接口请求参数、接口返回参数。

如果当前项目没有接口文档,则可以使用fiddler对APP或者web进行抓包确认。

然后就是使用JMeter创建线程组,添加http请求,增加请求参数请求URL等,通过修改参数信息等等操作,查看请求的响应数据。

 

PS:

1、什么是接口测试?

2、接口的分类

3、接口测试工具

4、接口测试用例设计思路

注:本文有部分内容来源于笔者:搁浅

posted @ 2017-10-31 11:11  知了.Test  阅读(3108)  评论(1编辑  收藏  举报