编译整理|TesterHome 社区
作者|Dr. Ernesto Lee,迈阿密达德学院 Miami Dade College
以下为作者观点:
将人工智能 (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 OpenAI
client = 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)
评估和完善:
检查生成的测试用例的准确性和完整性。确保测试用例检查每个字段是否存在以及数据格式的正确性。
用户说明:
通过遵循这些示例,你可以扩展 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 st
import openai
import os
# Retrieve the API key from the environment variable
OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
# Initialize the OpenAI client with the API key
openai.api_key = OPENAI_API_KEY
# Define the function to generate test cases
defgenerate_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 layout
st.title('AI-powered Test Case Generator')
st.write('Enter your software requirement to generate test cases.')
# Text area for user to enter the software requirement
requirement = st.text_area("Requirement", height=150)
# Button to generate test cases
if 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
streamlit
openai
第 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 并部署你的应用程序。
(原文链接:https://drlee.io/implementing-ai-in-software-testing-creating-a-text-generation-model-for-test-automation-7294b26f93c4)