[AI+测试] 自动生成测试用例本地prompt微调方法(概述)

377 阅读5分钟

随着人工智能技术的快速发展,大语言模型(LLM)在软件测试领域展现出巨大潜力,博主结合自身人工智能专业知识和一定的测试理解探索AI+测试的应用落地。我们知道新入行的测试工程师常常需要花费大量时间编写测试用例,这是一项既重要又繁琐的工作。本文将介绍如何通过本地化部署和prompt微调,探索构建一个专门用于自动生成测试用例的前后端AI助手系统,提高测试效率的同时保证测试质量。

背景

在传统测试用例编写过程中,测试工程师需要:

  1. 理解业务需求和功能规格
  2. 设计测试场景和步骤
  3. 预测预期结果
  4. 编写格式化的测试用例文档

这一过程不仅耗时,还容易出现覆盖不全面的情况。而利用大语言模型,我们可以将这一过程半自动化,让AI协助我们生成高质量的测试用例。

系统架构概述

我们的系统采用了前后端分离的架构,后端使用Flask框架,前端使用简单的HTML+JavaScript实现。系统的核心是基于大语言模型的API调用和prompt工程。

技术栈

  • 后端:Python + Flask
  • 前端:HTML + JavaScript
  • LLM API:官方
  • 数据存储:目前使用JSON配置文件,后续设计数据库

核心组件

  1. Prompt管理系统
  2. LLM接口调用
  3. 测试用例格式化处理
  4. 用户交互界面

Prompt微调方法

在这个系统中,prompt微调是核心技术点。我们采用了分层prompt设计,将提示词分为以下几个部分:

1. 通用规则

这部分包含基础的指导原则,告诉模型它的角色和基本任务。例如,我们定义模型是一位资深的软件测试专家,专注于为移动端视频app生成高质量的测试用例,并规定了测试用例的基本格式要求。

2. 业务规则

这部分包含特定业务场景的知识和要求。例如,针对视频缓存功能的测试,我们会告诉模型需要关注不同用户权限的缓存限制、单P/多P视频的缓存流程、缓存进度显示和管理、存储位置设置和切换等方面。

3. 自定义规则

允许用户在每次请求时添加特定的要求,比如"请确保测试用例覆盖弱网环境下的缓存功能表现"等。

4. 内容回答规则

这部分规定了模型回答的格式和行为准则,确保生成的测试用例符合预期格式,并在引用之前生成的测试用例时保持准确性。

Prompt组合逻辑

系统采用了精心设计的prompt组合逻辑,确保各部分提示词按照正确的顺序组合:

  1. 首先是通用规则,奠定基础
  2. 然后是业务规则,提供领域知识
  3. 接着是自定义规则,满足特定需求
  4. 最后是内容回答规则,规范输出格式

这种组合方式确保了模型能够理解任务要求,掌握业务知识,满足特定需求,并以规范的格式输出结果。

实际应用中的挑战与解决方案

在实际应用中,我们遇到了一些挑战,主要包括:

1. 格式一致性问题

挑战:模型有时会返回不一致的格式,例如部分内容是HTML表格,部分内容是纯文本表格。

解决方案

  • 在提示词中明确强调格式要求
  • 在后端添加格式验证和处理机制,确保输出格式的一致性

2. 测试用例引用准确性

挑战:当要求模型深入分析之前生成的测试用例时,模型可能会自行创建新的测试用例ID或修改测试目的。

解决方案

  • 在提示词中明确要求模型严格引用原始测试用例
  • 实现验证机制,检查模型引用的准确性,必要时进行修正

3. 测试场景覆盖全面性

挑战:确保生成的测试用例覆盖所有可能的测试场景。

解决方案

  • 在业务规则中明确列出需要覆盖的测试维度(功能、性能、兼容性、异常等)
  • 通过自定义规则补充特定场景的覆盖要求

实际效果展示

使用此系统时,只需简单描述测试需求,就能生成全面的测试用例。例如,输入"根据业务内容生成测试用例",系统会返回格式化的HTML表格,包含功能测试、兼容性测试、性能测试和异常测试等多个维度的测试用例。

以下是系统生成的部分测试用例示例:

用例ID测试目的前置条件测试步骤预期结果测试类型
功能001验证未登录用户缓存功能限制1.用户未登录 2.进入视频播放页1.点击右上角三点菜单 2.选择缓存选项1.显示登录提示弹窗 2.无法进行缓存操作功能
功能002验证登录用户缓存权限1.账号已登录 2.进入视频播放页1.点击缓存按钮 2.选择清晰度1.可正常选择清晰度选项 2.开始缓存视频功能

结论与展望

通过api调用+本地prompt微调的方式,成功构建了一个专门用于生成测试用例的AI助手系统。

  1. 高效率:大幅减少测试用例编写时间
  2. 全面性:自动覆盖多种测试场景和边界条件
  3. 一致性:生成格式统一的测试用例
  4. 可定制:通过prompt微调适应不同业务场景

当然这都是博主在入职前的一些探索,在下一篇文章中,将深入探讨如何进一步优化prompt结构,实现更复杂的测试场景覆盖,以及如何将这个系统与现有测试管理工具集成。