百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

0基础小白如何学接口测试?一文讲解接口自动化之python案例脚本

off999 2024-10-17 11:45 77 浏览 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自动化测试群学习交流~~

相关推荐

安卓模拟器电脑版(安卓模拟器电脑版下载)

 BlueStacks安卓模拟器  是一款十分好用的安卓模拟器。该软件非常的不错,采用了LayerCake技术可使用一些ARM特殊指令集,而且使用它能够让大部分的安卓应...

靠比较好的软件下载网站(靠比较好的软件下载网站动漫)
靠比较好的软件下载网站(靠比较好的软件下载网站动漫)

官网下载最好通过官网下载,最大的好处是能够保证软件的原汁原味,不怕病毒。其安装程序不会被恶意篡改,保证了应用过程中的安全性。但是缺点也是存在的。一些软件通过官网下载的时候速度非常慢,尤其对于Office、VisualStudio等国外的主...

2026-01-08 06:51 off999

大白菜一键重装系统步骤(大白菜重装系统详细步骤)

1.登录大白菜官网【www.winbaicai.com】,下载最新版的大白菜U盘启动盘制作...2.解压并打开大白菜U盘启动盘制作工具,点击切换至【一键还原】界面3.进入一键还原界面之后,选择【我要重...

怎么提升电脑配置(如何升级电脑配置提高电脑运行速度)

升级电脑配置可以通过以下几个方面来实现。首先,可以更换更快的处理器和更大的内存条,这将提升计算速度和多任务处理能力。其次,更换较新的显卡可以提升图形处理性能,使游戏和图形应用更流畅。此外,更换更大容量...

重启就好了(重启就好了吗)

一、路由器工作时间过长,热量散发不出去引起的断网很多用户在使用路由器的时候并没有过多的去在意过它的“感受”,会让它处在24小时的工作状态下,其实在路由器长时间工作的情况下,其内部会产生大量的热量,又因...

电脑麦克风没声音是什么原因

电脑麦克风没有声音可能有多种原因,以下是一些常见的排查步骤:1.检查麦克风连接:确保麦克风正确连接到电脑的麦克风插孔上。如果是通过USB连接的麦克风,也要确保USB连接正常。2.调整麦克风音量:在...

安全浏览器免费下载(安全刘览器下载)
安全浏览器免费下载(安全刘览器下载)

1、打开运行qq浏览器。  2、点击右上方菜单按钮,在弹出的菜单中点击“qq浏览器设置”。?  3、进入“安全与隐私”类目,然后勾选“开启安全网址认证”确定即可。?1.首先打开浏览器,点击左上角的三个点。2.然后在弹出的页面点击“设置”选项...

2026-01-08 04:03 off999

bios无法设置u盘启动(bios无法设置legacy)

需要准备的工具:电脑,Bios设置界面。1、以戴尔电脑为例,直接按启动快捷键F12进入启动菜单选择u盘即可,进入BIOS设置。2、进入BIOS设置之后。找到”USBStorageLegacySuppo...

电脑重装win7系统后怎么设置

1.首先在win7桌面空白处,点击右键弹出菜单,选择个性化。2.调出个性化设置窗口后,我们切换至开始选项卡,然后点击右侧下方的“选择哪些文件夹显示在开始屏幕上”。3.此时一般正常情况下,可以看到设置选...

简单常用的dos命令(常见dos命令总结)

一些常用的DOS命令包括:1.dir:列出当前目录中的文件和子目录。2.cd:更改当前目录。3.md:创建一个新的目录。4.rd:删除一个目录。5.copy:将文件从一个位置复制到另一个位置...

421事件全文免费阅读(421事件文档全文免费阅读)

对于421事件的真实性,目前没有确凿的官方消息。关于421事件的真实性,有以下几种观点:1.有人认为421事件总体上是真实的,认为其中的污秽和混乱超过了大多数人的认知,涉及到的封建迷信内容对于一些人...

英伟达所有显卡型号(英伟达显卡型号含义)

amdcpu搭配英伟达的显卡,显卡性能不会受到影响的。性能不会受到影响,AMD说配三A平台稳定性最强,而且恢复自动超频一点点,制其实那只是AMD的广告而已,没那回事,AMDCPU配英伟达的显卡也没...

怎么查看win11的产品密钥(怎么查看win11的产品密钥是多少)
  • 怎么查看win11的产品密钥(怎么查看win11的产品密钥是多少)
  • 怎么查看win11的产品密钥(怎么查看win11的产品密钥是多少)
  • 怎么查看win11的产品密钥(怎么查看win11的产品密钥是多少)
  • 怎么查看win11的产品密钥(怎么查看win11的产品密钥是多少)
windows无法连接到这个网络(windows无法连接到这个网络 笔记本)

有可能是因为无线网络的密码变了,也有可能是系统自身的问题,解决方法:1、右键计算机图标。2、点开服务和应用程序,然后点击下面的服务。3、打开服务后找到WLANAutoConfig无线网络服务。4、W...

电脑装机平台(电脑装机城)

网上装机京东比较靠谱。要想在网上组装一台靠谱的电脑,真的需要一双慧眼。笔者认为相对靠谱的还是某东自营店,某宝甚至某猫都是满地坑。如果某东也看不上的话,其实到线下实体店购买也是不错的选择,现在线上线下价...

取消回复欢迎 发表评论: