使用生成式人工智能进行软件测试1使用大型语言模型增强测试

news/2025/1/7 13:26:04/文章来源:https://www.cnblogs.com/testing-/p/18653984

1 使用大型语言模型增强测试

1.1 认识人工智能工具对测试和开发的影响

在过去,想要利用人工智能的个人必须具备开发、训练和部署人工智能模型的技能,或者有一个专家团队来完成这些任务,所有这些都会使在日常活动中使用人工智能成为一项昂贵而独特的工作。随着最近人工智能的进步,以及 ChatGPT 和 Gemini 等公开可用的 LLM、开源生成模型、生成式人工智能的微调和检索方法的出现,我们现在开始受益于一些人所说的人工智能民主化。

将人工智能融入我们日常工作的门槛已经大大降低。社交媒体经理现在可以使用 LLM 生成朗朗上口、引人入胜的文案,分析师可以将非结构化数据归纳为简洁明了的报告,客户支持人员只需几个简单的提示就能快速生成对客户的定制回复。LLM 的使用已不再局限于数据科学家和人工智能学者,它对我们这些从事测试和软件开发工作的人也很有利。

良好的测试有助于挑战假设,让我们的团队了解产品在特定情况下的真实表现。我们测试得越多,就学得越多。但是,正如大多数专业测试人员所证实的那样,我们永远没有足够的时间来测试我们想要的一切。因此,为了更有效地进行测试,我们会寻找各种工具和技术,从自动化测试到左移测试。LLM 提供了另一个潜在的途径,帮助我们提高测试的质量和范围,这样我们就能发现和分享更多,反过来又能帮助我们的团队进一步提高质量。

LLM 之所以如此有用,是因为它们能以一种人类易于理解的方式总结、转换、生成和翻译信息,而负责测试的专业人员也能利用这些信息来满足他们的测试需求--所有这些都可以通过简单的聊天界面或应用程序接口来实现。LLM 可以帮助我们快速创建测试自动化,或在我们自己进行测试时提供支持。如果我们掌握了正确的技能,能够识别 LLM 何时可以提供帮助并合理使用它们,我们就能开始更快、更远、更有效地进行测试。为了说明这一概念和我们在本书中学到的知识,让我们来看几个简单的例子。

1.1.1 生成数据

创建和管理测试数据是测试中最复杂的工作之一。创建真实、有用和匿名的数据可以决定测试的成败,而有效地创建数据又会耗费大量资源。LLM 能够快速生成和转换数据,加快测试数据管理流程。通过利用现有数据并将其转换为新格式或用于生成新的合成数据,我们可以利用 LLM 来帮助我们满足测试数据要求,并获得更多时间来推动测试向前发展。

1.1.2 自动测试构建

同样,LLM 的生成和转换能力也可用于创建和维护自动化过程。虽然我不建议让 LLM 完全为我们创建自动化测试,但他们可以有针对性地帮助我们快速创建页面对象、模板类、辅助方法和框架。通过结合我们的产品知识和测试设计技能,我们可以确定自动化流程中算法和结构化的部分,并使用 LLM 加快自动化流程中这些部分的速度。

1.1.3 测试设计

LLM 如何帮助我们确定和设计测试,这或许是一个较少讨论的话题。与自动化测试类似,LLM 的价值不在于完全取代我们的测试设计能力,而在于增强它们。我们可以利用 LLM 克服偏见和盲点,在当前测试设计思路的基础上拓展思路并提出建议。我们还可以总结和描述复杂的想法,使其更易于消化,从而为我们的测试想法提供跳板。

我们将在本书中探讨这样的例子以及更多,以帮助我们更好地理解何时何地可以使用 LLM,以及如何使用它们来加速测试。我们将探讨如何构建提示,以支持我们构建高质量的生产和自动化代码、快速创建测试数据,以及增强脚本测试和探索性测试的测试设计。我们还将探索如何微调我们自己的 LLM,使其成为我们的测试助手,消化领域知识并利用它来帮助指导我们构建更高质量的产品。

1.2 利用 LLM 实现价值

测试是一个协作过程,所有团队成员都有责任进行测试。我们在测试过程中的贡献因角色和经验而异,但我们都参与其中。因此,在本书中,我们将以批判的心态来对待 LLM 的使用,发现使用 LLM 来帮助增强我们所做的多种类型测试的各种方法。我们的目的是让你掌握识别和使用 LLM 的技能,以增强和加速你的测试工作,无论你是专业测试人员还是参与测试过程的开发人员,我们都可以通过建立自己与 LLM 之间的关系规则来做到这一点。

1.2.1 提供价值的模式

要充分利用 LLM,我们需要关注本书围绕的三个核心原则:心态、技术和背景.

我们将在本书的不同部分深入探讨这三个核心原则,首先从思维方式开始。不过,为了更好地理解为什么需要这些原则,让我们逐一简要讨论,以了解它们的含义以及需要它们的原因。

  • 心态
    这也许是三项原则中最重要的一项,因为以正确的心态对待如何利用 LLM,可以大大提高或降低其价值。拥有正确的心态意味着清楚地认识到测试的目的和价值、LLM 的能力,以及如何在两者之间建立一种关系,从而有重点、有针对性地使用 LLM。

  • 技术
    了解如何使用 LLM 固然重要,但我们还需要有能力以最大限度地发挥 LLM 价值的方式使用它们。就本地化语言工具而言,这意味着我们要学会如何创建和策划指令,清楚地传达我们希望本地化语言工具做什么,并确保它以有用的方式做出回应,避免误导风险。围绕 LLM 的生态系统和能力已经得到了广泛的发展,这意味着学习其他技术(例如与 LLM 的 API 平台和人工智能代理集成)可以帮助我们发现并利用 LLM 创造更多先进的机会。

  • 背景
    随着我们的进展,你会发现垃圾进、垃圾出的规则对 LLM 是多么适用。如果我们用一个泛化的、无语境的请求来提示 LLM,我们得到的将是一个肤浅的、无语境的响应。虽然技术可以在一定程度上帮助我们最大限度地提高 LLM 的响应速度,但难题的最后一环还是要能够为 LLM 提供足够的上下文,以便它能够根据我们的需求做出响应。正如你将了解到的,有不同的方法来实现这一点,例如检索增强生成(RAG)和微调,每种方法都有其需要考虑的挑战和需要利用的优势。

如前所述,本书在结构上对这三个原则进行了深入探讨,以帮助我们最大限度地利用 LLM。因此,让我们进一步深入探讨心态的概念,确定良好心态的含义,然后再回到技巧和背景上来。

参考资料

  • 软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
  • 本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
  • python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
  • Linux精品书籍下载 https://www.cnblogs.com/testing-/p/17438558.html

1.2.2 利用人类和人工智能的能力

在本书中,你不仅会学到如何使用 LLM,还会学到如何建立一种工作实践,使我们的测试既能从 LLM 中获益,也能从我们的能力中获益。无论是否基于人工智能,任何工具的价值都不是来自其固有的功能,而是来自用户与工具之间的关系。我们可以将这种关系视为效果模型的一个区域。

这张图表明,要提高我们的影响力,就必须与注重扩展和提高我们核心能力的工具建立健康的关系。如果缺乏这种平衡,我们就会过于依赖工具或自身。我们当然可以依靠自己的能力,但受时间、注意力和偏见等因素的限制,我们的影响范围会越来越小。基本上,没有工具,我们只能做这么多。但我们也不能把所有工作都推给工具。没有个人作为核心,工具就缺乏方向。是的,工具可以自主运行,但如果它们不向人类提供反馈,就无法从中提取价值。效果区域缺少了中心。这就是为什么本书的目的是教你如何在测试中平衡使用 LLM,既注重我们识别使用 LLM 的机会的能力,也注重我们从中获取最大价值的技能。

为了帮助我们更好地理解这种关系,让我们来看一个例子:我们想为文件上传功能创建测试。首先,我们收到一个如下的用户故事:

  • 作为一名律师助理,为了存储和共享法律文件,我希望能够能够安全地上传文件。
  • 验收标准:
    • 上传应支持以下常见文件格式: PDF、DOCX、TXT
    • 最大文件大小应为 20MB
    • 上传文件时,应向用户提供进度更新
    • 文件上传后,最初必须只能由上传者访问
    • 上传报告以及上传成功与否将保存在审核功能中。

由此,我们决定简单地依靠 LLM 来为我们生成工作--例如,发送这样的提示:为文件上传功能创建测试, https://gemini.google.com的回答如下:


向 ChatGPT 等 LLM 发送此提示时,可能会返回如下内容

乍一看,这个回复似乎令人印象深刻。LLM 向我们提供了一份要考虑的不同测试的列表,这让我们觉得我们已经拥有了开始测试所需的一切。但是,如果我们开始更仔细地考虑响应,就会发现一些问题:

  • 提供了我们的用户故事不支持的格式示例。
  • 有些建议很肤浅。例如,JMeter/LoadRunner在性能测试上通常没有https://locust.io/的性价比高。
  • 测试用例的预期结果也很宽泛。例如,"提示信息"是什么?

LLM 的设计目的是无论用户要求它们做什么,它们都能给出响应,虽然这听起来很有用,但如果给出的指令含糊不清,就会出现问题。我们看这个例子并不是为了批评LLM的能力,而是为了帮助我们认识到,LLM的答复会根据所给的提示而变得既详细又笼统。这意味着,我们从LLM那里收到的回复是宽泛而模糊的,因为我们的提示是模糊的。由于没有仔细考虑我们想让 LLM 做什么,提示中没有任何上下文或细节,这意味着所返回的内容毫无用处--这就是典型的 “垃圾进,垃圾出 ”的例子。

这就是前面的效果图区域试图定义的内容。为了从 LLM 中获取价值,我们需要设计出清晰、符合上下文且具体的提示,这样才能从 LLM 中获取更多价值。我们不能把所有责任都推卸给工具,让它来做出我们想要的回应,而是要认识到,我们需要了解上下文,并将这种了解提炼为清晰的指令,这样才能设计出能最大限度地从 LLM 中获得回应的提示语,从而设计出更好的提示语,例如:

扮演专业软件测试员,就三个哈希值所限定的功能提出测试建议。所有测试想法都应侧重于发现影响质量特性的风险: 功能性、数据完整性和安全性###
- 作为一名律师助理,为了存储和共享法律文件,我希望能够能够安全地上传文件。
- 验收标准:- 上传应支持以下常见文件格式: PDF、DOCX、TXT- 最大文件大小应为 20MB- 上传文件时,应向用户提供进度更新- 文件上传后,最初必须只能由上传者访问- 上传报告以及上传成功与否将保存在审核功能中。
###

当发送到 LLM 时,会返回如下响应:




通过创建一个更有针对性、更符合上下文的提示,我们创建了一个能为我们的测试提供更丰富建议的响应。这不是单靠 LLM 就能实现的,而是通过我们的学习技能,将我们的上下文框定为 LLM 可以接受并迅速扩展的指令。

1.2.3 对 LLM 持怀疑态度

LLM具有很大的潜力,但它并不能解决所有问题,也不是唯一的真理之谕。我们将在第 2 章中进一步探讨 LLM 如何使用概率来确定反应,以及 LLM 如何得出与人类不同的解决方案,这就凸显了我们效应模型领域的第二个方面。我们必须用怀疑的态度来判断 LLM 的反应中哪些是有价值的,哪些是没有价值的。

盲目接受 LLM 的结果,往好了说,可能会让我们的工作进度放缓,而不是加快速度;往坏了说,可能会影响我们进行测试,从而对我们的产品质量产生不利影响。我们必须提醒自己,我们而不是LLM才是解决问题活动的主导者。有时,当我们在使用一些工具时,会感觉这些工具的交流方式非常人性化,但这样做会使我们面临上述风险。这就是为什么在我们的效果模型中,我们要利用自己的能力从 LLM 的反应中挑选出对我们有利的元素,当 LLM 的反应不令人满意时,我们要拒绝并重新评估指导 LLM 的方式。

随着本书的深入,我们将了解更多有关 LLM 及其如何为测试做出贡献的知识,我们将牢记我们的效应区域模型,以便读者能够培养在测试中使用 LLM 的能力,从而使您和您的团队能够清醒地、深思熟虑地、有价值地使用 LLM。

1.3 小结

  • 大型语言模型(LLM)的工作原理是接收我们编写的提示并返回响应。
  • LLMs 之所以受欢迎,是因为它们可以轻松访问强大的人工智能算法。
  • LLM 可以帮助许多人胜任不同的角色,也可以帮助我们进行测试。
  • 我们可以将 LLM 用于从测试设计到自动化的各种测试活动。
  • 我们要避免过度使用 LLM,必须始终对它们的工作方式持批判态度。
  • 使用 LLM 的成功源于我们在使用 LLM 的过程中对自身技能和能力的重视。
  • 如果我们对 LLM 的提示肤浅而笼统,那么他们的反应也会千篇一律。
  • 相反,我们应该利用我们的技能来理解问题并为问题定下框架,然后以此来促使LLM以最有价值的方式做出回应。
  • 我们还必须对从LLM那里得到的答复持怀疑态度,以确保从他们那里得到的答复对我们有价值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/864583.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20241319 《计算机基础与程序设计》课程总结

每周作业链接汇总第零周作业:链接,简要内容:自我介绍,课程预习与准备,建立个人技术博客,加入云班课.第一周作业:链接,简要内容:课程概论,工业革命与浪潮之巅,信息与信息安全,计算机系统概论,计算机安全,计算的限制,计算思维.第二周作业:链接,简要内容:数字化…

2024-2025-1 20241409《计算机基础与程序设计》第十五周学习总结

自我介绍很高兴加入2024计算机基础与程序设计 (北京电子科技学院 - 网络空间安全)的班级的大家庭。 第一周作业1.对《计算机基础与程序设计》进行了概述,有了基础的了解。 2.学习了有关2进制、8进制、10进制、16进制之间的转换。 第二周作业1.学习了《计算机科学概论》第一章,…

前端性能优化原理与实践笔记

知识体系与小册格局 写给读者 提起性能优化,大家现在脑海里第一时间会映射出什么内容呢? 可能是类似“雅虎军规”和《高性能 JavaScript》这样历久弥香的经典之作,也可能是搜索引擎聚合给你的一篇又一篇以性能优化为主题的个人或团队实践而来的“私货”。至少当我确定自己的…

20241420 《计算机基础与程序设计》课程总结

20241420 《计算机基础与程序设计》课程总结 每周作业链接汇总 第0周作业:自我介绍与展望 https://www.cnblogs.com/vincent2077/p/18432491第一周作业:安装Linux系统并根据每章内容提出先导提问 https://www.cnblogs.com/vincent2077/p/18438668第二周作业:《计算机科学概论…

2024-2025-1 20241317 《计算机基础与程序设计》课程总结

学号20241317 《计算机基础与程序设计》课程总结 (按顺序)每周作业链接汇总 第0周作业:自我介绍第一周作业:AI学习第二周作业:c语言程序设计第一章第三周作业:c语言程序设计第二章第四周作业:c语言程序设计第三章第五周作业:c语言程序设计第四章第六周作业:c语言程序设…

Linux服务器无Root权限安装Cuda方法及问题解决

CUDA 简介 什么是 CUDA ? CUDA(Compute Unified Device Architecture)是由 NVIDIA 提供的一种并行计算平台和编程模型,用于加速计算密集型任务。CUDA 允许开发者使用 GPU 的计算能力,通过并行处理来快速执行复杂的计算任务。 CUDA 包括以下主要组成部分:CUDA Toolkit:为…

开启家具组装新方式:产品说明书智能指导

在快节奏的现代生活中,人们越来越追求便捷与高效。无论是新房装修还是家具换新,家具组装已成为许多家庭不可避免的一项任务。然而,面对复杂多变的家具图纸和冗长的产品说明书,许多人常常感到无从下手,甚至因操作不当而损坏零件。为了解决这一难题,一种全新的家具组装方式…

2024-2025-1 20241408陈烨南《计算机基础与程序设计》课程总结

每周作业链接汇总 第0周作业 自我介绍 https://www.cnblogs.com/chenyenai/p/18432520第1周作业 计算机基础与程序设计中的问题提问 https://www.cnblogs.com/chenyenai/p/18439433第2周作业 阅读《计算机科学概论》第一章和《C语言程序设计》第一章,并进行总结 https://www.c…

# 学期(如2024-2025-1) 学号(如:20241402) 《计算机基础与程序设计》第15周学习总结

学期(如2024-2025-1) 学号(如:20241402) 《计算机基础与程序设计》第15周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个…

SpringBoot进阶教程(八十四)spring-retry

在日常的一些场景中, 很多需要进行重试的操作.而spring-retry是spring提供的一个基于spring的重试框架,某些场景需要对一些异常情况下的方法进行重试就会用到spring-retry。spring-retry可以帮助我们以标准方式处理任何特定操作的重试。在spring-retry中,所有配置都是基于简单…

制造业知识中台:推动智能制造转型升级的智慧大脑

在当今全球制造业的激烈竞争中,智能制造已成为推动产业升级、提升竞争力的关键路径。制造业知识中台,作为连接数据、知识与业务的智慧中枢,正逐步展现出其在推动智能制造转型升级中的巨大潜力。它不仅能够帮助企业实现知识的有效整合与高效利用,还能通过智能化分析与应用,…

电子配件行业的未来之路:产品说明书数字化转型的力量

在科技飞速发展的今天,电子配件行业作为科技创新的前沿阵地,正经历着前所未有的变革。从智能手机、平板电脑到智能穿戴设备,各种新型电子配件层出不穷,极大地丰富了人们的生活。然而,随着产品种类的增多和功能的复杂化,如何确保消费者能够快速、准确地理解和使用这些产品…