前两篇文章分别总结了测试优先级和常用的测试方法,本篇进行实操。写测试用例过于繁琐,因此尝试构造prompt,让大模型帮我写测试用例。结果用例覆盖范围不一定全面,仅供参考,欢迎各位测试工程师提出宝贵意见与反馈。

Prompt

        尝试总结了一套可直接照搬的promp。

业务场景描述模板

        这一步很重要,一定要详细!

业务场景描述

        核心是明确功能的基础信息,要点:

  1. 功能名称:明确功能核心用途;
  2. 使用人员:界定功能的使用对象;
  3. 功能入口:明确从系统首页到目标功能的跳转路径,可直接操作定位。

页面 / 模块 / 元素组成

  1. 结构规则:复杂页面按功能区域拆模块,简单页面直接罗列元素;元素类型统一(文本、输入框、下拉框、复选框、按钮),不混乱;
  2. 页面:独立界面,用统一格式标记(如 [页面 1:XXX 页面]);
  3. 模块:复杂页面的功能分区(如筛选区、报表展示区),仅复杂页面拆分,不嵌套冗余;
  4. 元素:页面 / 模块内的具体控件,按类型分类罗列,明确每个区域的可操作 / 可查看内容。

操作流程

        核心是描述通用正确的操作步骤,不区分权限、不混入异常场景,要点:

  1. 通用性:仅记录正常操作的标准步骤,适用于所有合法权限用户;
  2. 连贯性:按用户实际操作顺序编写(如登录→进入页面→筛选→提交→查看结果);
  3. 简洁性:明确关键操作(如点击某按钮)、系统执行逻辑、最终呈现结果,不添加多余说明。

核心规则/约束

  • 权限规则:哪些角色可查看 / 编辑 / 删除 / 保存。

  • 控件显隐规则:根据条件显示 / 隐藏 / 置灰。

  • 级联 & 必选规则:级联关系、必选字段、不可漏选、不可跳选。

  • 下拉框选项规则:可选值、默认值、联动规则。

  • 按钮操作规则:每个按钮的功能、作用范围和条件。

  • 输入框格式规则:类型、长度、小数位数、是否允许为空。

  • 数值区间强规则:

    • 起始值必须小于结束值
    • 起始值、结束值不能为负数
    • 区间不能重叠
    • 区间不能交叉
    • 区间不能为空
    • 结束值必须大于起始值
  • 业务唯一性规则:同一维度下不可重复添加相同项。

  • 异常 & 拦截规则:格式错误、逻辑错误、重复提交的提示。

模板

请先仔细阅读用户提供的[业务场景描述],整理需求:

[业务场景描述]
功能名称:
使用人员:
功能入口:

[页面/模块/元素组成]
结构规则:
1. 页面使用 [] 标记
2. 复杂页面分模块,模块不使用 []
3. 简单页面不分模块,直接写元素
4. 元素统一分类:文本、输入框、下拉框、按钮、复选框

[页面1:XXX页面(复杂页面)]
1. 模块1:XXX模块
   - 文本:
   - 输入框:
   - 按钮:
2. 模块2:XXX模块
   - 文本:
   - 按钮:

[页面2:XXX页面(简单页面)]
- 文本:
- 按钮:

[操作流程]
1.
2.
3.

[核心规则/约束]
1.权限规则:
 - 
2.控件显隐规则:
 - 
3.级联/必选规则:
 - 
4.下拉框选项规则:
 - 
5.按钮操作规则:
 - 
6.输入框格式规则:
 - 
7.数值区间强规则:
 - 起始值必须小于结束值
 - 起始值、结束值不能为负数
 - 区间不能重叠
 - 区间不能交叉
 - 区间不能为空
 - 结束值必须大于起始值
8.业务唯一性规则:
 - 
9.异常 & 拦截规则:
 - 

测试分析模板

        可直接复制给大模型。

你是一名专业的软件测试工程师,具备丰富的功能测试经验,擅长按照业务优先级、结合等价类、边界值、判定表、正交实验法、场景法设计全面、可执行、无遗漏的测试用例,严格遵循测试规范,聚焦用例的可操作性和可验证性,不添加任何多余理论描述。

请基于我上一条发送的[业务场景描述],严格按照以下要求完成测试用例设计:

[业务场景分析要求]
1. 优先梳理:核心业务逻辑
   - 梳理完整主流程
   - 梳理核心规则
   - 使用场景法设计正常流程与异常流程测试点

2. 再重点测试:数据交互与处理
   按模块拆分,包含:
   - 输入/选择类控件(下拉框、复选框、输入框等)→ 等价类、边界值
   - 多条件组合筛选/查询 → 正交实验法
   - 级联、联动、开关、展示控制 → 场景法
   - 计算公式、逻辑判断、数据正确性 → 判定表、边界值
   - 数据准确性、权限、过滤规则校验

3. 最后测试:界面操作与UI展示
   - 页面布局、样式、交互体验
   - 按钮、文案、提示、加载、空数据状态
   - 易用性、规范性检查

注意:以上业务场景分析要求仅代表测试设计的优先级,不代表测试用例的最终编写顺序。

[测试用例设计核心要求]
1. 用例需严格遵循「测试八要素」编写,每个要素完整、无歧义、可验证,具体规范:
   - 用例编号:规则统一,不重复、不遗漏,格式为:1,2,3(整数递增)
   - 模块:精准对应业务场景中[页面/模块/元素组成]的内容,不新增、不混淆
   - 测试标题:严格遵循三段式格式,统一用 "-" 分隔,模板:被测元素 - 输入条件/特殊说明 - 预期结果;要求简洁、明确、不冗余,去掉“验证、检查、测试”等无关词汇(示例:查询按钮 - 分公司未选择 - 弹出必填提示;单值分数 - 输入负数 - 前端拦截并提示;级联联动 - 切换分公司 - 部门数据正确刷新)
   - 优先级:按业务重要性划分(P0-核心必测,P1-重要,P2-一般,P3-次要)
   - 前置条件:明确执行用例前必须满足的所有条件(含用户状态、页面状态、数据状态)
   - 测试输入:明确操作过程中需要输入、选择、勾选的具体内容(精准无模糊)
   - 操作步骤:步骤清晰、可复现,每一步仅包含一个操作,按实际用户操作顺序编写
   - 预期结果:具体、可验证,与测试标题对应,明确系统应呈现的具体效果(不笼统)

2. 模块命名规则
   - 复杂页面:模块名称 = 页面名称 - 模块名称(示例:个人同行转账页面 - 顶部导航区)
   - 简单页面:模块名称 = 页面名称(不拆分模块)(示例:验证页、转账结果页面)
   - 不使用任何编号(如页面1、模块1),保持名称干净、可阅读。

3. 用例覆盖范围要求:覆盖正常流程、异常流程、边界、控件校验、UI展示

4. 输出格式要求:
   - 用例按「测试八要素」规范编写,按模块分类,同一模块内按优先级从高到低排序
   - 最终按Excel表格规范排版,表头固定为:用例编号、模块、测试标题、优先级、前置条件、测试输入、操作步骤、预期结果,每行对应一条测试用例
   - 不添加任何多余描述、不讲解测试理论、不补充场景说明,仅输出可直接复制到Excel的测试用例


[测试设计强制规则]
1. 异常输入必须拆分为独立用例:
   - 非数字、负数、超过长度限制、为空、前后空格 → 每个都是单独用例
2.  级联联动测试(核心重点,严格遵循标准方法):
    - 正向联动:每一组 “上级控件→下级控件” 独立生成 1 条用例(例:切换分公司→部门列表正确刷新、切换分公司→团队列表正确刷新、切换部门→团队列表正确刷新,各为 1 条);仅测试前端允许的正常切换场景,确保下级数据与上级匹配
    - 跳级选择(非法顺序):不按级联流程选择,每一种跳级场景独立生成1条用例(例:未选分公司直接选部门、未选部门直接选团队,各为1条),跳级的场景结果应该是无法选择(没有选项或提示“请选择上级”)
3. 一个测试点只对应一个测试用例,不允许多场景合并
4. 用例必须按[业务场景中定义的页面顺序]分组,页面内按[模块顺序]排列用例。
5. 每个模块内部,按优先级 P0 → P1 → P2 → P3 顺序排列。
6. 不允许跨模块打乱顺序,不允许全局只按优先级排序,必须遵循[先模块、后优先级]。

银行转账示例

界面原型

  • 功能入口:手机银行首页 → 转账汇款 → 个人同行转账
  • 核心页面结构
    • 转出账户选择(默认本人储蓄卡,显示余额)
    • 收款人模块(姓名、卡号输入 / 常用收款人选择)
    • 转账金额输入框(数字键盘,有小数点限制)
    • 转账备注(选填)
    • 下一步按钮 → 确认页(展示所有信息 + 手续费)
    • 短信验证码 / 指纹验证 → 结果页(成功 / 失败提示,流水号)
  • 约束规则:余额≥转账金额;卡号格式校验;大额(≥5 万)需额外人脸验证;同行实时到账
==================== 手机银行 · 个人同行转账 ====================

[返回]                   转账汇款                   [帮助]

---------------------------------------------------------------
■ 转出账户(默认选中):
   储蓄卡 ****6228
   可用余额:¥ 10000.00
   [切换账户]

---------------------------------------------------------------
■ 收款人信息
   收款人姓名:[_______________]
   收款卡号:  [_________________________]
   常用收款人:∇ 请选择
---------------------------------------------------------------

■ 转账信息
   转账金额:  [___________]  元
   备注信息:  [_______________] (选填)

---------------------------------------------------------------
                [ 下一步 ]
---------------------------------------------------------------

==================== 确认转账页面 ====================
  转出账户:****6228
  收款人:张三
  收款卡号:6228 1234 5678 9012
  转账金额:¥ 1000.00
  手续费:¥ 0.00
  到账方式:实时到账

  [ 确认转账 ]                  [ 取消 ]
---------------------------------------------------------------

==================== 验证页面 ====================
请输入短信验证码
[____]  [ 获取验证码 ]
温馨提示:金额≥5万元需进行人脸核验

[ 确认 ]
---------------------------------------------------------------

==================== 转账结果页面 ====================
✅ 转账成功
交易流水号:20250101120012345678
转账金额:¥ 1000.00
收款方:张三 ****9012

[ 完成 ]  [ 查看详情 ]  [ 再次转账 ]
===============================================================

业务场景描述

请先仔细阅读用户提供的[业务场景描述],整理需求:
[业务场景]
功能名称:个人同行转账
使用人员:手机银行已登录、已实名的个人用户
功能入口:手机银行APP → 首页 → 转账汇款 → 个人同行转账

[页面/模块/元素组成]
结构规则:
1. 页面使用 [] 标记
2. 复杂页面分模块,模块不使用 []
3. 简单页面不分模块,直接写元素
4. 元素统一分类:文本、输入框、下拉框、按钮、复选框

[页面1:个人同行转账页面]
1. 模块1:顶部导航区
   - 按钮:返回、帮助
   - 文本:转账汇款
2. 模块2:转出账户区
   - 文本:储蓄卡号、可用余额(默认选中本人储蓄卡)
   - 按钮:切换账户
3. 模块3:收款人信息区
   - 输入框:收款人姓名、收款卡号
   - 下拉框:常用收款人
4. 模块4:转账信息区
   - 输入框:转账金额、备注(选填)
5. 模块5:操作区
   - 按钮:下一步

[页面2:确认转账页面]
1. 模块1:信息展示区
   - 文本:转出账户、收款人、收款卡号、转账金额、手续费、到账方式
2. 模块2:操作区
 - 按钮:确认转账、取消

[页面3:验证页]
   - 文本:请输入短信验证码、温馨提示
   - 输入框:短信验证码
   - 按钮:获取验证码、确认

[页面4:转账结果页面]
   - 文本:成功/失败状态、交易流水号、转账金额、收款方
   - 按钮:完成、查看详情、再次转账

[操作流程]
用户操作步骤:
1. 登录手机银行,进入[个人同行转账页面]
2. 确认或切换[转出账户]
3. 填写[收款人姓名]、[收款卡号],或选择[常用收款人]
4. 填写[转账金额]、选填[备注]信息
5. 点击[下一步]按钮
6. 系统执行逻辑:校验卡号格式、余额是否充足、姓名与卡号一致性,跳转到[确认转账页面]
7. 用户确认信息后点击[确认转账],跳转[验证页面]并完成短信验证码验证
8. 跳转[转账结果页面],显示系统完成扣款转账,展示转账成功/失败页面及交易流水号

[核心规则/约束]
1. 转账金额必须大于0,且不能超过转出账户可用余额
2. 收款卡号为19位数字,系统自动校验格式,姓名与卡号需匹配
3. 转账金额≥5万元时,除短信验证外还需进行人脸核验
4. 同行转账实时到账,无手续费

Convert text to excel

        用deepseek测试发现不能直接生成excel文件。可以运行如下代码,复制大模型结果并粘贴到工具中(不通用于各种大模型生成的测试结果)。

import pandas as pd
import tkinter as tk
from tkinter import ttk, messagebox

def txt_to_excel(txt_content, output_file="测试用例.xlsx"):
    """
    将指定格式的测试用例文本转换为Excel文件
    :param txt_content: 测试用例文本内容(字符串)
    :param output_file: 输出Excel文件名,默认保存到当前目录
    """
    # 定义Excel表头(与用例字段对应)
    headers = ["用例编号", "模块", "测试标题", "优先级", "前置条件", "测试输入", "操作步骤", "预期结果"]
    # 存储有效用例数据
    case_data = []
    
    # 按行分割文本,逐行处理
    lines = txt_content.strip().split("\n")
    for line in lines:
        line = line.strip()
        if (not line) or ":---" in line or "**" in line:
            continue

        if "[页面" in line or "模块" in line or "按钮:" in line or "文本:" in line or "输入框:" in line:
            continue
        
        # 按|分割单元格,去除首尾空格和多余空字符
        cells = [cell.strip() for cell in line.split("|") if cell.strip()]
        # 只保留8列数据的有效用例行(匹配8个字段)
        if len(cells) == 8:
            case_data.append(cells)
    
    # 将数据转换为DataFrame并保存为Excel
    df = pd.DataFrame(case_data, columns=headers)
    # 保存Excel,忽略索引列
    df.to_excel(output_file, index=False)
    print(f"✅ 测试用例已成功导出至:{output_file}")


def on_convert_click():
    """点击转换按钮的回调函数"""
    txt_content = txt_input.get("1.0", tk.END)  # 获取文本框内容
    excel_name = entry_filename.get().strip()   # 获取Excel文件名
    if not excel_name.endswith('.xlsx'):
        excel_name = excel_name + '.xlsx'
    
    if not excel_name:
        messagebox.showwarning("警告", "请输入Excel文件名!")
        return
    if not txt_content.strip():
        messagebox.showwarning("警告", "请粘贴测试用例TXT内容!")
        return
    
    try:
        txt_to_excel(txt_content, excel_name)
        messagebox.showinfo("成功", f"Excel文件已生成:{excel_name if excel_name.endswith('.xlsx') else excel_name+'.xlsx'}")
        # 清空输入框(可选)
        txt_input.delete("1.0", tk.END)
        entry_filename.delete(0, tk.END)
    except Exception as e:
        messagebox.showerror("错误", f"转换失败:{str(e)}")

# 创建UI界面
root = tk.Tk()
root.title("测试用例TXT转Excel工具")
root.geometry("800x600")  # 窗口大小

# 1. 文件名输入区域
frame_filename = ttk.Frame(root, padding="10")
frame_filename.pack(fill=tk.X)

label_filename = ttk.Label(frame_filename, text="Excel文件名:")
label_filename.pack(side=tk.LEFT, padx=5)

entry_filename = ttk.Entry(frame_filename, font=("微软雅黑", 10))
entry_filename.pack(side=tk.LEFT, fill=tk.X, expand=True, padx=5)
entry_filename.insert(0, "文件名")  # 默认文件名

# 2. 文本输入区域
frame_txt = ttk.Frame(root, padding="10")
frame_txt.pack(fill=tk.BOTH, expand=True)

label_txt = ttk.Label(frame_txt, text="粘贴测试用例TXT内容:")
label_txt.pack(anchor=tk.W)

# 滚动文本框
scrollbar = ttk.Scrollbar(frame_txt)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

txt_input = tk.Text(frame_txt, font=("微软雅黑", 10), yscrollcommand=scrollbar.set)
txt_input.pack(fill=tk.BOTH, expand=True)
scrollbar.config(command=txt_input.yview)

# 3. 转换按钮
frame_btn = ttk.Frame(root, padding="10")
frame_btn.pack(fill=tk.X)

btn_convert = ttk.Button(frame_btn, text="转换为Excel", command=on_convert_click)
btn_convert.pack(anchor=tk.CENTER, pady=5) 

# 运行主循环
root.mainloop()

更多推荐