AI + 自动化测试 - 2026

点击这里,边看视频讲解,边学习以下内容

在软件测试的 自动化开发过程中,怎么样使用好AI,最大限度地提升工作效率和工作产出呢?

这里通过一个示例项目的自动化测试,给大家分享我自己摸索之后,总结出来的流程办法。


🗝️ 预备知识PythonSelenium, API 接口自动化hytest/pytest

AI智能体安装

编程智能体进化日新月异,很难说哪个最好用, 使用方式大体类似,大家可以根据自己的喜好选择。

在讲解AI测试系列教程中我会使用不同的智能体。

本次讲解中使用 opencode点击这里学习如何安装使用

实战项目

我们用来演示自动化测试的系统,名为 白月SMS系统,是一个 简单的药品管理演示系统,把它当作你要测试的系统。

请大家点击这里,按照说明下载、安装、运行 白月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 格式保存。

比如 CodexAGENTS.mdQwen CodeQWEN.mdClaude CodeCLAUDE.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产生的代码,都要人工检查,验证 。

这样开发出来,我们心里才有数,才能放心。