0基础小白如何学接口测试?一文讲解接口自动化之python案例脚本
off999 2024-10-17 11:45 69 浏览 0 评论
接口一般指发生在系统的多个子服务之间,本系统与外部系统之间的信息交换。接口也就是大家熟悉的API。例如电商平台中订单服务子系统中,订单中商品sku详细信息需要到商品服务中获取,订单服务调取商品服务的商品信息接口。
接口测试属于集成测试阶段,接口应用于多个系统或服务间的信息获取或者信息更新。这部分工作由于涉及到多个开发人员,测试人员通常站在系统全局或者系统端到端流程的立场,更容易发现问题和定位责任方。
接口测试大家经常觉得难度很大,一般是两个方面的问题没得到解决:测试需求分析和测试手段。
本篇文章详细为大家解决这两方面的问题,一方面提供测试需求分析方法和案例,另一方面讲解接口自动化测试之python案例脚本。
一、测试需求分析方法
要全面了解测试内容,需要掌握通用的信息收集方法。接口测试前,先学会问问题。问清楚如下问题:
1、接口解决什么问题?
2、接口的基本信息
(1)接口的调度
(2)输入数据
(3)输出数据
(4)接口的异常处理要求
3、测试校验点有哪些呢?
(1)接口的结果可以有哪些方法进行校验,如到数据库中的校验,到redis中获取值校验。
(2)接口可在业务系统界面中校验吗?例如B系统查A系统的数据,可以直接打开A系统,看界面的信息。
4、测试数据如何组织?
(1)接口使用人员可能会输入的数据组合有哪些?成功的有哪些?失败的有哪些?例如接口使用者会不会传入错误的数据类型,必填项没给值,最小值为0的数,返回了负数。这一点就需要对开发常犯的错误有些基本的了解。才能够一下命中开发的数据问题。
得到如上问题的答案,一个接口的测试内容和测试用例就组织出来了。
二、接口测试分析案例
为了便于大家理解,这里详细讲解电商系统中常见的一个接口。
电商系统中有一个订单状态实时查询接口,用于获取电商各平台的订单当前状态。这是一个简化版的内部订单状态数据查询接口。
接口测试第一步需要开发方提供详细的接口文档。接口文档的内容如下:
订单状态实时查询接口
场景说明:用于各子系统获取第三方电商平台的订单当前状态。
接口地址:POST http://192.168.10.10:5000/order/query_order_status
请求参数(json格式)
{
"group": "aliExpress",
"orderId": "996616"
}
返回结果(json格式)
{"code":1,"error_message":"orderId error",}
{"code":0,"data":"delivered"}
接口的返回值可参考如下内容。
基于以上接口文档,我们分析出要测试的内容:
1、接口解决订单状态的查询问题,即该接口处理合理的订单数据,并返回该订单当前的状态。
2、接口的调度方式、输入、输出、异常判断在即可文档中给出了详细的说明。需要考虑如下测试场景:
(1)调度接口的正常数据测试场景,测试标准是指使用正常的数据,查询到准确的订单状态数据。
(2)调度接口的异常数据测试场景。测试标准是使用非正常数据,接口能返回预期的异常结果,不会出现崩溃。
3、测试校验点主要包括code和data两个字段;对于正常值的预期结果,如果想做到自动化比对,可以通过代码查询db去进行比对(大家可作为扩展知识去学习)。这里我们直接给出预期结果。
4、测试数据组织要考虑覆盖面,测试虽然不能做到百分百穷举,但是要在已有的信息上得到最大的覆盖率。测试以上接口,具体可以从三方面来思考:接口文档中明确了的正常数据,接口文档中明确了的异常数据,还有一类是基于经验得到的异常数据,例如开发过去的bug,条件判断的边界值。我们分别从这三方面来组织测试数据。
(1)正常数据:平台名和订单状态是有限的,可以进行数据组合。订单号因为是唯一值,无法做到穷举测试。穷举平台名和订单状态的所有数据组合,使用自动化脚本进行测试。我这里只是举几个例子:
(2)异常数据:字段不取可选值或者为空,字段值类型不符合要求等,根据接口文档组装所有出现的异常。
(3)非预期的异常数据:这类数据可以组合很多,但是要根据系统以往的bug经验,去做一些开发经常忽略的校验点。我这里特意举出两个特殊字符的例子。大家可以去扩充更多的测试用例。
(4)逆向思考一下,平台会增加吗?订单的状态只有这五类吗,是否还有其他不在这五类中的呢,如果有,也要增加数据去测试。甚至可以去反推需求的合理性,提出系统扩展性的bug。对一个接口测试是否完整,是在于你掌握的信息量是否充分。当你的视角比开发和需求更广阔,对信息掌握的力度更细时,其实你已经主动引导大家提高接口的质量了。
经过以上测试内容的梳理,大家对接口测试有了比较基础的认知。随着对项目的深入了解,接口的复杂度的增加,信息面会更广。那么基于以上方法收集信息、分析信息,增加测试覆盖面,甚至了解接口的应用范围,才能更进一步提升对软件技术的理解。
三、自动化接口测试
测试手段有很多种,单个的接口测试可以使用浏览器上的工具,如Chrome的postman。但是靠手工在工具上测试一两个接口效率低下,无法保证测试数据的覆盖面,也不利于技术能力的长期积累。我推荐系统地解决问题方式,即编程语言实现自动化测试。
Python是一门非常容易入门的语言(python语言的学习建议大家去看最简单易懂的廖雪峰的官网)。有了编程思维,再去开展接口测试就具备了基本的技术视野了,对我们后期不断扩展自己的技术能力打下基础。接下来我使用python编程语言来完成接口的正常数据测试用例代码。
关于订单状态查询接口,我们使用如下代码可以调度和测试:
import json
import requests
order_info = {
"group": "aliExpress",
"orderId": "996616"
}
response = requests.post(' http://192.168.10.10:5000/order/query_order_status', data=json.dumps(order_info))
assert response.status_code == 200
response_data = response.json()
assert response_data.get("code") == 0
assert response_data.get("data") == "shipped"
接下来我对代码进行详细的讲解:
第一步,导入两个必要的包json和requests。这里需要你对python基础知识、json信息格式的使用和第三方库requests有初步的了解,对web请求原理也要有简单了解,并且能组装出请求数据。
import json
import requests
第二步,准备好请求数据,请求数据来源于我们设计的测试数据。
order_info = {
"group": "aliExpress",
"orderId": "996616"
}
第三步,将测试数据组装,并采用POST方式发送web请求。注意要将json测试数据序列化后再进行网络传输,直接应用json的序列化方法dumps。
response = requests.post(
'http://192.168.10.10:5000/order/query_order_status', data=json.dumps(order)
)
第四步,判断请求返回的实际结果同预期结果是否一致。使用assert来断言,判断实际结果和预期结果相等。
assert response.status_code == 200
response_data = response.json()
assert response_data.get("code") == 0
assert response_data.get("data") == "shipped"
执行以上代码,执行通过,表示实际结果同预期结果一致,该测试用例执行通过。
不同的测试用例,测试数据和测试结果校验,建议大家扩展以上方法去实践。
随着大家对接口测试思路和工具的掌握,接下来,要系统化地组织大量接口的测试。那么我们就要考虑测试用例的组织框架,python的unittest框架。大家有兴趣可以继续了解该框架的知识。
请关注+私信回复:“测试”就可以免费拿到软件测试学习资料,同时进入Python自动化测试群学习交流~~
相关推荐
- 戴尔官网保修查询入口(戴尔售后保质期查询)
-
可以按照以下步骤查询戴尔笔记本电脑的保修期:1.打开戴尔官网:https://www.戴尔.com/zh-cn/售后服务/保修政策.html2.点击页面上方的“服务与支持”按钮,进入戴尔的服务支持...
- 手机号邮箱登录入口(手机号邮箱官网)
-
手机163邮箱登录入口如下:163邮箱官网入口:https://smart.mail.163.com/login.htm点击进入登录或者注册邮箱即可。手机浏览器访问进入官网http://www.123...
- sd卡(sd卡无法读取怎么修复)
-
SD卡是大卡,相机用的;普通的手机内存卡,是小卡,正规的名称是macrosd卡,也就是微型SD卡。可以通过卡套转为普通的SD卡的大小。 其实就是大小不同。但手机上的内存卡,人们经常也俗称为SD...
- windows7蓝牙功能在哪里打开
-
点击搜索框在windows7系统主界面点击开始菜单,点击打开搜索框。输入命令输入services.msc后回车,在列表中找到并右击BluetoothSupportS...点击属性选择进入属性菜单,...
-
- 2010激活密钥(microsoft2010激活密钥)
-
步骤/方式1officeprofessionalplus2010:(office专业版)6QFdx-pYH2G-ppYFd-C7RJM-BBKQ8Bdd3G-xM7FB-Bd2HM-YK63V-VQFdKVYBBJ-TRJpB-QFQ...
-
2025-11-19 04:03 off999
- 联想官方刷新bios工具(联想电脑刷新bios)
-
刷新BIOS需要使用联想的官方网站或授权维修中心来进行操作。以下是一些基本步骤:1.访问联想的官方网站,找到BIOS更新程序并下载。在下载过程中,请确保选择与您计算机型号匹配的版本。2.将下载的B...
-
- 苹果ios14系统下载(苹果ios14.1下载)
-
1方法一步骤/方式一打开Appstore。步骤/方式二在搜索栏点击搜索框。步骤/方式三搜索并点击需要下载的软件。步骤/方式四点击获取。步骤/方式五最后验证ID密码即可。1.在应用商店搜索你要下载的应用名称。2.点击下载按钮,如果要求登...
-
2025-11-19 03:03 off999
- office2010怎么免费永久激活密钥
-
用这个试试,一个KMS激活工具可以激活2010到2019的Office自家的目前用的就是这个microsoft6477.moe/1716.html直接使用这个Microsoftoffice2010...
-
- 类似爱加速的国内ip(类似爱加速的app)
-
推荐“V8盒子”。这一款免费无广告的模拟器,不同于其它软件盒子,而是类似于X8沙箱,满足游戏多开,画中画,悬浮球操作,熄屏后台运行等多功能的沙箱盒子.支持一键root,一键安装xposed框架,能在安卓/苹果手机上运行多个安卓/ios虚拟系...
-
2025-11-19 02:03 off999
- 阿里旺旺手机客户端(阿里旺旺手机app)
-
手机淘宝的旺旺在打开商品后,会看到左下角有个旺旺的图标,点击就可以联系了。 阿里旺旺是将原先的淘宝旺旺与阿里巴巴贸易通整合在一起的一个新品牌。它是淘宝和阿里巴巴为商人量身定做的免费网上商务沟通软件,...
- 最纯净的pe装机工具(pe工具哪个纯净)
-
U盘装系统步骤:1.制作U盘启动盘。这里推荐大白菜U盘启动盘制作工具,在网上一搜便是。2.U盘启动盘做好了,我们还需要一个GHOST文件,可以从网上下载一个ghost版的XP/WIN7/WIN8系统,...
- 装一个erp系统多少钱(wms仓库管理软件)
-
现在主流有客户端ERP和云端ERP两种客户端通常一次买断,价格在万元左右,但是还有隐性费用,你需要支付服务器、数据管理员,此外如果系统需要更新维护,你还需要支付另外一笔不菲的费用。云端ERP:优势...
- cad2014序列号和密钥永久(autocad2014序列号和密钥)
-
1在cad2014中修改标注样式后,需要将其保存2单击“样式管理器”按钮,在弹出的窗口中选择修改后的标注样式,然后单击“设置为当前”按钮,再单击“保存当前样式”按钮,将其保存为新的样式名称3为了...
- qq修改密保手机号(qq修改密保手机号是什么意思)
-
QQ更改绑定的手机号码操作步骤如下:1、打开手机主界面,找到“QQ”软件点击打开。2、输入正确的QQ账户和密码登录到qq主界面。3、点击左上角的头像“图片”,进入到个人中心界面。4、进入到个人中心界面...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
