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赋能软件测试的文章,吸引了很多志同道合的同学们的讨论,基于前面的文章,我们已构建了基础测试用例生成能力。今天主要聊一下知识库。北极星学派,公众号:北极星学派 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生成方案存在两大痛点:- 领域知识缺失大模型无法记忆企业私有文档(如需求规格书、接口文档)
- 历史经验浪费
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;">二、核心逻辑解析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 })
创新点: 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
设计考量: 2.2.3 动态提示词工程system_prompt=f"""参考知识: 文档《{item['document']}》第{item['page']}页:{item['content']} 历史用例{idx+1}:{case} 生成要求: 1. JSON数组格式... """
增强策略:
三、关键技术选型解析3.1 什么是RAG?检索增强生成(Retrieval-Augmented Generation)通过以下流程提升生成质量: 用户问题→知识检索→提示词增强→大模型生成→结果输出 与传统生成的区别: 3.2 为什么不用向量数据库?尽管向量数据库(如ChromaDB)在RAG中广泛应用,但本系统选择TF-IDF+CSV文件存储方案,原因包括: 适合场景:
四、快速部署指南4.1 环境准备4.1.1 安装Python包# 核心依赖 pipinstallstreamlit pandas requests sklearn # PDF处理 pipinstallPyPDF2 pdfminer.six # JSON修复 pipinstalljson_repair
4.1.2 获取API密钥- 访问任何一个大模型提供商处注册账号,本文采用腾讯云
headers={"Authorization":"Bearersk-xxxx"}
4.2 系统启动# 首次运行自动创建知识库目录 mkdir-p temp
# 启动Web服务 streamlit run testcase_generator.py
4.3 功能验证流程上传领域文档:
结果导出: pythonpd.DataFrame(new_cases).to_excel("output.xlsx")
五、性能优化建议(有精力有能力的动手爱好者们可以继续优化)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(): # 非阻塞生成
六、扩展方向- 多模态支持:解析图片中的需求文档(OCR技术)
- 自动化评审:添加用例质量评分模型
- CI/CD集成:与Jenkins/GitLab对接自动触发
|