百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

提效利器:DeepSeek 辅助测试用例生成(含源码分享)

liuian 2025-02-08 11:50 40 浏览

基于 DeepSeek 通过功能需求进行测试设计,预计可以降低约 60% 的用例设计成本。大致步骤,如下:

  1. 功能需求提取
  2. 用例生成提示词设计 ->最关键
  3. DeepSeek模型调用
  4. 测试用例持久化存储

步骤 1 :功能需求提取

在实际应用场景中,可以通过以下方式获取需求:

  • 通过API调用需求管理平台获取需求。
  • 读取在线或离线的需求文档(Markdown/Word/Excel)
  • 或者人工录入功能需求。

本文中通过读取 MarkDown 文档获取需求,示例如下:

Python 示例代码如下:

def get_functional_requirements(functional_requirements_file : str) -> str:
    """

    :param functional_requirements_file:
    :return:
    """
    # 获取当前脚本所在目录
    project_path = pathlib.Path(__file__).parent.parent.parent
    static_path = project_path.joinpath('static').absolute()
    
    # 构建Markdown文件的完整路径
    markdown_file_path = os.path.join(static_path, functional_requirements_file)
    
    # 读取Markdown文件内容
    with open(markdown_file_path, 'r', encoding='utf-8') as file:
        functional_requirements = file.read()

    return functional_requirements

步骤 2:用例生成提示词设计

提示词的设计质量直接影响大模型的生成效果,现将一套已应用于生产的用例生成提示词分享给大家,可直接参考使用。

standardized_json_structure = [
  {
    'title': '正常录入人员信息', 
    'preconditions':  [
      {'description': '输入一个具体的项目名称、跟投类型和被投主体'}
    ], 
    'steps': [
      {'description': '输入有效的姓名、年龄和出生年月', 'exception': ''}, 
      {'description': '点击保存', 'exception': '信息保存成功'}
    ], 
    'priority': 1, 
    'tags': ['基线', '等价类划分法']
  }
]

prompts = f"""
功能需求说明如下:

    {functional_requirements}
    ---
    作为一个资深软件测试专家,请按照以下格式对上述功能需求从正向、负向场景进行测试分析与设计,需要用到常用的等价类划分法、边界值分析法、判定表法、正交法等测试设计方法,需要返回一个可直接解析的数组,该数组中每一个元素代表一条用例,元素类型为JSON,每条用例报告以下要素:

    每条用例包含用例标题 title,字符串类型。

    每条用例包含测试前置步骤 preconditions,数组类型,数组每个元素为一个前置步骤描述,数据类型为字典,字典中包含一个key,名为description,为前置步骤描述,字符串类型。

    每条用例包含测试步骤 steps,数组类型。数组每个元素报告一个测试步骤描述及期望结果,为字典类型,测试步骤描述的key名为description ,期望结果的key名为exception,并不是所有步骤都需要有对应期望结果,若没有则值为空字符串传。

    每条用例包含优先级 priority,由高到低,分别为 1、2、3

    每条用例包含标签 tags,数组类型。对于回归测试时必须要执行的正向设计用例,打上“基线”标签,同时打上一个此用例是使用哪种或哪几种测试用例设计方法设计出来的方法名

    数据结构示例如下: {standardized_json_structure}
    
"""

步骤 3:DeepSeek 模型调用

  1. 安装 DeepSeek Python库
pip install langchain-deepseek-official 
  1. DeepSeek 官网获取 API Token 。

代码示例:

def deepseek_generate_case(functional_requirements : str) -> str:
    """

    :param functional_requirements:
    :return:
    """

    standardized_json_structure = [{'title': '正常录入人员信息', 'preconditions': [{'description': '输入一个具体的项目名称、跟投类型和被投主体'}], 'steps': [{'description': '输入有效的姓名、年龄和出生年月', 'exception': ''}, {'description': '点击保存', 'exception': '信息保存成功'}], 'priority': 1, 'tags': ['基线', '等价类划分法']}]

    prompts = f"""
    功能需求说明如下:

        {functional_requirements}
        ---
        作为一个资深软件测试专家,请按照以下格式对上述功能需求从正向、负向场景进行测试分析与设计,需要用到常用的等价类划分法、边界值分析法、判定表法、正交法等测试设计方法,需要返回一个可直接解析的数组,该数组中每一个元素代表一条用例,元素类型为JSON,每条用例报告以下要素:

        每条用例包含用例标题 title,字符串类型。

        每条用例包含测试前置步骤 preconditions,数组类型,数组每个元素为一个前置步骤描述,数据类型为字典,字典中包含一个key,名为description,为前置步骤描述,字符串类型。

        每条用例包含测试步骤 steps,数组类型。数组每个元素报告一个测试步骤描述及期望结果,为字典类型,测试步骤描述的key名为description ,期望结果的key名为exception,并不是所有步骤都需要有对应期望结果,若没有则值为空字符串传。

        每条用例包含优先级 priority,由高到低,分别为 1、2、3

        每条用例包含标签 tags,数组类型。对于回归测试时必须要执行的正向设计用例,打上“基线”标签,同时打上一个此用例是使用哪种或哪几种测试用例设计方法设计出来的方法名

        数据结构示例如下: {standardized_json_structure}
        
    """
    from langchain_deepseek import ChatDeepSeek

    llm = ChatDeepSeek(
        model="deepseek-chat",
        api_key="sk-f5109c1b919f47b2bcXX",
        temperature=0,
        max_tokens=None,
        timeout=None,
        max_retries=2,
        # 其他参数...
    )
    ai_msg = llm.invoke(prompts)

    return ai_msg.content

我只能说 DeepSeek非常的强大,效果远高于其他国内大模型,而且token是真·白菜价。生成的测试用例如下:

[
    {
        "title": "正常录入人员基础信息",
        "preconditions": [
            {"description": "打开人员信息录入页面"}
        ],
        "steps": [
            {"description": "输入有效的姓名(2-20个汉字或字母)", "exception": ""},
            {"description": "选择性别为'男'", "exception": ""},
            {"description": "输入有效的身份证号(18位格式)", "exception": "年龄自动计算并显示"},
            {"description": "选择籍贯(省-市-县三级联动)", "exception": ""},
            {"description": "选择政治面貌为'中共党员'", "exception": ""},
            {"description": "点击提交", "exception": "显示绿色成功提示,生成人员ID"}
        ],
        "priority": 1,
        "tags": ["基线", "等价类划分法"]
    },
    {
        "title": "姓名输入边界值测试",
        "preconditions": [
            {"description": "打开人员信息录入页面"}
        ],
        "steps": [
            {"description": "输入1个汉字的姓名", "exception": "提示姓名长度不符合要求"},
            {"description": "输入21个字母的姓名", "exception": "提示姓名长度不符合要求"},
            {"description": "输入2个汉字的姓名", "exception": "姓名输入成功"},
            {"description": "输入20个字母的姓名", "exception": "姓名输入成功"}
        ],
        "priority": 2,
        "tags": ["边界值分析法"]
    },
    {
        "title": "性别选择其他并输入具体名称",
        "preconditions": [
            {"description": "打开人员信息录入页面"}
        ],
        "steps": [
            {"description": "选择性别为'其他'", "exception": "显示文本输入框"},
            {"description": "在文本输入框中输入具体名称", "exception": ""},
            {"description": "点击提交", "exception": "显示绿色成功提示,生成人员ID"}
        ],
        "priority": 2,
        "tags": ["等价类划分法"]
    },
    {
        "title": "身份证号格式错误测试",
        "preconditions": [
            {"description": "打开人员信息录入页面"}
        ],
        "steps": [
            {"description": "输入17位数字的身份证号", "exception": "红色提示身份证号格式错误"},
            {"description": "输入19位数字的身份证号", "exception": "红色提示身份证号格式错误"},
            {"description": "输入包含字母的身份证号", "exception": "红色提示身份证号格式错误"}
        ],
        "priority": 2,
        "tags": ["边界值分析法"]
    },
    {
        "title": "工作履历模块正常录入",
        "preconditions": [
            {"description": "打开人员信息录入页面"}
        ],
        "steps": [
            {"description": "点击添加工作履历", "exception": "显示新的工作履历表单"},
            {"description": "输入有效的公司名称(50字内)", "exception": ""},
            {"description": "输入有效的职位(20字内)", "exception": ""},
            {"description": "选择有效的任职时间(起止日期)", "exception": ""},
            {"description": "输入工作内容(300字内)", "exception": ""},
            {"description": "上传PDF格式的工作证明(≤10MB)", "exception": ""},
            {"description": "点击提交", "exception": "显示绿色成功提示,生成人员ID"}
        ],
        "priority": 1,
        "tags": ["基线", "等价类划分法"]
    },
    {
        "title": "工作履历模块附件上传格式错误测试",
        "preconditions": [
            {"description": "打开人员信息录入页面"}
        ],
        "steps": [
            {"description": "点击添加工作履历", "exception": "显示新的工作履历表单"},
            {"description": "上传JPG格式的工作证明", "exception": "提示文件格式不支持"},
            {"description": "上传超过10MB的PDF文件", "exception": "提示文件大小超过限制"}
        ],
        "priority": 2,
        "tags": ["边界值分析法"]
    },
    {
        "title": "防重复提交机制测试",
        "preconditions": [
            {"description": "打开人员信息录入页面"}
        ],
        "steps": [
            {"description": "输入有效的姓名、性别、身份证号等信息", "exception": ""},
            {"description": "点击提交", "exception": "按钮置灰,3秒内无法再次点击"},
            {"description": "等待3秒后再次点击提交", "exception": "显示绿色成功提示,生成人员ID"}
        ],
        "priority": 2,
        "tags": ["判定表法"]
    },
    {
        "title": "政治面貌选择其他并输入具体名称",
        "preconditions": [
            {"description": "打开人员信息录入页面"}
        ],
        "steps": [
            {"description": "选择政治面貌为'其他'", "exception": "显示文本输入框"},
            {"description": "在文本输入框中输入具体名称", "exception": ""},
            {"description": "点击提交", "exception": "显示绿色成功提示,生成人员ID"}
        ],
        "priority": 2,
        "tags": ["等价类划分法"]
    },
    {
        "title": "籍贯模糊搜索测试",
        "preconditions": [
            {"description": "打开人员信息录入页面"}
        ],
        "steps": [
            {"description": "在籍贯选择器中输入模糊地名", "exception": "显示匹配的地名选项"},
            {"description": "选择匹配的地名", "exception": "籍贯选择成功"}
        ],
        "priority": 2,
        "tags": ["等价类划分法"]
    },
    {
        "title": "工作履历模板下载测试",
        "preconditions": [
            {"description": "打开人员信息录入页面"}
        ],
        "steps": [
            {"description": "点击下载履历模板", "exception": "成功下载标准化填写示例文件"}
        ],
        "priority": 3,
        "tags": ["等价类划分法"]
    }
]

步骤 4 :测试用例持久化存储

在实际应用场景中,可以通过以下方式持久化测试用例:

  • 通过API将生成的结构化用例,写入到测试平台中。
  • 写入到在线或离线的测试用例文档中。

这里直接将生成的测试用例回写到上面提到的MarkDown文档中。

Python 代码示例:

ef persistent_storage_case(cases):
    # 获取当前脚本所在目录
    project_path = pathlib.Path(__file__).parent.parent.parent
    static_path = project_path.joinpath('static').absolute()
    
    # 构建Markdown文件的完整路径
    markdown_file_path = os.path.join(static_path, "functional_requirements.md")

    # 读取Markdown文件内容
    with open(markdown_file_path, 'r', encoding='utf-8') as file:
        existing_content = file.read()

    # 将case内容追加到现有内容中
    updated_content = existing_content + "\n\n## 测试用例\n" + cases

    # 将修改后的内容写回Markdown文件
    with open(markdown_file_path, 'w', encoding='utf-8') as file:
        file.write(updated_content)

    return markdown_file_path

相关推荐

windows7旗舰版临时激活(win7暂时激活)

关于这个问题,目前,有几种方法可以激活Windows7旗舰版,以下是最简单的几种方法:1.使用激活工具:可以使用一些第三方激活工具,如KMSpico、MicrosoftToolkit等工具来激活...

免费查序列号入口(免费查序列号入口平板)

苹果查序列号入口可登陆苹果官网checkcoverage.apple.com进行查询,具体步骤如下:1、打开手机设置,点击“通用”;2、进入页面后点击“关于本机”;3、页面跳转后,我们就可以看到本机的...

磁盘被保护了如何取消保护(磁盘被保护了如何取消保护设置)

1、打开磁盘分区管理窗口中选择要去掉被写保护的磁盘。2、选中磁盘后单击鼠标右键可显示出选项列表下选择属性。3、打开磁盘属性对话框中选择点击硬件选项卡。4、然后在硬件页面中选中所有磁盘后再单击属性按钮。...

win7系统硬盘分区教程(win7如何对硬盘分区)

在Win7中,你可以使用磁盘管理工具来给硬盘分区。首先,打开控制面板,点击“系统和安全”,然后选择“管理工具”。在管理工具中,找到“计算机管理”,点击打开。在计算机管理窗口中,选择“磁盘管理”。在磁盘...

电脑不识别移动硬盘怎么办(笔记本电脑不识别移动硬盘怎么办)

电脑无法识别移动硬盘的原因有很多,以下是一些可能的原因和相应的解决方法:1.USB供电不足:移动硬盘功率较大,可能需要更多的电压。前置USB接口可能无法提供足够的电压。解决方法是将移动硬盘接到...

cf穿越火线烟雾头盔怎么调(cf的最新烟雾头盔怎么调)

cf新版烟雾保护头盔调置:?cf这款游戏中,更新后调整烟雾头的方法是打开NVIDIA控制面板,在NVIDIA控制面板中选择调整视频颜色设置,接着点击通过NVIDIA设置选项,然后将亮度调整到79%,对...

u盘怎样格式化最安全(u盘怎么格式化最干净)

只需将U盘插入到电脑之后,然后在我的电脑中找到U盘的盘符,使用鼠标右键点击打开菜单,其中就可以看到【格式化】的选项,根据需要选择然后点击【快速格式化】即可U盘格式是FAT32格式,那么其传输速度会明显...

移动路由器怎么改wifi密码(移动网络路由器怎么改密码wifi密码)
移动路由器怎么改wifi密码(移动网络路由器怎么改密码wifi密码)

1.打开手机设置,找到wifi点击进入,点击已连接的wifi。2.里面有一个路由器的选项,记住路由器后面一串数字。3.打开手机网页,在地址栏输入刚记住的那串数字,点击进入,选择继续访问网页版,输入管理员密码,点击确定。4.点击路由设置,点击...

2025-12-23 16:05 liuian

手机五笔输入法怎么使用(手机五笔怎么用新手教程)
手机五笔输入法怎么使用(手机五笔怎么用新手教程)

手机使用五笔输入法操作方法1、打开手机,点击应用商店,下载搜狗输入法,并安装。2、打开下载后的搜狗输入法,在打开页面勾选搜狗输入法,然后点击启用。3、在弹出页面,点击搜狗输入法。在编辑文字页面,点击如图所示按钮。4、在弹出页面,点击其他输入...

2025-12-23 15:55 liuian

天翼网关怎么设置wifi(天翼网关怎么设置wifi密码)

天翼网关设置wifi的方法步骤如下:首先打开浏览器,在地址栏中输入198.168.1.1,确定。输入用户名、密码,如果以前没改过,这个密码就在网关背面的标签上面,可以去查看一下,输入后点击“确定”。点...

十大软件免费下载安装(软件大全下载)

以下是十大永久免费电视直播软件APP:央视频(手机端)):官方看电视直播软件,画质清晰,需要借助手机投屏操作。央视投屏助手(盒子端):与央视频配合使用,提供高清电视直播。电视家:智能电视、电视盒子或智...

电脑死机咋办(电脑开机蓝屏怎么办)

可按照如下方式重启:1、直接按下“CTRL+ALT+DEL”键,然后选择重启;2、如方式1无效,可按住电源键数秒进行强制关机,然后再次启动即可;3、最后一个办法就是,拔出电池和电源适配器,然后重新安装...

追剧神器免费下载(苹果手机免费追剧软件)

是正规网站茶杯狐官方网站是一款正规的视频播放软件。茶杯狐官方网站拥有各种电影、电视剧、综艺、动漫等视频任由用户们在线自由观看。茶杯狐官方网站所有的视频画质也非常的超清流畅,很安全。茶杯狐软件是很好用的...

平板电脑一键root工具(平板电脑 root)

1、下载APP:ROOT大师;2、打开小米平板USB调试模式;3、安装驱动,提示连接成功4、获取ROOT权限。5、显示更新成功后依次选择:返回-重新启动-系统6、重启后打开桌面的super...

autocad2010激活码怎么获取(cad2010最新激活码密钥免费领取)
  • autocad2010激活码怎么获取(cad2010最新激活码密钥免费领取)
  • autocad2010激活码怎么获取(cad2010最新激活码密钥免费领取)
  • autocad2010激活码怎么获取(cad2010最新激活码密钥免费领取)
  • autocad2010激活码怎么获取(cad2010最新激活码密钥免费领取)