接口测试 分享那些年编写接口自动化脚本

啊木森 · 2023年04月23日 · 6126 次阅读

前言

2014 年,我在 C 厂实习期间,有幸接触到持续集成相关项目的知识和经验。接下来的 2016 年 4 月,我参加了深圳金蝶总部举办的软件测试&安全测试高峰论坛会。当时,最吸引我的是介绍金蝶软件内部自动化测试流程,讲述测试工程师日常工作,如何配置相关测试参数,定时执行测试用例,并将测试报告发送到邮箱。每天早上,在办公室喝着咖啡,测试工程师就可以轻松地查看最新的测试结果。直到 2018 年,我遇到了与接口相关的业务,并在项目上实践了我多年来一直未实现的想法。我希望通过本次分享,与更多的测试工程师分享我的项目经验,让大家受益。

项目背景

在 xxSDK 开发项目中,由第三方公司完成平台与接口开发、测试和部署。然而,在实际的项目测试中,我们经常会遇到后端测试接口不稳定的情况,比如接口响应慢或者出现异常等情况。为了解决这些问题,我主动咨询了开发工程师,并获取了产品接口文档。在确保日常功能测试工作完成的前提下,我开始编写监听接口的功能,以便更好地监控和解决接口问题。

业务逻辑

1、每天定时执行接口测试任务,每日执行 4 次,时间间隔为 6 小时。
2、根据 Excel 表格中配置的接口和参数信息,调用 POST 请求服务端接口。
3、记录服务器返回的状态码和响应时间,并将信息写入 Excel 表格中。
4、根据 Excel 表格中记录的状态码判断接口是否正常。
5、将 Excel 表格中的数据存储到 MySQL 数据库中(数据在后续迭代版本中可用于分析各个迭代版本之间各个接口的响应时间对比)。
6、使用邮箱形式发送 Excel 表格和测试结果到指定邮箱。

代码结构


运行此项目方法:
1、本地使用到 Python 中 urllib,requests,urllib3,openpyxl,smtplib,email 库;
2、在 data.ini 中填写测试接口地址和 MySQL 的账号信息;
3、在 PostTest.xlst 中填写相关的测试用例;
4、在 Email.py 中配置邮箱发送账号和密码,以及接收者的账号

# Main.bat

主要用于 Jenkins 定时调用执行脚本
python3 Main.py
pause

# data.ini

配置请求的地址和 MySQL 数据库信息

# main.py

Dev 表示 data.ini 文件中,【Dev】URL 地址

start_time = datetime.datetime.now() 和 end_time = datetime.datetime.now(),统计整个程序运行花费时间;

# GetExcel.py

实际开发过程中,需要注意将原本的数据清除,再操作填写数据;
1、通过获取 PostTest.xlst 文件内容,进行 Post 请求参数,填写返回值;
2、求出每一个接口平均响应时间;
3、填写测试数据以及结果;
4、设置 Excel 表格边框效果
5、保存填写 Excel 数据

# Email.py

主要负责邮箱功能设置和发送;比如设置发送人的账号信息,接收人信息,发送的文档,邮箱的内容
为了避免频繁的接收到邮件,如下代码所示,当检测到异常时,发送邮件;每天 10 点执行,发送邮件;其他时间段执行不需要发送邮件;

注意事项:发送邮箱账号,需要在指定邮箱端开启 POP3/SMTP/IMAP 服务,否则无法送邮箱;

实际效果



# 项目地址:

https://github.com/jideluo/Port_CX_Test.git

项目总结

虽然这个项目的实践已经过去了 5 年,但回忆起来,实现该接口监控功能,对于该项目的实现来说,产生价值并不是非常高。例如,当接口发生异常时,用户将会提出投诉,同时运维工程师将会在后端进行预防工作,并在服务器性能达到某个值时会触发告警等。在该项目部署运行半年中,仅收到一次接口异常报告,且在反馈后 24 小时内修复。然而,对于个人测试自动化开发实践来说,实践 2016 年时项目测试想法,该项目却积累了大量的经验。例如,如何搭建 Linux 系统,如何安装 Jenkins 工具,如何处理 Excel 表格数据,如何发送邮件等。这些经验在今后的工作中会有所用处。
在 2018 年之前,我的思考集中在如何利用 Jenkins 实现持续集成自动化测试;而到了 2023 年之前,我开始考虑如何让语音助手像天猫精灵等,能够接收人工发出的语音指令并执行已准备好的测试脚本或者任务。而现在,我的思路则更多地聚焦于如何利用 Auto GPT 自动生成自动化测试脚本,以及如何定时执行这些脚本。然而现实情况是,我仍然处于纯手工测试岗位,只能测试基本业务功能,并且几乎没有时间用于编写代码等深入的技术方面。
在这短短的几年里,我不仅目睹了许多自动化测试平台的涌现,也亲身体验了相关的测试平台。可以说,互联网自动化测试的功能已经取得了很大的进展。但与此同时,我们也意识到,在物联网领域,自动化测试还有很大的欠缺。实际上,在过去的五年中,我一直在思考如何实现物联网产品的接口自动化测试。下次分享,我会着重介绍测试自动化平台改造的实践经验,以及如何将物联网测试融入自动化测试平台中。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册