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

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

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

基于 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

相关推荐

驱动网卡(怎么从新驱动网卡)
驱动网卡(怎么从新驱动网卡)

网卡一般是指为电脑主机提供有线无线网络功能的适配器。而网卡驱动指的就是电脑连接识别这些网卡型号的桥梁。网卡只有打上了网卡驱动才能正常使用。并不是说所有的网卡一插到电脑上面就能进行数据传输了,他都需要里面芯片组的驱动文件才能支持他进行数据传输...

2026-01-30 00:37 liuian

win10更新助手装系统(微软win10更新助手)

1、点击首页“系统升级”的按钮,给出弹框,告诉用户需要上传IMEI码才能使用升级服务。同时给出同意和取消按钮。华为手机助手2、点击同意,则进入到“系统升级”功能华为手机助手华为手机助手3、在检测界面,...

windows11专业版密钥最新(windows11专业版激活码永久)

 Windows11专业版的正版密钥,我们是对windows的激活所必备的工具。该密钥我们可以通过微软商城或者通过计算机的硬件供应商去购买获得。获得了windows11专业版的正版密钥后,我...

手机删过的软件恢复(手机删除过的软件怎么恢复)
手机删过的软件恢复(手机删除过的软件怎么恢复)

操作步骤:1、首先,我们需要先打开手机。然后在许多图标中找到带有[文件管理]文本的图标,然后单击“文件管理”进入页面。2、进入页面后,我们将在顶部看到一行文本:手机,最新信息,文档,视频,图片,音乐,收藏,最后是我们正在寻找的[更多],单击...

2026-01-29 23:55 liuian

一键ghost手动备份系统步骤(一键ghost 备份)

  步骤1、首先把装有一键GHOST装系统的U盘插在电脑上,然后打开电脑马上按F2或DEL键入BIOS界面,然后就选择BOOT打USDHDD模式选择好,然后按F10键保存,电脑就会马上重启。  步骤...

怎么创建局域网(怎么创建局域网打游戏)

  1、购买路由器一台。进入路由器把dhcp功能打开  2、购买一台交换机。从路由器lan端口拉出一条网线查到交换机的任意一个端口上。  3、两台以上电脑。从交换机任意端口拉出网线插到电脑上(电脑设置...

精灵驱动器官方下载(精灵驱动手机版下载)

是的。驱动精灵是一款集驱动管理和硬件检测于一体的、专业级的驱动管理和维护工具。驱动精灵为用户提供驱动备份、恢复、安装、删除、在线更新等实用功能。1、全新驱动精灵2012引擎,大幅提升硬件和驱动辨识能力...

一键还原系统步骤(一键还原系统有哪些)

1、首先需要下载安装一下Windows一键还原程序,在安装程序窗口中,点击“下一步”,弹出“用户许可协议”窗口,选择“我同意该许可协议的条款”,并点击“下一步”。  2、在弹出的“准备安装”窗口中,可...

电脑加速器哪个好(电脑加速器哪款好)

我认为pp加速器最好用,飞速土豆太懒,急速酷六根本不工作。pp加速器什么网页都加速,太任劳任怨了!以上是个人观点,具体性能请自己试。ps:我家电脑性能很好。迅游加速盒子是可以加速电脑的。因为有过之...

任何u盘都可以做启动盘吗(u盘必须做成启动盘才能装系统吗)

是的,需要注意,U盘的大小要在4G以上,最好是8G以上,因为启动盘里面需要装系统,内存小的话,不能用来安装系统。内存卡或者U盘或者移动硬盘都可以用来做启动盘安装系统。普通的U盘就可以,不过最好U盘...

u盘怎么恢复文件(u盘文件恢复的方法)

开360安全卫士,点击上面的“功能大全”。点击文件恢复然后点击“数据”下的“文件恢复”功能。选择驱动接着选择需要恢复的驱动,选择接入的U盘。点击开始扫描选好就点击中间的“开始扫描”,开始扫描U盘数据。...

系统虚拟内存太低怎么办(系统虚拟内存占用过高什么原因)

1.检查系统虚拟内存使用情况,如果发现有大量的空闲内存,可以尝试释放一些不必要的进程,以释放内存空间。2.如果系统虚拟内存使用率较高,可以尝试增加系统虚拟内存的大小,以便更多的应用程序可以使用更多...

剪贴板权限设置方法(剪贴板访问权限)
剪贴板权限设置方法(剪贴板访问权限)

1、首先打开iphone手机,触碰并按住单词或图像直到显示选择选项。2、其次,然后选取“拷贝”或“剪贴板”。3、勾选需要的“权限”,最后选择开启,即可完成苹果剪贴板权限设置。仅参考1.打开苹果手机设置按钮,点击【通用】。2.点击【键盘】,再...

2026-01-29 21:37 liuian

平板系统重装大师(平板重装win系统)

如果你的平板开不了机,但可以连接上电脑,那就能好办,楼主下载安装个平板刷机王到你的个人电脑上,然后连接你的平板,平板刷机王会自动识别你的平板,平板刷机王上有你平板的我刷机包,楼主点击下载一个,下载完成...

联想官网售后服务网点(联想官网售后服务热线)

联想3c服务中心是联想旗下的官方售后,是基于互联网O2O模式开发的全新服务平台。可以为终端用户提供多品牌手机、电脑以及其他3C类产品的维修、保养和保险服务。根据客户需求层次,联想服务针对个人及家庭客户...