AI测试|利用OpenAI的文本生成模型,自动生成测试用例的几个场景示例

将人工智能 (AI) 融入软件测试将彻底改变游戏规则,可以显著提高效率和有效性。本文利用 OpenAI 的文本生成模型(text generation model),特别是 GPT-3.5-turbo 和 GPT-4-turbo-preview,在 Google Colab 中构建文本生成模型,重点关注测试自动化用例。

示例1:自动生成测试用例

我们的用例围绕软件应用程序测试用例的自动生成展开。通过采用文本生成模型(Text Generation Model)从用户故事(User Story)或需求中自动生成测试方案,可以大大简化传统的人工劳动密集型流程。

构建模型的步骤

第1步:环境设置

首先在 Google Colab 中设置环境,这是 Google 提供的免费 Jupyter 笔记本( Jupyter notebook)环境。

1.打开 Google Colab 并创建一个新笔记本(notebook)。

2.安装 OpenAI 包:

!pip install openai -q

第2步:导入库

在你的笔记本中,导入必要的库:

从openai导入 OpenAI

第3步:OpenAI认证

获取你的 OpenAI API 密钥并进行身份验证,如下所示:

openai.api_key = 'your-api-key' client = OpenAI(api_key=openai.api_key)

第4步:定义测试用例生成函数

定义一个函数来根据软件需求生成测试用例。

def generate_test_cases(requirement):    response = client.chat.completions.create(      model="gpt-3.5-turbo",      messages=[        {"role": "system", "content": "You are a helpful assistant capable of generating software test cases."},        {"role": "user", "content": requirement}      ]    )    return response.choices[0].message.content

第5步:测试功能

使用示例需求测试该功能:

requirement = "The system shall allow users to securely login with a username and password."test_cases = generate_test_cases(requirement)print(test_cases)

第6步:输出分析和细化

评估输出的相关性和完整性,根据需要完善提示或参数。

第7步:与测试管理工具集成

(可选)将输出与测试管理工具或存储库集成,以自动将新测试用例添加到套件中。

结论

你现在已经创建了一个工具,可以使用 OpenAI 的文本生成模型生成测试用例。该工具不仅节省时间,还能确保人工难以达到的一致性和彻底性。

未来的增强功能

  • 集成GPT-4-vision-preview 以进行 GUI 测试。

  • 实施可重复的输出以保持一致性。

  • 使用 JSON 模式进行与测试管理工具兼容的结构化输出。

在软件测试中的人工智能动态领域,保持适应性和探索性至关重要,从而释放其全部潜力。

示例2:为购物车(Shopping Cart )功能生成回归测试场景

目标:自动生成电子商务应用程序中购物车功能的回归测试场景,确保新的更改不会破坏现有功能。

代码演练:

设置身份验证:

使用你的 OpenAI API 密钥向 OpenAI 客户端进行身份验证。

从 openai导入 OpenAI客户端 = OpenAI(api_key= 'your-api-key' )

定义测试用例生成器函数:

该函数将获取功能描述并返回回归测试场景。

def generate_regression_tests(feature_description):    response = client.chat.completions.create(        model="gpt-3.5-turbo",        messages=[            {"role": "system", "content": "You are a helpful assistant capable of generating regression test scenarios for a shopping cart feature."},            {"role": "user", "content": feature_description}        ]    )    return response.choices[0].message.content

调用具有功能描述的函数:

提供购物车功能的描述以生成测试场景。

feature_description = "Ensure that the shopping cart allows users to add items, remove items, and proceed to checkout."regression_tests = generate_regression_tests(feature_description)print(regression_tests)

评估和完善:

分析生成的测试场景,并根据需要迭代提示以确保全面覆盖。

图片

示例3:验证天气预报服务的API响应

目标:生成测试用例来验证天气预报服务的JSON API响应,确保数据结构和值符合预期。

代码演练:

设置身份验证:

使用你提供的 API 密钥通过 OpenAI API 进行身份验证。

from openai import OpenAIclient = OpenAI(api_key='your-api-key')

定义测试用例生成器函数:

此函数将获取 API 端点描述并返回测试用例以验证API的JSON响应。

def generate_api_validation_tests(api_description):    response = client.chat.completions.create(        model="gpt-3.5-turbo",        messages=[            {"role": "system", "content": "You are a helpful assistant that generates test cases to validate JSON responses from an API."},            {"role": "user", "content": api_description}        ]    )    return response.choices[0].message.content

使用API描述调用函数:

提供 API 端点的描述以生成验证测试用例。

api_description = "The weather API should return a JSON response with fields for temperature, humidity, and precipitation forecast for the next 5 days."api_validation_tests = generate_api_validation_tests(api_description)print(api_validation_tests)

图片

评估和完善:

检查生成的测试用例的准确性和完整性。确保测试用例检查每个字段是否存在以及数据格式的正确性。

用户说明:

  • 确保替换'your-api-key'为实际的 OpenAI API 密钥。

  • 在 Jupyter Notebook 环境(例如 Google Colab)中运行每个代码块。

  • 运行测试用例生成器函数后,查看建议的测试用例。

  • 如果输出不令人满意,请细化功能或 API 描述以使其更加具体,或调整系统消息以更好地指导模型。

  • 迭代输入和系统消息,直到生成的测试用例满足您对覆盖范围和细节的要求。

通过遵循这些示例,你可以扩展 AI 驱动的测试生成的功能,以涵盖软件测试的各个方面,从而使测试过程更加稳健和高效。

让我们为此创建一个Web应用程序

第1步:创建 GitHub 帐户

1.访问GitHub 的网站。(https://github.com/)

2.单击右上角的“注册”按钮。

3.在必填字段中填写新 GitHub 帐户的用户名、电子邮件地址和密码。

4.通过 GitHub 发送给你的电子邮件验证你的帐户。
5.按照屏幕上的说明完成设置。

第2步:创建新存储库

1.登录后,单击右上角的“+”图标并选择“新存储库(New repository)”。

2.为你的存储库命名,例如“streamlit-test-case-generator”。

3.选择你希望存储库是公共的还是私有的。

4.使用 README 文件初始化存储库。

5.单击“创建存储库”。

第3步:将文件添加到你的存储库

1.在你的存储库中,单击“添加文件”并选择“创建新文件”。

2.创建一个名为app.py—这将是 Streamlit 应用程序的主 Python 文件。

3.将你的 Streamlit 代码写入app.py. 确保您的代码包含 API 密钥的错误处理,以避免暴露它。

4.创建另一个名为requirements.txt. 此文件应列出你的应用程序依赖的所有 Python 库,包括streamlit和openai.

5.单击“提交新文件”来提交新文件。

这是app.py:

import streamlit as stimport openaiimport os
# Retrieve the API key from the environment variableOPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
# Initialize the OpenAI client with the API keyopenai.api_key = OPENAI_API_KEY
# Define the function to generate test casesdefgenerate_test_cases(requirement):    response = openai.ChatCompletion.create(        model="gpt-3.5-turbo",        messages=[            {"role": "system", "content": "You are a helpful assistant capable of generating software test cases."},            {"role": "user", "content": requirement}        ]    )    return response.choices[0].message.content
# Streamlit app layoutst.title('AI-powered Test Case Generator')st.write('Enter your software requirement to generate test cases.')
# Text area for user to enter the software requirementrequirement = st.text_area("Requirement", height=150)
# Button to generate test casesif st.button('Generate Test Cases'):    if requirement:        with st.spinner('Generating...'):            try:                test_cases = generate_test_cases(requirement)                st.success('Generated Test Cases')                st.write(test_cases)            except Exception as e:                st.error('An error occurred while generating test cases.')                st.error(e)    else:        st.error('Please enter a requirement to generate test cases.')

这是需求.txt

streamlitopenai

第4步:添加你的API密钥作为秘密

1.转到 GitHub 存储库的“设置”选项卡。

2.在左侧边栏中找到“秘密”部分,然后单击“操作”。

3.单击“新存储库机密”。

4.命名你的密钥(例如OPENAI_API_KEY)并将你的 OpenAI API 密钥粘贴为值。

5.单击“添加秘密”进行保存。

第5步:创建 Share.streamlit.com 帐户

1.访问share.streamlit.com并点击“注册”。

2.使用你的 GitHub 帐户注册,将你的 Streamlit 帐户与 GitHub 关联。

第6步:部署你的 Streamlit 应用程序

1.登录 Streamlit 后,单击“新应用程序”。

2.选择你之前创建的 GitHub 存储库。

3.选择文件所在的分支(通常main为 或master)。

4.app.py在“Streamlit 应用程序的路径”字段中写入。

5.在“高级设置”中,将你的密钥 ( OPENAI_API_KEY) 输入到“环境变量”部分。

6.单击“部署”以部署你的应用程序。Streamlit 将自动安装文件中列出的依赖项requirements.txt并部署你的应用程序。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末自行领取】

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

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

102.SAPUI5 sap.ndc.BarcodeScannerButton调用摄像头时,localhost访问正常,使用IP访问失败

目录 原因 解决办法 1.修改谷歌浏览器的setting 2.在tomcat中配置https访问 参考 使用SAPUI5的sap.ndc.BarcodeScannerButton调用摄像头时,localhost访问正常,使用IP访问时,一直打不开摄像头,提示getUserMedia()问题。 原因…

有关JS下隐藏的敏感信息

免责声明:本文仅做分享! 目录 JavaScript 介绍 核心组成 工具 FindSomething ** 浏览器检查 ** LinkFinder URLfinder ** SuperSearchPlus ** ffuf ParasCollector waymore Packer Fuzzer JS逆向 应用: 小结: Ja…

简明linux系统编程--互斥锁--TCP--UDP初识

目录 1.互斥锁 2.信号 2.1介绍 2.2信号的内核机制 3.linux网络编程概述 3.1一览七层协议 3.2一览数据传输过程 3.3四层网络模型 3.4服务端和客户端的数据交互 4.TCP服务端编程 5.TCP客户端编程 6.UDP服务端编程 7.UDP客户端编程 1.互斥锁 互斥锁也是和信号量一样&a…

【C++】——优先级队列和容器适配器

文章目录 优先级队列容器适配器 优先级队列 优先级队列是一种特殊的队列,他的元素出队列顺序并不按照先进先出原则,而是根据元素的优先级来。优先级高的先出,优先级低的后出。(类似于堆) 优先级队列常用成员函数: empty()&#x…

6.C++程序中的基本数据类型

数据类型是指在C中用于声明不同类型变量或函数的一个系统或抽象或者是一个分类,它决定了变量存储占用的内存空间以及解析存储的位模式。其实数据类型可以理解为固定内存大小的别名,是创建变量的模具,具体使用哪种模具(包括自定义&…

ai写作软件排行榜前十名,5个软件帮助你快速使用ai写作

ai写作软件排行榜前十名,5个软件帮助你快速使用ai写作 AI写作软件已经成为许多人工作和创作中的重要工具,尤其是在快速生成内容、提高写作效率以及优化文本方面。以下是五款优秀的AI写作软件,它们能够帮助你轻松完成各种写作任务&#xff0c…

芯片级配件产品研发的小众企业生存之路

在半导体行业中,芯片级配件产品的研发一直是一个充满挑战的领域,尤其是对于小众企业而言,如何在技术壁垒高、资金需求大的市场中生存并发展,成为了业界普遍关注的问题。芯片级配件产品涉及到晶圆制造、封装、测试等多个复杂工艺环…

计算机人工智能前沿进展-大语言模型方向-2024-09-20

计算机人工智能前沿进展-大语言模型方向-2024-09-20 1. Multimodal Fusion with LLMs for Engagement Prediction in Natural Conversation Authors: Cheng Charles Ma, Kevin Hyekang Joo, Alexandria K. Vail, Sunreeta Bhattacharya, Alvaro Fern’andez Garc’ia, Kailan…

码头童话,“丈量”行业数智化转型

作者 | 曾响铃 文 | 响铃说 一箱车厘子从地球正对的另一边远渡重洋来到中国,而一旦到达,5个小时内它就能变成北京、天津、河北、河南等区域老百姓果盘里的美味。 这一幕,来自央视联合华为制作发布的《新智中国说-谈智一会间》第一期“码头…

win10下使用docker、k8s部署java应用

在上一篇文章 Windows10上Docker和Kubernetes的安装 中,已经介绍了在 Windows10上安装Docker和Kubernetes ,有了这个环境基础之后,就可以用来部署服务了 在项目目录下新建Dockfile文件,内容如下(请根据实际情况调整&am…

鸿蒙开发之ArkUI 界面篇 十五 交叉轴对其方式

鸿蒙界面有两个容器一个是Colum、一个是Row,Colum主轴是垂直方向,交叉轴是水平方向,Row的主轴是水平方向,交叉轴是垂直方向,对应方向调整子控件的话,justifyContent调整的是主轴方向的子控件距离&#xff0…

Java发送Outlook邮件:从设置到发送攻略!

Java发送Outlook邮件详细步骤!如何使用Java发邮件? Java作为一种广泛使用的编程语言,提供了强大的功能来实现自动化邮件发送。AokSend将详细介绍如何使用Java发送Outlook邮件,从基本的设置到最终的发送过程。 Java发送Outlook邮…

美元降息,对普通人有哪些影响?

美元降息,对普通人有哪些影响? 美元降息了。很多朋友都说我又不炒股,我手里又没有美金,美元跟我有啥关系啊?那我们就来聊聊美元降息,对我们国内经济到底有哪些影响?你再来看看跟你有没有关系&a…

短视频矩阵系统开发|技术源代码部署

产品功能亮点: 1. 支持多账号多平台一键 授权管理 2.支持矩阵视频批量剪辑,批量发布 3. 多平台关键词布局,提升企业及产品曝光 4. 评论区关键词自动回复,意向线索智能挖掘 5. 多账号投放数据统计,省时省力 6. 留资…

Jmeter 线程组解析

1.seUp线程组 一种特殊的 threadGroup ,可用于执行预测试操作;它的行为完全像一个正常的线程组元件,不同的是执行顺序。 它会在普通线程组执行之前被触发。 应用场景: 测试数据库操作功能时,用于执行打开数据库连接的…

jetcache-阿里多级缓存框架神器一定要掌握

文章目录 1. 简介2. springboot集成jetcache2.1 引入依赖2.2 配置文件2.3 高级API模式:通过CacheManager使用缓存,2.7 版本才可使用2.4 (推荐)AOP模式:通过Cached,CacheUpdate,CacheInvalidate注解 1. 简介 JetCache是…

Redis基本命令详解

1. 基本命令 命令不区分大小写,而key是区分大小写的 # select 数据库间的切换 数据库共计16个 127.0.0.1:6379> select 1# dbsize 返回当前数据库的 key 的数量 127.0.0.1:6379[1]> dbsize# keys * 查看数据库所有的key 127.0.0.1:6379[1]> keys *# fl…

SpringBoot+Vue+MySQL驾校预约管理系统

目录 前言 功能设计 系统实现 获取源码 博主主页:百成Java 往期系列:Spring Boot、SSM、JavaWeb、python、小程序 前言 随着社会的进步,各行各业都在充分利用信息化时代的优势。由于计算机技术的广泛应用和普及,各种信息系统…

极越联手百度这你受得了吗!SU7还能稳坐“7字辈”头把交椅?

文/王俣祺 导语:自从今年上半年小米SU7标榜为“年轻人的第一台纯电轿车”,各家车企全都坐不住了。尤其是与小米“颇有渊源”的吉利,从极氪再到领克,目标已经可以说是路人皆知了。现在极越07也来了,可以看出吉利也是下了…

在Windows环境下设置SSH克隆GitHub仓库

在Windows环境下设置SSH克隆GitHub仓库的步骤如下: 1. 生成SSH密钥 打开 Git Bash(如果你已经安装了Git)。输入以下命令生成SSH密钥:ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 按 Enter 键接受默认文件名…