摘要 你是否希望:
这不是幻想!本文手把手教你用 Playwright(自动化) + 本地大模型(LLM),搭建一个 轻量级白盒测试 Harness。 ✅ 无需复杂框架 ✅ 所有代码可本地运行 ✅ 聚焦真实代码变更场景 ✅ 输出可执行的测试用例 10 分钟,让你的 AI 学会“读代码、写测试、做验证”。
先说人话:
💡 传统方式:你读代码 → 人工设计用例 → 手写断言 Harness 方式:AI 读代码 → 自动推导用例 → 自动生成测试 → 自动运行验证
表格
✅ 组合效果: Playwright 负责“动手”,LLM 负责“动脑”, 二者通过 Python 脚本无缝协作。
场景设定
你有一个 Java 服务,MR 中修改了如下方法:
java编辑
// 原逻辑 public boolean needCaptcha(String phone) {
return true;
}
// MR 新增逻辑 public boolean needCaptcha(String phone)
MemberDto member = memberService.getMember(phone); return member == null; // 会员免验证码
}
目标:自动生成覆盖新旧逻辑的测试用例。
步骤 1:准备你的“代码知识包”
把被测方法和相关上下文保存为 code_context.txt:
text编辑
【方法名】UserService.needCaptcha 【输入】String phone 【输出】boolean 【业务规则】
- 若手机号为空,返回 true(需验证码)
- 若手机号对应已注册会员,返回 false(免验证码)
- 否则返回 true
【依赖服务】
- memberService.getMember(phone): 返回 MemberDto 或 null
步骤 2:安装基础环境
bash编辑
📌 提示:未来可用 AST 自动提取,初期手动整理即可。# 1. 安装 Playwright pip install playwright playwright install chromium
2. 安装 Ollama(运行本地大模型)
curl -fsSL https://ollama.com/install.sh | sh
3. 拉取 Qwen 模型(中文友好)
ollama run qwen:latest
步骤 3:编写 Harness 核心脚本(whitebox_harness.py)
python编辑
import requests import subprocess import tempfile import os
1. 让 LLM 读代码,生成测试
def generate_test(code_context: str):
prompt = f""" 你是一名资深 Java QA 工程师,请为以下方法生成 JUnit 5 单元测试: {code_context} 要求: - 覆盖所有分支:空手机号、会员、非会员 - 使用 Mockito mock memberService - 输出完整可运行的 Java 代码,不要解释 """ resp = requests.post("http://localhost:11434/api/generate", json={ "model": "qwen", "prompt": prompt, "stream": False }) return resp.json()["response"]
2. 用 Playwright 执行测试(模拟 CI 环境)
def run_test(java_code: str):
# 创建临时测试文件 with tempfile.NamedTemporaryFile(mode='w', suffix='.java', delete=False) as f: f.write(java_code) test_file = f.name try: # 编译并运行(简化示例,实际可用 Maven/Gradle) compile_result = subprocess.run( ["javac", test_file], capture_output=True, text=True ) if compile_result.returncode != 0: return {"status": "compile_error", "log": compile_result.stderr} # 运行测试(此处省略,实际可调用 mvn test) return {"status": "success", "message": "Test generated and compiled."} finally: os.unlink(test_file)
3. 主流程
if name == "main":
# 读取代码上下文 with open("code_context.txt", "r") as f: context = f.read() # 生成测试 test_code = generate_test(context) print("✅ AI 生成的测试用例:
")
print(test_code) # 验证(可选) result = run_test(test_code) print("
🔍 验证结果:", result["status"])
步骤 4:运行!见证 AI 写白盒测试
bash编辑
python whitebox_harness.py
输出示例:
java编辑
@Test void needCaptcha_nullPhone_returnsTrue() {
assertTrue(userService.needCaptcha(null));
}
@Test void needCaptcha_emptyPhone_returnsTrue() {
assertTrue(userService.needCaptcha(""));
}
@Test void needCaptcha_registeredMember_returnsFalse()
@Test void needCaptcha_newUser_returnsTrue()
✅ 完美覆盖所有分支!
1. 自动解析 Git Diff
用 git diff 提取 MR 变更,自动填充 code_context.txt。
2. 集成静态分析
用 CodeQL 或 SonarQube 找出未覆盖的分支,喂给 LLM 补测。
3. 失败自修复
若测试编译失败,把错误日志再喂给 LLM:“请修正语法错误”。
表格
💡 核心优势: 你不是在“请求 AI 帮忙”,而是在“训练一个专属测试助手”。
你负责定义“什么是对的”, AI 负责穷尽“怎么验证对”。
用 Playwright + LLM 搭建的这个小 Harness, 或许就是你迈向 AI 原生质量工程 的第一步。
现在,就去试试—— 让 AI 为你写第一个白盒测试吧!
环境:Python 3.10 + Playwright 1.42 + Ollama Qwen 资源:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/262002.html