专栏首页软测小生如何做API接口测试?

如何做API接口测试?

一、问题引入

经常有后端开发会问,后端接口都测试什么?怎么测?简单梳理了一下接口测试的相关内容:

测试什么?

怎么测?

目前后端调用主要是基于HTTP协议的接口,测试时主要有两种方法:

  • 工具模拟请求的发送与接收。工具有很多如:Postman、JMeter等;
  • 代码模拟请求的发送与接收。如:JAVA自带的Webb、RestTemplete、HttpClient或其他;

假如是一个GET请求,更简单方法是,直接将URL放到浏览器中。

二、接口测试

什么是接口?

举例:

1. 12306是一个网站,所有的数据都在12306上。12306提供一整套接口,调用接口我们就可以获取到里面的数据。比如:在携程/艺龙等第三方上购买票,实际就是调用了12306提供的接口获取库存等信息;

2.Windows是一个封装好的系统,按道理用户是没有权在Windows里头干任何事的,但是Windows提供了一整套的接口,调用接口我们可以操作Windows做出一些行为;

利用接口,可以对一个封装好的整体进行操作,包括获取、操作数据。类库就是提供的一整套接口,类库提供的各个方法/函数等类成员,就是各个接口,平常写的类也算是提供了接口,类是整体,类的成员函数就是接口。

什么是接口测试?

模拟客户端向服务器发送报文请求,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的一个过程。

两大类:

1.代码内部接口调用,代码A与代码B在组合的时候,必然需要定义一些名称以及参数、类型,这种在测试中一般划分在白盒测试中,对内部逻辑进行测试,目前未接触。

2.系统与系统之间,通过网络数据的传递进行交互,这种在测试中一般划分在黑盒测试中,也就是看不到代码,但可以通过各种手段将网络数据发送到接口从而得到接口的响应信息,达到测试的目标。

这里主要阐述第二种黑盒层面上的功能测试,主要是服务端接口。

【测试思路】

1.单接口:业务场景上无上下游依赖,一个接口的功能直接是一个测试模块。这种情况下,可直接测试该接口,从构造参数->发请求->校验结果

2.多接口:接口之间有数据流转,共同形成一个完成的业务流程,比如:一个完成交易流程,含下单->支付->退款等。针对这类型的接口可以考虑从业务场景上去覆盖(熟悉业务是自动化的基础)

【测试数据】

1.手动构造数据

如果是只测试一次的接口,可以使用手动造数据,比如:测试下单接口时需要测试deal,可以直接手动上单,测试的时候使用到什么数据就写什么数据。

2.调用其他API

可以直接通过调用其他API的方式准备测试数据,比如:测试退款、赔付接口时需要订单号,可以直接调用创建订单接口构造出想要的订单类型。

3.自动化工具构造数据

【测试工具】

可选择Postman、Jmeter等

三、接口测试自动化

测试步骤

实现方法

使用JAVA+Maven+TestNG进行服务端的自动化接口测试

1.驱动测试:java、或者python、其他。

2.管理测试数据:包括测试用例的管理,数据录入、测试结果显示等,可以用CSV、Excel、XML、Text纯文本

  • CSV格式:常用于入参数较简单。在真正的测试执行时,每次会读取一条CSV记录,每个字段做为一个参数,传给@Test方法。文件格式如下:
Num,Price,PayItemNum,Voucher,NeedVisitor,FeeCharge #可以加其他参数
3,10000,3,5000,0,3000
3,10000,3,5000,0,3000
3,10000,3,5000,0,3000
1,10000,1,5000,0,3000
  • Text格式:可用于处理参数是JSON的接口。K- V结构,可以将所有接口的入参数都存进去,然后读取相应的key来获取value,并可以value值进行修改。文件格式如下:
"host": "",
"port": "",
"headers": {
},
"basic": {
  "path": "",
  "method": "post",
  "data": {
    "subTitle":"",
     "joinType": 1,
    "ratioModifiable": 0,
    "departCityId": 50,
  }

3.模拟发送一个请求

举例:Webb发送

//POST请求
String req = "testurl"
String reqBody = JsonUtils.object2Json(Request, false);  //上方的测试数据
Webb webb = Webb.create();                              
JSONObject result = webb.post(req).useCaches(false).body(reqBody).ensureSuccess().asJsonObject().getBody();//发送一个post请求
//GET请求
Webb webb = Webb.create();
JSONObject result = webb.get("testurl")
        .header("Date",getGMT(date))
        .header("Content-Type","application/json;charset=utf-8")//发送一个get请求,有头部信
        .ensureSuccess().asJsonObject().getBody();

4.预期结果与实际结果进行对比

// 断言,判断用例执行成功或失败(实际值,预期值)
Assert.assertEquals(Actual value, expected value

5.可生成简单的测试报告

6.可选择集成jenkins,完成持续构建

结语:本文主要分享了如何做接口测试,包括接口自动化,欢迎大家一起交流~ 万水千山总是情,点个“在看” 行不行!!!

文章分享自微信公众号:
软测小生

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 如何做接口测试?

    经常有后端开发会问,后端接口都测试什么?怎么测?简单梳理了一下接口测试的相关内容:

    用户5521279
  • 如何做接口测试?

    今天来聊聊接口测试,现在是2020年了,打开招聘网站随便点开一个招聘帖子,几乎都可以看到岗位JD要求写着有接口测试经验优先。其重要性可见一斑!

    测试小牛
  • 如何做好接口测试?

    这几天小编一直看到有人在后台给小编回复:接口测试,那么如何做好接口测试呢?我们今天来讲解一下,希望对大家有所帮助,还有今天每日一道面试题开始做了,希望大家多多留...

    小老鼠
  • 接口测试怎么进行,如何做好接口测试

    接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。

    用户7880705
  • API测试| 了解API接口测试| API接口测试指南

    什么是API? API是一个缩写,它代表了一个 pplication P AGC软件覆盖整个房间。API是用于构建软件应用程序的一组例程,协议和工具。API指定...

    PHP开发工程师
  • API测试| 了解API接口测试| API接口测试指南

    API是一个缩写,它代表了一个 pplication P AGC软件覆盖整个房间。API是用于构建软件应用程序的一组例程,协议和工具。API指定一个软件程序应如...

    用户7466307
  • Postman如何做接口测试2:如何切换测试环境

    用postman进行接口测试的时候,我们经常会把接口地址的全路径填在url地址栏当中。这种做法不太好的地方在于,当你需要从一个测试环境切换到另一测试环境时, 需...

    海明威
  • Postman如何做接口测试1:如何导入 swagger 接口文档

    在使用 postman 做接口测试过程中,测试工程师会往界面中填入非常多的参数,包括 url 地址,请求方法,消息头和消息体等一系列数据,在请求参数比较多的情况...

    海明威
  • 如何用Postman做接口自动化测试

    把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试,模拟人去操作软件界面,把人从简单重复的劳动中解放出来 本质是用代码去测试另一段代...

    IT苦逼一枚
  • Apipost V6.0.4版本 支持离线使用

    近期Apipost在V6.0.4版本中,特别针对广大用户们在离线与未登录的各种使用与业务场景,进行了针对性的功能迭代与优化。

    XD
  • requests做接口测试

    Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,...

    我被狗咬了
  • 接口测试是什么?如何测试?

    接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。

    小老鼠
  • 如何进行接口测试

    1、接口的url:host+path 2、接口对应的功能、前端需要展示的数据、接口实现功能的逻辑 3、接口的类型:新增接口或者老接口参数修改、GET/POST...

    沈宥
  • 【实践】2.如何使用Postman做多接口测试

    本文讲解使用postman做接口测试和批量接口测试的方法。Postman的入门参考《【知识】1.Postman接口测试神器从安装到精通》

    辉哥
  • Python 如何使用 HttpRunner 做接口自动化测试

    UI 测试主要是为了取代人力操作,通过 UI 自动化去模拟操作,降低回归测试的成本

    AirPython
  • API 接口渗透测试

    远程过程调用(英语:Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,...

    HACK学习
  • 面试题-websocket 接口如何测试?

    websocket 接口如何测试呢? 简单的可以用在线的网页测试,也可以自己写个web客户端测,也可以用python代码测。

    上海-悠悠
  • 如何优雅的用Python做接口自动化测试

    直接上硬货,请接收~ 框架结构如下: Test_Api_Project | |---base.py |---base_api ||---register_api...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券