人工智能 (AI) 正在飞速发展,最大的突破莫过于通过非营利研究公司 OpenAI。最初创建于 2015 年,作为与 Google DeepMind 的对立面,与研究社区自由合作并引领 AI 的道德发展,他们推出了几款革命性的产品,如 Dall-E、MuseNet、Whisper、Dactyl、Codex 和最受欢迎的 GPT语言模型。

GPT-3

GPT-3(生成式预训练 Transformer 3)是最先进的自然语言处理 (NLP) 模型之一,有可能在几乎不需要人工输入的情况下生成对无限范围的人类语言查询的响应。GPT-3 通过寻找文本中的模式来工作。该模型是在一个庞大的文本数据集上训练的,该数据集包含超过 45TB 的精选文本,这些文本来自整个网络,参数高达 1750 亿个。它可用于各种自然语言处理任务,包括问答、摘要、对话建模和文本生成。凭借在语言理解、生成文本和会话 AI 方面的高级功能,OpenAI GPT-3 被认为是迄今为止最强大的语言模型。

GPT-3是如何工作的?

GPT-3模型基于多层转换器架构,这是一个神经网络,它通过跟踪顺序数据中的关系(例如这句话中的单词)来学习上下文和意义。Transformer 模型应用了一组不断发展的数学技术,称为注意力或自注意力,以检测微妙的方式,即使是一系列中遥远的数据元素也相互影响和依赖。

  • GPT-3 使用一种称为掩码语言建模的技术,这意味着它被训练为在给定先前单词的情况下预测句子中的下一个单词。这允许模型生成更自然、更像人的文本。

  • 它利用零样本学习,其中一个预训练的深度学习模型被用来概括一个新的样本类别,即训练和测试集类是不相交的。零样本方法通常通过某种形式的辅助信息将观察到的类和非观察到的类关联起来,这些信息编码了对象的可观察区分属性。这使得模型只需输入几个词即可生成高度准确的结果,并生成听起来非常自然的文本。

  • 最后,它采用迁移学习来利用从先前任务中获得的知识来改进对另一个任务的泛化。这使模型能够快速适应新任务并生成更准确的结果。这在深度学习中意义重大,因为大多数现实世界的问题通常没有数百万个标记数据点来训练如此复杂的模型。

  • 该模型利用强化学习 (RL)算法,并根据用户反馈重新训练自己进行连续学习,以便随着时间的推移改进自己。

使用 GPT-3 进行测试

OpenAI GPT3 可能是自动化软件开发生命周期 (SDLC) 的绝佳选择。借助 GPT-3,测试工程师可以利用以下用例:

  • 测试中文本生成模型最常见的用例肯定是测试代码生成,即根据数据自动生成测试脚本。将人工干预和花在查找 ID、选择器或 xpath 上的时间减少到零。

  • 使用 GPT-3,测试脚本和测试用例的生成可以变得顺利,因为 GPT-3 使用提示、示例和输出模型。要生成测试脚本,测试工程师只需要提供一个提示,其中包含他们正在尝试执行的操作的上下文。例如,简单的文本:“打开 www.xyz.com,然后登录”、测试用例或分析数据。然后,测试工程师需要提供一个示例,说明他们期望从 GPT-3 返回什么,在这种情况下,这将是你希望将数据转换成的语言的代码示例。提供大约 4-6 个示例将产生最佳结果。一旦将这两件事提供给 GPT-3,输出将返回给定提示的代码,然后可以将其永久或临时保存到文件中,然后执行。

  • 我们还可以应用类似的原则,根据加载到 GPT-3 中的输入生成整个测试框架,并将其转换为用于被测应用程序(Web、移动、API)的定制测试框架。工程师可以简单地指定被测应用程序、语言以及他们想要开始的自动化框架类型,然后框架可以在很短的时间内自动生成。

在自动化测试中如何应用?

OpenAI GPT-3 功能强大,并且通过其快速设置和易于使用的集成完美地表明了 AI 在将 AI 系统集成到自动化测试方面的发展方向。在评估此工具是否适合你的团队时,应考虑一些学习曲线区域。但与生成你自己的自定义模型相比,学习曲线是完全可控的。

自动化测试过程大致可分为以下三个主要阶段。让我们看看如何使用 GPT-3 来加速这些阶段中的每一个阶段,并使整个过程更快、更高效。

No.1 识别被测应用程序

这涉及识别需要测试的业务逻辑、功能需求和非功能需求。GPT-3 可以通过使用自然语言处理 (NLP) 分析代码库、用户界面中的文本和相关文档来识别被测应用程序,以确定应用程序类型。例如,如果应用程序包含“Shipping”或“Add to cart”等英文单词,那么 GPT-3 可以推断该应用程序是一个电子商务平台。通过执行此步骤,我们可以根据这些已识别的对象/功能/依赖关系创建可重用的测试用例/场景,这些用例/场景可以在以后的任何测试活动(例如手动回归或探索性测试)中使用。

No.2 创建测试用例/场景

一旦确定了数据结构,GPT-3 就可以为每个案例生成测试场景。此外,如果需要,你可以利用 GPT-3 生成所需的测试数据。例如,如果测试电子商务商店,请生成涵盖不同类型购物者的场景,例如首次购买者、回头客和多件商品购物者。

生成场景后,可以进一步使用 GPT-3 创建测试脚本来测试数据结构。然后可以根据预期行为和现有系统要求验证场景,并进一步评估结果。一旦为系统中的每个对象/功能创建了这些可重用测试,你就可以更轻松地在多个项目中重用它们,而不会因为它们的不同范围和上下文(例如,不同的 QA 团队)而相互冲突。

No.3 设计和开发自动化测试框架

创建自动化测试的第三阶段涉及设计框架,通过该框架我们可以使用高级语言表达我们的需求,因此测试工程师专注于应用程序功能,而不是语法,这对整体效率有显着贡献。

优点

2. 从第一天开始就应该优先考虑添加面向安全的最佳实践。但是,如果你有不安全的遗留代码或没有时间在代码中查找安全漏洞,GPT-3 可以提供帮助。此外,GPT-3 创建的大部分代码片段在默认情况下都是安全的。但有时,你可能必须提示平台创建安全代码。

3. GPT-3 是克服特定技术知识局限性的绝佳工具。例如,如果你是 Selenium 专家但不精通 GitHub,你可以使用 GPT-3 至少让你入门并提供入门代码来帮助你创建 GitHub 工作流。但是,请注意 GPT-3 并不完美或万无一失。

4. 在调试方面,GPT-3 是任何软件开发人员工具包的有用补充。你可以在 Internet 上找到一些示例,其中人们复制粘贴了他们的代码并将失败的确切原因作为输出响应返回。同样,这并非 100% 万无一失,GPT-3 可能会遗漏明显的问题,但它仍然可以帮助你入门或在调试代码时为你提供新的视角。

缺点

GPT-3基于统计模式,不理解文字的潜在含义。该模型根据之前/之前使用过的词预测下一个词。但是,它对这些词的含义没有基本的理解。这意味着它不能在用户的问题或陈述需要理解之前未解释过的上下文的情况下有效使用。

虽然这些似乎是次要限制,但如果你依赖 GPT-3 进行测试,这将是一件大事。例如,如果你必须创建需要事先深入了解被测系统的测试用例,GPT-3 的准确性将大大降低。

GPT-3 的底层技术,是一种深度学习语言模型,已经在人类生成内容的大数据集上进行了训练。这里我们假设它也学习了代码作为文本;因此,它能够创建如此准确的代码。这意味着它不能准确地回应它以前没有学过的东西,或者如果它的学习没有更新,它可能会给出错误的信息。

例如,如果它的最后一个学习阶段是在一个已经弃用了一半方法的框架上,那么它将创建的代码将使用那些已弃用的方法。因此,用户必须确保他们使用的最终代码是最新的。

通过 GPT-3 创建代码的另一个挑战是你必须处理部分编写的代码。因此,如果你依赖基于 GPT-3 的代码,你首先必须理解不完整的代码,完成它,或修改它以满足你的需要。正如你可以想象的那样,这通常是一件具有挑战性的事情,因为有太多事情可能出错。即使你设法得到你想要的,最终产品也可能不如你从头开始编写代码那么好。但另一方面,有时扩展代码或调试代码可能比从头开始创建重复代码更容易。

GPT-3 取决于假设。软件测试人员接受过培训,可以识别这些可能导致应用程序失败的隐藏因素,当他们这样做时,他们可以在测试用例中构建检查这些问题的方法。但是,当你的测试人员没有足够的时间来测试他们所有的假设时会发生什么?如果验证假设所需的信息不可用怎么办?当其他团队参与构建产品时,如 QA 或开发,这可能很难控制。

GPT-3 也存在类似的问题。该平台从许多关于你输入的用例的假设开始。大多数时候,这些假设是显而易见的,并且很容易解决它们,但通常这些假设会导致非常不准确的代码。

人工智能会取代测试团队吗

GPT-3 和类似的 AI 技术在测试和自动化测试领域肯定具有巨大的潜力。但是,说他们将取代测试团队仍然是不可能的。这是因为生成的代码往往并不完美。在大多数情况下,它们非常接近可运行的代码;但是,仍然存在一些问题,从语法错误到由于上下文差距而缺少关键步骤。但经验丰富的开发人员可以提供足够多的样板文件,使其易于调整、调试和独立运行。

如果使用得当,该工具将使团队能够更早、更快地开始测试任务。在后台使用该技术创建的适当工具将使测试人员不必太担心自动化,而是专注于测试用例本身。

结论

总而言之,在我们的自动化测试过程中利用 AI 可以带来很多效率。GPT-3 是一款令人兴奋且功能强大的自动化测试工具。话虽如此,重要的是要强调它仍处于早期阶段,并且正在不断更新以添加功能或修复错误。此外,它还采用强化学习算法不断从用户反馈中学习。因此它的准确性会随着时间的推移而增加。这意味着用户必须掌握这些变化才能继续有效地使用 GPT-3。

GPT-3 可以作为你下一个自动化测试项目的重要基础,并可用于加速整个过程的每个阶段。因此,我们可以最大限度地减少多次执行相同任务所需的工作量,减少人为错误并使我们的测试用例更加健壮。

最后:下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!