基于 DeepSeek 通过功能需求进行测试瞎想,瞻望不错裁减约 60% 的用例瞎想资本。巧合要领,如下:
功能需求索要
用例生成教唆词瞎想 ->最要道
DeepSeek模子调用
测试用例抓久化存储
要领 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 模子调用
安设 DeepSeek Python库
pip install langchain-deepseek-official
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} --- 当作一个资深软件测试大众,请按照以下花样对上述功能需求从正向、负向场景进行测试分析与瞎想,需要用到常用的等价类永别法、限制值分析法、判定表法、正交法等测试瞎想次序,ag百家乐开奖需要复返一个可成功露出的数组,该数组中每一个元素代表一条用例,元素类型为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_pathag百家乐, "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