大模型测试角度领域思考

298 阅读13分钟

写着前面

今年,大模型技术火遍全球,大家都在考虑着大模型能不能取代人类去工作,大模型怎么去应用,大模型技术怎么去落地,但是,经历了一年的时间,实际看来,目前的大模型技术还不足以代替人类,那么我们是不是应该静下心来去考虑,在自己的行业领域怎么去应对大模型技术呢?

技术高速发展时代

技术高速的发展,尤其是大模型技术,从gpt3 到gpt4,再到gpt4o,不到一年的时间,这么快的发展让每个程序员看的心慌慌,感觉自己的行业要凉凉。其实技术发展的越快,我们越是应该把心态放平稳,把脚步慢下来,不能被技术发展速度牵着鼻子走,欲速则不达,心态放不好,技术终究也是学不会的。

如果静下心来,慢慢看待大模型,发现,大家提了一年多的大模型技术,其实都没有什么实际意义上的建树,大家也是都在模仿着gpt 去做大模型,真正通过大模型技术去盈利的也是寥寥无几。

怎么看待大模型

经历一年多时间,去学习大模型,体验各种大厂的大模型落地产品,关注大模型的新闻。 我总结了以下一些观点:

  1. 没有必要去盯着大模型技术不放,准备自己去训练一个大模型,有这个时间完全可以去学习怎么去运用大模型,怎么去写一个好的prompt,怎么使用rag技术等。
  2. 真正意义上利用大模型技术的,还是垂直领域的应用。
  3. 既然大家对于大模型技术,怎么应用、怎么落地都没有什么想法,那么还不如考虑怎么在自己行业去应对大模型。

什么是垂直领域

之前的大模型,叫做ai ,例如前几年很火的AlphaGo,在围棋领域打败了世界冠军,而如今的大模型,叫做agi,叫做通用领域大模型,可以理解这个大模型已经可以适用于各个领域,那么有人说了,这么看来 AlphaGo就是一个垂直领域的大模型啊,没错,AlphaGo确实是一个垂直领域,但是之前做一个AlphaGo的技术难度可是相当大的。如今有了agi 大模型,我们每个人都可以通过promt 和rag技术轻松的实现一个自己的所在行业的AlphaGo。这个就是大模型的厉害之处。

思考

我是一个测试工程师,很多人不难想到通过大模型去生成测试用例,实现起来确实也不难,只要写好一个prompt就可以。下面是我的一个prompt 的实例:

image.png

这块是用例的实际生成结果:

image.png

总体看来只要你把你的prompt 写的足够明白,就能够很容易的完成垂直领域的落地,源码放在这里了,有兴趣自己查看。SmartTestModelRepo

广泛应用大模型的时代,如何做好大模型的测试工作?

依赖已有的大模型,去落地自己垂直领域的大模型是非常简单的一件事,但是,现如今,大家都在做自己垂直领域的大模型,把大模型技术应用到自家项目当中去,那么作为一个测试工程师,更应该考虑的是,广泛应用大模型的时代,怎么去做好大模型的测试工作呢,

建立测试ai 大模型体系

在网上搜索了一下,居然没有一篇文章去讲怎么对大模型进行测试,所以,决定自己去总结一下ai 大模型的测试体系,根据已有的测试经验,我把测试体系分为以下几个方面:

一、功能测试

  1. 语言理解能力测试:

测试用例设计

  • 简单语义理解:准备一些常见的问题,如“天空是什么颜色的?”“猫有几条腿?”等,检查模型是否能准确理解并给出正确答案。
  • 复杂语义理解:构造包含多个从句、转折词、隐喻等的句子,例如“虽然天气不好,但他还是决定去公园,因为他喜欢在那里感受大自然的宁静,你觉得他的决定明智吗?”,观察模型对复杂句子结构和语义的理解。
  • 多义词理解:提出包含多义词的问题,如“他去银行取钱了。”“河边有很多柳树,微风吹过,柳枝拂过水面,就像在给河水做按摩。”中的“银行”和“柳”分别有不同的含义,看模型是否能根据上下文正确理解。

预期结果: 对于简单问题,模型应给出准确答案;对于复杂句子,应正确理解语义并给出合理的回应;对于多义词,应根据上下文正确解释。

  1. 语言生成能力测试:

测试用例设计

  • 主题写作:给定一个主题,如“未来的城市”,要求模型生成一篇文章。检查文章的语法正确性、连贯性、逻辑性和丰富性。
  • 故事创作:给出一个开头,如“很久很久以前,有一个神秘的王国……”,让模型继续创作故事。评估故事的情节合理性、创意性和吸引力。
  • 对话生成:模拟对话场景,提出一个问题或发表一个观点,让模型进行回应,持续进行多轮对话。观察对话的自然度和逻辑性。

预期结果:生成的文本应语法正确、连贯流畅,具有一定的逻辑性和创意性。对话应自然、合理。

  1. 问答准确性测试:

测试用例设计

  • 知识型问题:涵盖各个领域的问题,如历史、科学、文学等。例如“谁是《红楼梦》的作者?”“地球的半径是多少?”等。
  • 推理问题:提出一些需要推理的问题,如“小明比小红高,小红比小刚高,谁最高?”等。 - 模糊问题:如“什么是幸福?”等,检查模型的回答是否具有一定的深度和启发性。

预期结果:对于知识型问题,应给出准确答案;对于推理问题,应正确进行推理并给出答案;对于模糊问题,应给出有一定思考价值的回答。

  1. 逻辑推理能力测试:

测试用例设计

  • 数学问题:如“1+2+3+……+100 的结果是多少?”“如果一个三角形的两边分别是 3 和 4,第三边的长度范围是多少?”等。
  • 逻辑谜题:如“有三个盒子,分别标有‘苹果’‘橘子’‘苹果和橘子’,但标签都贴错了。你只能打开一个盒子,如何确定每个盒子里装的是什么水果?”等。
  • 因果关系判断:给出一些事件,让模型判断因果关系,如“下雨了,地面湿了。这两个事件之间是什么关系?”等。 预期结果:对于数学问题,应给出正确答案;对于逻辑谜题,应能正确推理并给出解决方案;对于因果关系判断,应能准确判断。

二、性能测试

  1. 响应时间测试:

测试工具推荐:使用性能测试工具,如 Apache JMeter、LoadRunner 等。可以模拟多个并发用户同时向模型发送请求,测量模型的响应时间。

测试用例设计

  • 不同问题复杂度:准备简单、中等和复杂程度的问题,分别测量模型的响应时间。例如,简单问题可以是“今天天气怎么样?”,中等问题可以是“请解释一下量子力学的基本概念。”,复杂问题可以是“分析一下当前国际政治形势对全球经济的影响。”等。
  • 不同并发量:逐渐增加并发用户数量,从几个用户到几百个甚至上千个用户,测量模型在不同并发情况下的响应时间。

预期结果:在不同问题复杂度和并发量下,模型的响应时间应满足实际应用的要求。一般来说,对于简单问题,响应时间应在几百毫秒以内;对于复杂问题,响应时间可以适当延长,但也不应超过几秒钟。对于高并发情况,模型应能够保持相对稳定的响应时间,不会出现明显的性能下降。

  1. 吞吐量测试:

测试工具推荐:与响应时间测试类似,可以使用性能测试工具进行吞吐量测试。

测试用例设计

  • 固定时间内的请求数量:在一定时间内(如 1 分钟),不断向模型发送请求,统计模型能够处理的请求数量。
  • 不同并发量下的吞吐量:逐渐增加并发用户数量,测量模型在不同并发情况下的吞吐量。

预期结果:模型的吞吐量应满足实际应用的需求。具体的吞吐量要求取决于应用场景和用户数量,但一般来说,模型应能够在合理的时间内处理大量的请求。

  1. 资源占用测试:

测试工具推荐:使用系统性能监测工具,如 Windows 系统的任务管理器、Linux 系统的 top 命令等,可以监测模型在运行过程中占用的 CPU、内存、GPU 等资源。

测试用例设计

  • 不同问题复杂度和并发量下的资源占用:分别在处理简单、中等和复杂问题以及不同并发量的情况下,监测模型的资源占用情况。
  • 长时间运行的资源占用:让模型连续运行一段时间(如几个小时或几天),观察资源占用是否稳定,是否会出现资源泄漏等问题。

预期结果:模型在运行过程中应合理占用资源,不会出现过高的 CPU、内存或 GPU 占用率。长时间运行时,资源占用应保持相对稳定,不会出现明显的资源泄漏。

三.稳定性测试

1.长时间运行测试用例设计

  • 连续运行模型:让模型连续运行一段时间(如一周或一个月),不断向模型发送请求,观察模型是否会出现崩溃、错误或性能下降等问题。
  • 模拟实际应用场景:可以使用自动化测试工具模拟实际应用中的请求模式,如定时发送请求、随机发送请求等,以更真实地测试模型的稳定性。

预期结果:模型在长时间运行过程中应保持稳定,不会出现崩溃、错误或性能下降等问题。

2.异常情况测试用例设计

  • 输入错误格式的数据:故意输入错误的格式、不合法的指令或异常的数据,如包含非法字符、格式错误的问题等,检查模型是否能够正确处理这些异常情况,并给出合理的错误提示。
  • 网络故障模拟:模拟网络故障,如断开网络连接、延迟网络响应等,观察模型在网络故障情况下的表现。
  • 服务器故障模拟:模拟服务器故障,如停止服务器、重启服务器等,检查模型在服务器故障情况下的恢复能力。

预期结果:对于输入错误格式的数据,模型应能够识别并给出合理的错误提示;在网络故障和服务器故障情况下,模型应能够正确处理并尽快恢复正常运行。

四、安全性测试

  1. 恶意输入检测测试:

测试用例设计

  • 攻击性语言输入:输入一些攻击性、侮辱性的语言,检查模型是否能够识别并拒绝这些输入,或者给出适当的回应。
  • 虚假信息输入:输入一些虚假信息,看模型是否能够识别并给出正确的回应。 - 恶意代码输入:尝试输入一些恶意代码,如 SQL 注入语句、脚本代码等,检查模型是否能够识别并拒绝这些输入。

预期结果:模型应能够识别并拒绝恶意输入,或者给出适当的回应,不会被用于不良目的。

  1. 数据隐私保护测试:

测试用例设计

  • 输入敏感信息:输入一些敏感信息,如个人身份证号码、银行卡密码等,观察模型是否会泄露这些信息。
  • 检查数据存储和传输:检查模型在存储和传输用户数据时是否采取了适当的安全措施,如加密、访问控制等。

预期结果:模型应不会泄露用户的敏感信息,在存储和传输数据时应采取适当的安全措施,保护用户的隐私。

五、用户体验测试

  1. 交互性测试:

测试用例设计

  • 不同输入方式:测试模型对不同输入方式的支持,如文本输入、语音输入等。检查输入的便捷性和准确性。
  • 输出格式:观察模型的输出格式是否清晰、易读,是否可以根据用户需求进行调整。
  • 反馈机制:检查模型在处理请求时是否提供及时的反馈,如进度条、提示信息等。

预期结果:模型应支持多种输入方式,输出格式应清晰易读,反馈机制应及时、准确。

  1. 可解释性测试:

测试用例设计

  • 对于复杂问题的回答,要求模型提供解释或推理过程。例如,对于“为什么地球是圆的?”这个问题,让模型解释其推理过程。
  • 对于模糊问题的回答,询问模型是如何得出答案的。如“什么是美?”让模型解释其对美的理解和判断依据。

预期结果:模型应能够提供合理的解释或推理过程,增加其透明度和可信任度。

  1. 适应性测试:

测试用例设计

  • 不同用户需求:模拟不同用户的需求,如学生、专业人士、老年人等,检查模型是否能够提供适合不同用户群体的回答。
  • 不同场景:测试模型在不同场景下的适应性,如教育、医疗、娱乐等领域,观察模型的回答是否具有针对性和实用性。

预期结果:模型应能够根据不同用户需求和场景提供合适的回答,具有一定的通用性和灵活性。 通过以上测试流程,可以全面、系统地测试大模型的功能、性能、稳定性、安全性和用户体验等方面,确保模型的质量和可靠性。在测试过程中,应根据实际情况不断调整测试用例和测试方法,以适应不同的模型和应用场景。同时,还可以结合用户反馈和实际应用情况,对模型进行持续优化和改进。

写着最后

我是小巴哥,一个陪你成长,实实在在分享 测试干货职场经验的人,欢迎关注!!!