AI + 自动化测试 - 2026
在软件测试的 自动化开发过程中,怎么样使用好AI,最大限度地提升工作效率和工作产出呢?
这里通过一个示例项目的自动化测试,给大家分享我自己摸索之后,总结出来的流程办法。
🗝️ 预备知识: Python, Selenium, API 接口自动化, hytest/pytest
AI智能体安装
编程智能体进化日新月异,很难说哪个最好用, 使用方式大体类似,大家可以根据自己的喜好选择。
在讲解AI测试系列教程中我会使用不同的智能体。
本次讲解中使用 opencode,点击这里学习如何安装使用
实战项目
我们用来演示自动化测试的系统,名为 白月SMS系统,是一个 简单的药品管理演示系统,把它当作你要测试的系统。
开发过程 - Web测试
为自动化测试新建一个项目目录。
测试用例
请点击这里,下载本次练习用的测试用例文档,并保存到 docs/测试用例.xlsx 文件中。
请大家先认真看一遍测试用例文档,对接下来要实现哪些功能心中有数。 然后再进行后续的学习。
下载的测试用例文档是 Excel表格,不利于我们喂给AI 学习。
可以把它转为 MarkDown格式,比如
请把 测试用例文档 `docs/测试用例.xlsx` 转化为 Markdown格式,
并且保存到 `docs/测试用例.md` 文件中
每个用例内容模板如下:
<markdown>
# <用例标题>
## 属性/标签
- 用例编号:
- 功能点编号/名称:
- 优先级:P0/P1/P2/P3 等等
- 自动化用例
- 冒烟测试用例
- 其他自定义标签
## 测试点
简短描述测试点
## 前置条件
类似如下:
系统中已经进行过xxx操作。
系统中已经有如下数据:xxx
## 测试步骤
1. 步骤1 内容
2. 步骤2 内容
步骤2 预期结果:xxx
## 测试结果
## 备注
<markdown/>
下载页面文件,供AI参考
AI 怎么能知道界面自动化的各种元素在哪里?自动化定位的特征是什么呢?
现在的编程智能体可以自行操作浏览器,了解界面结构和元素特征。 根据我的经验, 这样会增加智能体循环步骤,增加错误可能。
推荐自己预先把需要自动化的页面html内容保存下来 。
请直接使用下面的代码, 浏览到你要保存的界面,输入保存文件名,回车即可 。
先安装必须的 python库
pip install selenium beautifulsoup4 lxml -i https://pypi.tuna.tsinghua.edu.cn/simple
请点击这里,下载save_webpage.py程序,然后执行即可。
注意保存一个页面时,要把页面上可能会显示的内容,尽可能的点击显示出来。 比如订单页面, 应该点击选择客户 和 药品, 把这些数据都呈现出来,再保存页面。
最后,除了下载页面,还有一个 site_map.yaml 文件,
里面定义了各个功能页面的url和 对应下载好的html文件名,
后续AI通过它了解网站的功能结构和页面之间的关系。
编写 项目上下文 文档
目前主流的 软件开发智能体 都支持 项目上下文(context)文档 ,通常以 Markdown 格式保存。
比如 Codex 的 AGENTS.md, Qwen Code 的 QWEN.md,Claude Code 的 CLAUDE.md 等等。
AGENTS.md 目前受到多个智能体的支持,比如
GitHub Copilot,Cursor,Windsurf,Google Antigravity,Open Code,Kilo Code 等
这些文档 里面通常存放 给AI阅读 的 项目信息和开发规范。 简单说,就是每次给AI发指令时,都希望AI谨记的背景信息。
对于自动化测试项目来说,通常包括 被测系统web网站各页面URL地址,被测系统接口文档,自动化开发的要求等等
比如,我们这个自动化项目 ,可以是这样
## 项目说明
这是一个自动化测试项目,用于测试 `bysms 系统`
- 开发语言使用 `Python`,已经安装到缺省环境中,直接执行 `python` 命令即可
- 测试框架使用 `hytest` ,使用手册:`docs/hytest-doc-for-ai.md`
## 被测系统说明
被测系统 bysms 系统已经运行在本机 `http://127.0.0.1`
管理员登录账号 `byhy`, 密码: `88888888`
## 自动化开发注意点
- 尽量把常用操作封装成类和函数,放到 `lib` 目录下,方便调用
- 库中函数比较多时,把函数按功能点封装到类中
- 自动化开发时,一个操作优先看lib里面有没有封装好的函数可以直接调用,如果没有再自己封装
- 用例 初始化 和 执行步骤中 创建的数据,在清除操作中要删除
- 要尽量利用 已经创建的数据环境(根据 hytest框架 的初始化/清除规则)
- 加上适当的注释
- 使用配置文件 `config.py` 存放 被测系统的url, 账号和密码 等信息。
### Web UI 自动化
web自动化使用 `Selenium` ,已经安装到缺省环境中,不需要额外再安装。
浏览器优先次序: `Edge` > `Chrome` > `Safari`
禁用 Chrome/Edge 密码管理/密码泄露提醒弹窗
`docs/webpages` 目录下预先下载了各个页面html文件,
比如 `docs/webpages/主页.html`, `docs/webpages/登录页面.html` 等等
`docs/webpages/site_map.yaml` 文件中定义了各个功能页面的url和 对应下载好的html文件名,
通过它,你可以了解网站的功能结构和页面之间的关系。
如果使用 hytest 作为 自动化测试框架,需要提供使用手册文档。
只需点击这里,下载 hytest 使用手册, 这里我们下载保存到 docs/hytest-doc-for-ai.md
如果你使用 pytest 框架,就不需要指导AI如何使用,AI 已经在训练时 包括了如何使用 pytest。
然后,因为修改了 AGENTS.md / QWEN.md / CLAUDE.md 等项目上下文文档, 需要重启AI智能体确保它重新读取了这些文档内容。
规划用例的数据环境层级
有测开经验的开发者都知道 自动化测试中 数据环境 的重要性。
目前的情况下,不建议 让AI自己帮我们直接根据用例,规划数据环境
建议我们自己来规划。
你要先花一些时间,分析测试用例,得到有哪些数据环境,比如
初始数据环境
1客户-1药品-1订单
5客户-5药品-5订单
管理员打开登录页面
管理员已登录
然后,思考如何构建目录结构, 比如
cases
└─env-空数据环境打开浏览器
├─env-管理员已登录
│ ├─env-1客户-1药品-1订单
│ └─env-5客户-5药品-5订单
└─env-管理员打开登录页面未登录
然后执行AI指令,比如
## 任务1
在 cases 目录下 创建如下自动化用例子目录:
cases/env-空数据环境打开浏览器
cases/env-空数据环境打开浏览器/env-管理员打开登录页面未登录
cases/env-空数据环境打开浏览器/env-管理员已登录
cases/env-空数据环境打开浏览器/env-管理员已登录/env-1客户-1药品-1订单
cases/env-空数据环境打开浏览器/env-管理员已登录/env-5客户-5药品-5订单
## 任务2
在任务1创建的 `env-` 开头的 子目录里面,
创建 hytest 用例环境构建/清除 文件 `__st__.py`,
并在其中编写相应的 hytest 初始化清除代码。
注意:
1. 客户,药品 ,订单数据之间有依赖关系,清除时要注意顺序,
先清除订单,再清除药品和客户。
2. 所有初始化/清除都通过界面操作来实现,不要尝试推断API接口来操作。
合理传递上层数据环境对象给下层数据环境(比如通过hytest的GSTORE),避免重复创建数据环境。
如果你懒得自己规划数据环境,也可以直接让AI帮你规划,执行下面的AI指令
hytest框架提倡相同数据环境的用例放在同一个子目录下,通过`__st__.py`文件来实现数据环境的初始化和清除。
请分析测试用例文档 `docs/测试用例.md`,
规划出合理的测试用例数据环境,并且生成 相应的子目录,放在 `cases/` 目录下。
并且为这些子目录创建 `__st__.py`, 并在其中编写相应的 hytest 初始化清除代码。
AI产生的代码,我们要 review 和 测试,如果有问题 需要自己修改,或者让AI 帮你修改。
用例分批,借助AI实现
接下来就可以分批挑选测试用例,借助AI智能体,生成自动化代码。
分批的原则是:挑选 同一个/相关 功能点的,因为相似功能点,不杂乱,这样AI产生的代码,比较方便我们人工 review 和测试。
不一定非得要同样的数据环境,因为AI智能体可以帮你处理不同数据环境放到不同目录的。
登录用例
先挑选登录功能的 API 的测试用例,
执行下面的AI指令
你是测试开发工程师,
本次任务要完成 `docs/测试用例.md` 文档中 **登录功能** 的测试用例的自动化开发。
就是 文档中 1-215 行的内容。
要求:
- 自动化用例代码放入 `cases/` 目录下面合适的子目录中
子目录名称说明了该目录下的用例对应的数据环境,
并且子目录中有 hytest的 `__st__.py` 文件,里面有数据环境的初始化和清除代码
根据用例的 前置条件/数据环境,选择合适的数据环境子目录。
如果发现没有合适的子目录,请先创建一个新的子目录,并在其中创建 `__st__.py` 初始化清除文件。
- 如果某些用例测试执行过程类似,只是测试数据不同,可以使用 hytest 数据驱动的方式实现。
管理员操作 用例
然后,执行下面的AI指令
你是测试开发工程师,
本次任务要完成 `docs/测试用例.md` 文档中 **管理员操作** 的测试用例的自动化开发。
就是 文档中 218-602 行的内容。
要求:
- 自动化用例代码放入 `cases/` 目录下面合适的子目录中
子目录名称说明了该目录下的用例所需要的数据环境,
并且子目录中有 hytest的 `__st__.py` 文件,里面有数据环境的初始化和清除代码
根据用例的 前置条件/数据环境,选择合适的数据环境子目录。
如果发现没有合适的子目录,请先创建一个新的子目录,并在其中创建 `__st__.py` 初始化清除文件。
- 如果某些用例测试执行过程类似,只是测试数据不同,可以使用 hytest 数据驱动的方式实现。
- 加上适当的注释
开发过程 - 接口测试
实战班学员内部锻炼内容。
总结
从这个过程大家可以看出 我在使用AI开发代码的时候, 不是一股脑都丢给AI,让它自由发挥,那样会进入一个不可控的状态。
而是 自己建立一个自动化整体骨架,让AI实现血肉。
并且AI产生的代码,都要人工检查,验证 。
这样开发出来,我们心里才有数,才能放心。