利用 OpenAI 的文字生成模型,自動生成測試用例的幾個場景示例

TesterHome小助手發表於2024-03-06

編譯整理|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

相關文章