返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

8分钟打造一个DeepSeek生成测试用例系统知识库

[复制链接]
链载Ai 显示全部楼层 发表于 1 小时前 |阅读模式 打印 上一主题 下一主题

ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;vertical-align: baseline;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">一、背景与系统定位

ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">之前分享过两篇8分钟系列DeepSeek赋能软件测试的文章,吸引了很多志同道合的同学们的讨论,基于前面的文章,我们已构建了基础测试用例生成能力。今天主要聊一下知识库。

8分钟打造一个DeepSeek加持的测试用例工具

北极星学派,公众号:北极星学派 Polaris School8分钟打造一个DeepSeek加持的测试用例工具

8分钟打造一个DeepSeek API智能测试引擎:当咖啡还没凉,测试报告已出炉

北极星学派,公众号:北极星学派 Polaris School8分钟打造一个DeepSeek API智能测试引擎:当咖啡还没凉,测试报告已出炉

ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">

ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">本系统在此基础上引入知识库增强生成(RAG)技术,通过融合领域文档与历史用例数据,使生成结果更贴合业务场景。

ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;vertical-align: baseline;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">1.1 为什么需要知识库?

ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">传统AI生成方案存在两大痛点:

  1. 领域知识缺失
    大模型无法记忆企业私有文档(如需求规格书、接口文档)
  2. 历史经验浪费
    过往测试用例未被有效复用

ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">本系统通过轻量化RAG架构(无需向量数据库)实现:

  • PDF文档智能解析 ➡️ 构建领域知识库
  • 历史用例语义检索 ➡️ 形成经验复用机制
  • 动态增强生成提示词 ➡️ 提升用例专业度

先看视频Demo
  1. 上传文档到知识库
  2. 第一次生成没选择使用知识库增强->设计的测试用例和手机号登录毫无关系
  3. 第二次选择使用知识库增强->设计的测试用例知道用手机号进行注册系统,并知道更多其他细节

ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;vertical-align: baseline;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">二、核心逻辑解析

ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;vertical-align: baseline;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">2.1 系统架构全景


ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;vertical-align: baseline;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">2.2 关键技术点说明

2.2.1 知识库构建模块

defprocess_pdf(uploaded_file):
# PDF分页提取文本
pdf_reader=PyPDF2.PdfReader(filepath)
# 智能分段规则,略简单粗暴
paragraphs=re.split(r'\n\s*\n',text)
# 结构化存储
segments.append({
'segment_id':f"{filename}_{page_num}_{i}",
'document_name':uploaded_file.name,
'page_num':page_num+1,
'content':paragraph
})

创新点

  • 采用唯一段落ID
  • 按自然段落分割,保留上下文语义
  • 过滤无效短文本(<20字符)

2.2.2 增强检索引擎

deffind_similar_cases(new_req,df,top_k=3):
# TF-IDF向量化
vectorizer=TfidfVectorizer()
tfidf_matrix=vectorizer.fit_transform(...)
# 余弦相似度计算
similarity=cosine_similarity(tfidf_matrix[-1],tfidf_matrix[:-1])
returntop_indices

设计考量

  • 相比BM25算法更易实现
  • 计算效率:O(n)复杂度,千级数据实时响应
  • 结果可解释性强,适合调试

2.2.3 动态提示词工程

system_prompt=f"""参考知识:
文档《{item['document']}》第{item['page']}页:{item['content']}
历史用例{idx+1}:{case}
生成要求:
1. JSON数组格式...
"""

增强策略

  • 知识片段截断处理(单段≤512字符)
  • 优先级排序:领域知识 > 历史用例
  • 格式强约束(JSON Schema注入)

三、关键技术选型解析

3.1 什么是RAG?

检索增强生成(Retrieval-Augmented Generation)通过以下流程提升生成质量:

用户问题→知识检索→提示词增强→大模型生成→结果输出

与传统生成的区别:

  • 知识实时性
    无需重新训练模型
  • 数据安全性
    敏感信息不离域
  • 结果可控性
    通过检索结果引导生成方向

3.2 为什么不用向量数据库?

尽管向量数据库(如ChromaDB)在RAG中广泛应用,但本系统选择TF-IDF+CSV文件存储方案,原因包括:

维度
向量数据库方案
本系统方案
部署复杂度
需单独部署服务
零依赖,单文件运行
硬件要求
需要GPU加速
CPU即可运行
数据规模
适合百万级数据
千级文档最优
可维护性
需要专业DBA
直接修改CSV文件
学习成本
需掌握查询语法
开发者无需新知识

适合场景

  • 中小团队快速验证RAG价值
  • 领域文档更新频率较低(周级)
  • 测试数据规模<10万条

四、快速部署指南

4.1 环境准备

4.1.1 安装Python包

# 核心依赖
pipinstallstreamlit pandas requests sklearn
# PDF处理
pipinstallPyPDF2 pdfminer.six
# JSON修复
pipinstalljson_repair

4.1.2 获取API密钥

  1. 访问任何一个大模型提供商处注册账号,本文采用腾讯云
  2. 创建应用 → 获取sk-xxxx格式密钥
  3. 在代码中替换:

    headers={"Authorization":"Bearersk-xxxx"}

4.2 系统启动

# 首次运行自动创建知识库目录
mkdir-p temp

# 启动Web服务
streamlit run testcase_generator.py

4.3 功能验证流程

  1. 上传领域文档

  • 进入"知识库管理"页
  • 上传PDF格式需求文档/接口文档
  • 查看处理后的知识段落
  • 生成增强用例

  • 需求示例:
    用户管理模块,包括用户注册和登陆等

      • 勾选"使用知识库增强"
      • 查看生成的边界值测试用例

      1. 结果导出

        pythonpd.DataFrame(new_cases).to_excel("output.xlsx")
      • 直接复制JSON用例
      • 通过Pandas导出Excel:

      五、性能优化建议(有精力有能力的动手爱好者们可以继续优化)

      5.1 知识库分级存储

      # knowledge_segments.csv新增字段
      knowledge_df['category']="需求文档"# 需求文档|接口规范|测试报告
      knowledge_df['importance']=5 # 1-5分级

      检索时优先高等级知识片段

      5.2 缓存机制

      fromfunctoolsimportlru_cache

      @lru_cache(maxsize=100)
      defload_cases():
      # 缓存历史用例加载

      5.3 异步处理

      importasyncio

      asyncdefasync_generate_cases():
      # 非阻塞生成


      六、扩展方向

      1. 多模态支持:解析图片中的需求文档(OCR技术)
      2. 自动化评审:添加用例质量评分模型
      3. CI/CD集成:与Jenkins/GitLab对接自动触发

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
    • 官方手机版

    • 微信公众号

    • 商务合作

    • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
    • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ