基于LangChain手工测试用例生成工具

在编写测试用例的过程中,测试工程师会通过需求文档,研发的概要设计等信息编写测试用例,测试用例的输出格式常常为思维导图或者excel等数据信息。

在以上的流程中,一个测试工程师可以根据比较详细的需求文档以及研发的概要设计输出对应的测试点,以及测试用例。而如果和人工智能进行结合的话,人工智能代替的工作就是测试工程师目前的位置。

实践演练

需求说明

接下来,则通过一个小实战练习完成整个流程,以下为某个产品的需求文档(需要右键另存为)。

实战要完成具体的操作为,根据对应的需求文档,生成一个思维导图。

实现思路

完整代码


from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores.faiss import FAISS
from langchain_core.tools import tool
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain import hub
from plantuml import PlantUML

# 声明模型
llm = ChatOpenAI()
# # 1. 读取文件。
loader = TextLoader("./需求文档.md")
data = loader.load()
# 3. embedding
embeddings = OpenAIEmbeddings()
# # 4. 向量存储
vector = FAISS.from_documents(data, embeddings)
retriever = vector.as_retriever()

from langchain.tools.retriever import create_retriever_tool

retriever_tool = create_retriever_tool(
    retriever,
    "search_demand",
    "找到需求文档中具体说明需求的地方",
)
@tool
def generate_png(uml_code, filename):
    """输入plantuml代码生成图像并保存为文件"""
    plantuml = PlantUML(url='https://plantuml.ceshiren.com/img/')
    image_bytes = plantuml.processes(uml_code)
    with open(f'{filename}.png', 'wb') as f:
        f.write(image_bytes)

tools = [retriever_tool, generate_png]
llm_with_tools = llm.bind_tools(tools)

prompt = hub.pull("hwchase17/openai-tools-agent")
agent = create_openai_tools_agent(llm, tools, prompt, )
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
result = agent_executor.invoke({
    "input": """我是一个测试工程师,我需要从以上的需求文档中梳理出来需求信息,请帮我将所有的需求梳理出来,"
             "思维导图的第一级是需求文档中的4.x开头的标题信息,表示功能模块,第二级是该功能模块的测试点,"
             "请先输出一个 plantuml 格式的源码,源码格式如代码内所示
            @startmindmap
            * root node
                * some first level node
                    * second level node
                    * another second level node
                * another first level node
            @endmindmap
             然后再根据源码信息输出一个plantuml格式的思维导图文件。生成一个图片文件,文件名为 hogwarts加任意随机数"""
})


总结

  1. 掌握 LangChain 中Retrieval的使用。
  2. 掌握 LangChain 中 agent 的使用。
  3. 掌握通过 LangChain 将需求文档转为测试用例的技巧
全部评论

相关推荐

投票
电科 销售管培生 年包16到22 本科二本, 硕士双非
点赞 评论 收藏
分享
11-15 20:44
中北大学 后端
自我介绍现在大三 学校让实习嘛 最早什么时候到岗  1.  讲一讲你的项目 和我们业务相契合的地方算法工程方面的- 讲了之前部署的mutualAI社区的事情 还有在strikingly的业务- ollama3 通译7b 2. 之前处理的数据都是文本数据 有处理过类似pdf这样的文件嘛之前处理的确实是文本数据 后面也用过Python的解析库 但是时间有点长 具体讲不明白了3.  Agent框架   用过魔搭社区的4. Python的后端框架都用过那几个   FastAPI Flask Django都用过5. 用没用过FastAPI的后台管理框架 和权限管理的框架?- 没有了解过 之前都是用的Django的6. 爬虫框架你用过嘛- 没用过框架 感觉他们的东西有点重- 用过requests框架 Aiohttp这样的框架 7. Nginx配置跨域 - 这个好久没做忘了8.  Docker 和 K8s用过嘛- 用过docker 没用k8s9.  MySQL优化 怎么优化Mysql- 应该是加索引  redis缓存 本地缓存 联合索引 MySQL的八股需要看一下10. 会构建 数据表嘛- 这个应该是阿里和三范式那一套 记不清楚了(好久没建表了)11. 对我们有什么疑问嘛 - ​问了具体干一些什么事情 听着好像tmd运维 后端 算法全要干 好黑奴12. 机器学习 深度学习了解多少​会一点逻辑回归 支持向量机 随机森林这样的 ​深度学习会CNN RNN这样的13. CICD了解过吗   没做过工程应用 之前 配置了一下 后面交给另一个人了 用gitlab 没有机会学习
查看13道真题和解析
点赞 评论 收藏
分享
1 5 评论
分享
牛客网
牛客企业服务