Qwen3-0.6B-FP8助力自动化软件测试:生成测试用例与执行报告分析

张开发
2026/4/5 7:03:13 15 分钟阅读

分享文章

Qwen3-0.6B-FP8助力自动化软件测试:生成测试用例与执行报告分析
Qwen3-0.6B-FP8助力自动化软件测试生成测试用例与执行报告分析1. 引言你有没有过这样的经历产品经理刚把需求文档发过来开发那边代码也改完了而你作为测试工程师看着密密麻麻的文档和代码心里盘算着又要花好几天来设计测试用例。或者面对几千行的自动化测试执行日志要从里面找出真正关键的问题就像大海捞针一样。软件测试这个活儿重复性高但又特别需要细心和逻辑。很多时候我们花在“写”测试用例和“看”测试报告上的时间比真正执行测试的时间还要多。能不能让AI来帮我们分担这部分工作呢最近我尝试用Qwen3-0.6B-FP8这个轻量级大模型来探索AI在软件测试自动化中的一些新玩法。这个模型体积小推理速度快特别适合集成到我们日常的CI/CD流水线里。具体来说我主要用它做了两件事一是根据需求文档自动生成测试用例大纲二是对海量的测试执行日志进行智能总结和分析。用下来感觉它确实能帮我们省下不少时间把精力更多地放在那些更需要人类判断力的地方。这篇文章我就来分享一下具体的做法和实际效果希望能给测试同行们带来一些效率提升的新思路。2. 为什么选择Qwen3-0.6B-FP8来做测试辅助在开始动手之前你可能会有疑问市面上模型那么多为什么偏偏选这个这主要基于我们测试工作的几个实际需求。首先是响应速度。我们的自动化测试脚本可能随时触发尤其是在持续集成的环境下。如果模型推理太慢等它生成用例黄花菜都凉了。Qwen3-0.6B-FP8是一个经过FP88位浮点数量化的小模型推理速度非常快基本上能做到“秒回”这很符合我们即时生成、即时反馈的工作节奏。其次是部署成本。测试环境尤其是预发布环境资源通常比较紧张。我们不可能为了一个辅助工具去部署一个动辄几十GB的大模型。这个模型体积小巧对硬件要求低在普通的服务器甚至配置好一点的个人电脑上都能跑起来部署和维护的成本都很低。再者是任务匹配度。生成测试用例和总结测试报告本质上属于“文本理解与生成”任务。它不需要模型具备多模态能力或者复杂的逻辑推理但需要对自然语言指令有较好的理解并能生成结构清晰、逻辑合理的文本。Qwen3-0.6B-FP8在这类任务上表现足够可靠。最后一点也是我比较看重的是可控性。测试工作讲究严谨和可追溯。大模型有时候会“天马行空”生成一些不存在的场景。小模型在遵循指令、控制输出格式方面反而可能更“听话”更容易被我们设定的规则所约束生成的结果更符合测试规范。3. 实战一从需求文档到测试用例大纲我们先来看第一个场景如何让模型帮我们快速生成测试用例的骨架。这里说的不是最终可以直接执行的详细用例而是一个结构化的、覆盖了主要测试点和场景的“大纲”。这个大纲能极大地加速我们编写详细测试用例的速度。3.1 环境准备与模型调用首先你需要有一个能运行Qwen3-0.6B-FP8模型的环境。这里以Python为例使用Hugging Face的transformers库。# 安装必要的库 # pip install transformers torch from transformers import AutoTokenizer, AutoModelForCausalLM import torch # 加载模型和分词器 model_name Qwen/Qwen3-0.6B-Instruct-FP8 # 假设模型已发布在HF上此处为示例名称 tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained( model_name, torch_dtypetorch.float16, # 根据实际情况选择精度 device_mapauto ) def generate_test_outline(prompt): 根据提示词生成测试大纲 messages [ {role: system, content: 你是一个专业的软件测试工程师擅长根据需求生成结构化的测试用例大纲。}, {role: user, content: prompt} ] text tokenizer.apply_chat_template( messages, tokenizeFalse, add_generation_promptTrue ) model_inputs tokenizer([text], return_tensorspt).to(model.device) generated_ids model.generate( **model_inputs, max_new_tokens512, do_sampleTrue, temperature0.7, top_p0.9 ) generated_ids [ output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids) ] response tokenizer.batch_decode(generated_ids, skip_special_tokensTrue)[0] return response3.2 编写有效的提示词Prompt模型表现好不好八成看提示词怎么写。对于生成测试用例大纲我们的提示词需要包含几个关键信息角色设定告诉模型它现在是“测试专家”。输入材料提供清晰、简洁的需求描述。输出格式明确要求它输出什么结构的内容。质量要求提出一些具体的指导原则。下面是一个针对“用户登录功能”的提示词示例user_prompt 请根据以下产品需求生成一份测试用例大纲。 【需求描述】 功能用户登录 1. 用户可以通过用户名和密码登录。 2. 登录成功跳转到首页。 3. 登录失败需提示具体原因用户名不存在、密码错误、账户已锁定。 4. 支持“记住我”功能勾选后7天内免登录。 5. 提供“忘记密码”入口。 【输出要求】 请以Markdown格式输出包含以下部分 - 测试功能模块 - 正常流测试点 - 异常流测试点 - 安全性测试点 - 用户体验测试点 请确保测试点覆盖全面逻辑清晰。 3.3 实际生成效果与优化把上面的提示词喂给模型它会生成类似下面这样的内容经过简化和整理## 用户登录功能测试用例大纲 ### 1. 测试功能模块 - 用户名密码登录 - “记住我”功能 - “忘记密码”入口 - 登录状态跳转 ### 2. 正常流测试点 - 输入正确的用户名和密码点击登录成功跳转至首页。 - 勾选“记住我”后登录关闭浏览器重新打开应保持登录状态。 - 点击“忘记密码”应跳转至密码重置页面。 ### 3. 异常流测试点 - 输入错误的用户名提示“用户名不存在”。 - 输入正确的用户名但错误的密码提示“密码错误”。 - 连续输入错误密码超过5次账户被锁定提示“账户已锁定请联系管理员”。 - 用户名或密码为空点击登录应有非空校验提示。 - 输入包含SQL注入或XSS脚本的用户名/密码应被过滤或拦截并给出安全提示。 ### 4. 安全性测试点 - 登录请求是否使用HTTPS。 - 密码在传输和存储过程中是否加密。 - 会话Token是否有合理的过期时间。 - 是否对暴力破解登录有防护如验证码、频率限制。 ### 5. 用户体验测试点 - 登录页面布局是否清晰输入框和按钮位置是否合理。 - 错误提示信息是否友好、明确。 - 登录过程中的加载状态是否有反馈如加载动画。 - 在移动端和PC端的显示是否正常。怎么样虽然还达不到资深测试工程师直接输出的详细用例水平但这个大纲已经非常像样了。它覆盖了主要的功能点、正常和异常场景甚至考虑到了安全性和用户体验。测试工程师拿到这个大纲只需要在每个测试点下补充具体的测试步骤、测试数据和预期结果一份完整的测试用例就基本成型了效率提升非常明显。优化小技巧提供模板如果你公司有固定的测试用例模板比如Excel表头可以在提示词里直接给出让模型按模板填充内容。迭代细化可以先让模型生成一个高级别的大纲然后针对某个复杂模块如“忘记密码”的完整流程再让模型生成更详细的子大纲。结合代码变更除了需求文档还可以把本次代码改动的git diff结果也作为输入的一部分让模型特别关注被修改代码相关的测试点。4. 实战二智能分析测试执行报告测试执行完了生成了一大堆日志。人工从头看到尾不仅耗时还容易遗漏关键信息。第二个场景就是让模型充当我们的“报告分析助手”从冗长的日志中提炼出核心结论。4.1 处理与分析日志数据测试日志通常比较杂乱包含时间戳、级别、线程信息、断言详情等。直接扔给模型效果可能不好。我们需要先做一点简单的预处理。import re def preprocess_test_logs(log_text): 预处理测试日志提取关键信息。 这里只是一个简单示例实际中可能需要更复杂的解析。 # 提取错误和失败信息 error_pattern r(ERROR|FAILED|AssertionError).* errors re.findall(error_pattern, log_text, re.MULTILINE) # 提取测试用例执行结果摘要行 (例如”test_login_success ... OK“ 或 ”... FAIL“) summary_pattern r(test_.*?)(\.\.\.|passed|failed|ERROR) summaries re.findall(summary_pattern, log_text) # 提取总耗时、通过率等信息 total_time_pattern rTotal time: ([\d\.])s total_time_match re.search(total_time_pattern, log_text) processed_info { extracted_errors: errors[:10], # 取前10个错误避免太长 test_summaries: [s[0] for s in summaries[:20]], # 取部分用例名 total_time: total_time_match.group(1) if total_time_match else N/A, original_log_length: len(log_text) } return processed_info def analyze_test_report(processed_log_info): 分析预处理后的日志信息 prompt f 你是一个测试报告分析专家。请根据以下从自动化测试日志中提取的信息生成一份简洁的测试执行分析报告。 【提取的日志信息】 1. 发现的错误/失败条目样例: {processed_log_info[extracted_errors]} 2. 部分执行的测试用例名称: {processed_log_info[test_summaries]} 3. 总执行时间: {processed_log_info[total_time]} 秒 4. 原始日志长度: {processed_log_info[original_log_length]} 字符 【报告要求】 请用三段话总结 第一段整体执行情况概述是否成功主要问题领域。 第二段列举最需要关注的2-3个具体问题根据错误信息推断。 第三段给出下一步行动建议例如优先修复哪个问题哪些模块需要回归测试。 报告要求语言精炼直指核心。 return generate_test_outline(prompt) # 复用之前的生成函数4.2 从日志到洞察模型能看出什么我们模拟一段简化的测试日志让模型分析一下# 模拟一段测试日志 sample_log ... [其他启动信息] ... test_login_with_correct_credentials ... OK test_login_with_wrong_password ... FAILED (AssertionError: Expected error message 密码错误 but got 登录失败) test_login_account_locked ... ERROR (TimeoutException: Element not found) test_remember_me_function ... OK test_forgot_password_flow ... OK ... [中间省略上百行] ... Total tests run: 150, Failures: 3, Errors: 2, Skipped: 1 Total time: 45.6s processed preprocess_test_logs(sample_log) analysis_report analyze_test_report(processed) print(analysis_report)模型可能会生成如下分析本次自动化测试执行整体未完全通过在150个用例中出现了3个失败和2个错误需要重点关注登录相关功能模块。 最突出的问题集中在用户登录的异常处理上一是test_login_with_wrong_password用例失败提示错误信息与实际显示不符这可能涉及前端提示文案或后端错误码映射的问题二是test_login_account_locked用例报错提示元素未找到的超时异常这可能意味着账户锁定后的页面跳转或UI元素发生了变化导致自动化脚本无法定位。 建议下一步优先排查并修复test_login_with_wrong_password用例相关的错误信息逻辑因为这是用户直接可见的体验问题。修复后需要对整个登录模块特别是密码错误、账户锁定等异常流程进行回归测试。同时检查test_login_account_locked用例的脚本定位逻辑是否与最新页面同步。看模型没有简单地罗列“哪几个用例失败了”而是尝试理解失败背后的可能原因错误信息不符、UI元素变化并给出了优先级建议。这相当于一个初级测试分析师做的工作能帮助测试负责人快速抓住重点决定下一步的排查方向。5. 整合到工作流让AI成为测试伙伴单独使用这两个功能已经能提升效率但如果能把它们嵌入到现有的开发测试流程中价值会更大。这里分享两个简单的整合思路。思路一集成到CI/CD流水线在代码合并请求Pull Request触发构建时可以自动运行一个脚本获取本次PR相关的需求描述或代码变更摘要。调用模型生成针对本次变更的“增量测试建议”或重点测试范围。将建议以评论的形式自动附到PR中提醒开发者和测试者关注。 这样测试左移就落到了实处在代码入库前就明确了测试重点。思路二构建测试知识库与复盘工具每次测试任务结束后可以将最终确定的测试用例、执行日志以及人工分析结论作为训练数据或提示词素材保存下来。久而久之就能形成一个针对你们公司特定业务和技术的“测试模式库”。下次遇到类似的功能比如另一个系统的登录功能模型生成的用例大纲或报告分析就会更贴切、更精准。6. 总结试用Qwen3-0.6B-FP8来做测试辅助的这段时间我感觉它像是一个不知疲倦的初级测试助手。在“生成测试用例大纲”和“分析测试报告”这两个重复性高、但又需要一定逻辑梳理能力的任务上它能有效地帮我们完成初稿和初筛把我们从繁琐的文书工作中解放出来。当然它不能完全替代测试工程师。生成的用例大纲需要我们去审查、细化和补充它分析出的问题根因也只是推测最终定位和验证还得靠我们自己。它的价值在于“辅助”和“提效”而不是“替代”。对于那些逻辑极其复杂、业务规则微妙的测试场景人的经验和判断依然是不可替代的。如果你也在为测试用例设计和报告分析耗时过多而烦恼不妨试试这个思路。从一个小的、具体的功能点开始尝试比如先让它为“用户注册”功能生成一份测试大纲看看效果。成本不高部署简单说不定就能为你打开一扇效率提升的新门。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章