利用 OpenAI 的文字生成模型,自動生成測試用例的幾個場景示例
編譯整理|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)
評估和完善:
檢查生成的測試用例的準確性和完整性。確保測試用例檢查每個欄位是否存在以及資料格式的正確性。
使用者說明:
- 確保替換'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 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)
相關文章
- 自動的自動化:EvoSuite 自動生成JUnit的測試用例UI
- 測者的測試技術手冊:自動的自動化EvoSuite 自動生成JUnit的測試用例UI
- 利用LSTM自動生成中文文字
- 基於 LangChain 的自動化測試用例的生成與執行LangChain
- 基於LangChain手工測試用例轉App自動化測試生成工具LangChainAPP
- 基於LangChain手工測試用例轉Web自動化測試生成工具LangChainWeb
- 基於LangChain手工測試用例轉介面自動化測試生成工具LangChain
- httprunner(4)錄製生成測試用例HTTP
- 測試資料之自動生成
- 自動生成為swagger文件的出入參示例Swagger
- 手工測試用例與自動化測試用例的區別
- 基於語義感知SBST的API場景測試智慧生成API
- 下一個GAN?OpenAI提出可逆生成模型GlowOpenAI模型
- 如何自動生成文字摘要
- 記錄python介面自動化測試--利用unittest生成測試報告(第四目)Python測試報告
- 利用apidoc自動生成model文件API
- 利用nodejs寫一個自動生成vue元件檔案的cliNodeJSVue元件
- tep整合mitmproxy錄製流量自動生成用例MIT
- 全域性索引失效帶來的幾個測試場景索引
- python實戰-基於正交實驗(工具:allpairs)自動生成介面異常測試用例PythonAI
- 如何利用showdoc自動生成API文件API
- API自動化測試平臺,支援場景化的API測試API
- 基於資訊檢索和深度學習結合的單元測試用例斷言自動生成深度學習
- Android生成ViewModel例項的幾種方式AndroidView
- 「懶惰的美德」我用 python 寫了個自動生成給文件生成索引的指令碼Python索引指令碼
- 一個支援Sora模型文字生成影片的Web客戶端Sora模型Web客戶端
- 介面自動化使用requests生成測試報告測試報告
- 介面測試:生成Token,使用手機did生成accessToken,再用accessToken生成token 例項
- pytest+allure 生成測試報告,如果保留同一個測試用例的多次執行的日誌資訊。測試報告
- 利用mybatis-generator自動生成程式碼MyBatis
- 如何利用showdoc自動生成資料字典
- 技術前沿:AI大模型在自動化測試中的應用例項AI大模型
- Jmeter 介面自動化連載 (13) - 自動生成測試報告JMeter測試報告
- Python3自動生成MySQL資料字典的markdown文字PythonMySql
- 軟體測試用例設計方法-場景法
- 利用Python自動化生成逼格高的日曆!簡單又實用Python
- 業務場景自動化分享 (巡檢用例)
- Wings-讓單元測試智慧全自動生成