基于通用LLM的一次测试用例自动生成的实验

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: 基于通用LLM的一次测试用例自动生成的实验

基于通用LLM的一次测试用例自动生成的实验

选择很多,最后选择了讯飞的星火做本次实验,原因还是因为讯飞的LLM的API是有免费额度的,案例代码相对比较成熟易学易用

1 LLM和基于LLM的应用

最近这段实际LLM已经变成了一个炙手可热的词汇,现在任何技术不了到LLM都感觉好像没有彻底聊完一样。那么LLM到底是什么呢?其实LLM(大语言模型)是一种语言模型,由具有许多参数的人工神经网络组成,使用自监督学习或半监督学习对大量未标记文本进行训练。大型语言模型在2018年左右出现,并在各种任务中表现出色。这里面的大其实也是相对的,那么多少参数算大、多少参数又算小确实没有一个通用的定义,通常指的是参数数量在数十亿或更多数量级的模型就算大模型。

image.png

训练一个模型一般都是通过如上三个步骤完成的,先去确定一个候选算法的集合,然后确定一种评价方法,在这种评价方法上找到优的算法,最终达到预期目标的过程就是模型训练的过程。

image.png

训练一个模型一般需要很长时间,那么构建一个基于 LLM 的应用就需要更长时间。随着 Prompt 的发展现在基于 prompt 构建一个应用系统已经变的时间越来越多,有很多在几小时只能就能完成开发。

2 LLM生成测试用例

本文就在充分描述Prompt之上,构建了一个通过通用模型生成测试用例的例子(这只是一个demo)。为了方便,我先把被测试系统的逻辑(类似条目化的需求陈述如下)。
image.png

被测系统是地铁车票自助购票软件系统需求,系统只接收 5元或10元纸币,一次只能使用一张纸币,车票只有两种面值 5 元或者 10 元。其中:

  • 若投入5元纸币,并选择购买5元面值票,完成后出票,提示购票成功。
  • 若投入5元纸币,并选择购买10元面值票,提示金额不足,并退回5元纸币。
  • 若投入10元纸币,并选择购买5元面值票,完成后出票,提示购票成功,并找零5元。
  • 若投入10元纸币,并选择购买10元面值票,完成购买后出票,提示购买成功。
  • 若输入纸币后在规定时间内不选择票种类的按钮,退回的纸币,提示错误。
  • 若选择购票按钮后不投入纸币,提示错误

看到这个测试流程应用测试用力设计方法,设计测试用例如下图:
image.png

那么调用讯飞的 spark 生成测试用例的例如代码如下:

import SparkApi
import os
from dotenv import load_dotenv, find_dotenv

#加载环境变量

_=load_dotenv(find_dotenv())
appid = os.getenv("SPARK_APP_ID")
api_secret=os.getenv("SPARK_APP_SECRET")
api_key=os.getenv("SPARK_APP_KEY")


#用于配置大模型版本,默认“general/generalv2”
# domain = "general"   # v1.5版本
domain = "generalv2"    # v2.0版本
#云端环境的服务地址
# Spark_url = "ws://spark-api.xf-yun.com/v1.1/chat"  # v1.5环境的地址
Spark_url = "ws://spark-api.xf-yun.com/v2.1/chat"  # v2.0环境的地址ws(s)://spark-api.xf-yun.com/v2.1/chat



text =[]

# length = 0

def getText(role,content):
    jsoncon = {}
    jsoncon["role"] = role
    jsoncon["content"] = content
    text.append(jsoncon)
    return text

def getlength(text):
    length = 0
    for content in text:
        temp = content["content"]
        leng = len(temp)
        length += leng
    return length

def checklen(text):
    while (getlength(text) > 8000):
        del text[0]
    return text



if __name__ == '__main__':
    text.clear
    while(1):
        Input = input("\n" +"我:")
        softprompt = "你是一名资深测试工程师,下面你会用等价类法设计测试用例,请根据下面的业务描述设计接口参数的入参:"
        question = checklen(getText("user",softprompt+Input))
        SparkApi.answer =""
        print("星火:",end = "")
        SparkApi.main(appid,api_key,api_secret,Spark_url,domain,question)
        getText("assistant",SparkApi.answer)
        # print(str(text))

运行后,输入我们的业务逻辑后,LLM给设计的测试用例如下:
image.png

仔细分析一下如上流程,其实比人工设计的还要精简,但是按照业务流程的覆盖度上而言,确实还是很好的,人工可以通过完善一下对应的 cases 就可以执行测试了。

3 总结

如上就是一个小实验,尝试使用LLM帮助测试工程师,实验中可以看出prompting base构建的系统就足以满足测试工程师工作的助手的要求了,只要设计好prompt,并且给prompt足够的信息,那么就可以得出有效的测试用例,但是这距离工程化还有一段很长的路要走。

目录
相关文章
|
3月前
|
自然语言处理 搜索推荐 Java
【网安AIGC专题10.25】9 LIBRO方法(ICSE2023顶会自动化测试生成):提示工程+查询LLM+选择、排序、后处理(测试用例函数放入对应测试类中,并解决执行该测试用例所需的依赖)
【网安AIGC专题10.25】9 LIBRO方法(ICSE2023顶会自动化测试生成):提示工程+查询LLM+选择、排序、后处理(测试用例函数放入对应测试类中,并解决执行该测试用例所需的依赖)
82 0
|
3月前
|
分布式计算 测试技术 Spark
CoT 的方式使用 LLM 设计测试用例实践
CoT 的方式使用 LLM 设计测试用例实践
54 0
|
3月前
|
分布式计算 测试技术 API
为集成LLM到测试平台提供更便捷的方式:为讯飞的LLM星火创建接入LangChain类(全部源代码)
为集成LLM到测试平台提供更便捷的方式:为讯飞的LLM星火创建接入LangChain类(全部源代码)
200 0
|
3月前
|
自然语言处理 测试技术 Python
通过Chain Prompts方式将LLM的能力引入测试平台:正交实验测试用例生成
通过Chain Prompts方式将LLM的能力引入测试平台:正交实验测试用例生成
93 0
|
11天前
|
开发框架 前端开发 机器人
从模型到前端,你应该知道的LLM生态系统指南
LLM在在2023年发展的风生水起,一个围绕LLM的庞大生态系统正在形成,本文通过介绍这个生态系统的核心组成部分,来详细整理LLM的发展。
36 2
|
1月前
|
开发框架 数据可视化 Windows
如何提升大模型Agent的能力 ——LLM Agent框架 Modelscope-Agent 实战
本文介绍Agent到底是什么 ,如何进行优化,以及如何使用Agen框架。
|
2月前
|
缓存 API 开发者
魔搭社区牵手FastChat&vLLM,打造极致LLM模型部署体验
FastChat是一个开放平台,用于训练、服务和评估基于LLM的ChatBot。
|
2月前
|
人工智能 监控 Serverless
魔搭社区LLM模型部署实践, 以ChatGLM3为例(一)
魔搭社区LLM模型部署实践, 以ChatGLM3为例(一)
111 0
|
2月前
|
物联网 语音技术 Swift
魔搭社区LLM模型部署实践, 以ChatGLM3为例(二)
魔搭社区LLM模型部署实践, 以ChatGLM3为例(二)
97 0
|
2月前
|
机器学习/深度学习 数据采集 自然语言处理
24 LLM错误代码补全:机器学习顶会NeurIPS‘23 智能体评估:自行构建数据集Buggy-HumanEval、Buggy-FixEval+错误代码补全+修复模型【网安AIGC专题11.22】
24 LLM错误代码补全:机器学习顶会NeurIPS‘23 智能体评估:自行构建数据集Buggy-HumanEval、Buggy-FixEval+错误代码补全+修复模型【网安AIGC专题11.22】
67 0

相关产品

  • 大数据开发治理平台 DataWorks
  • 检索分析服务 Elasticsearch版
  • 日志服务