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产生的代码,都要人工检查,验证 。

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