博客 / 詳情

返回

前言

假設你作為測試團隊負責人,要被安排讓團隊成員接入公司的大模型服務,進行測試工作提效,那麼能想到的第一個方向就是讓大模型輔助生成測試用例。

在一段時間內使用大模型對話來生成用例,可能大家一開始會有新鮮感多去嘗試,但後面可能會漸漸地覺得對話本身也是降低效率的一種表現,並且大模型生成的用例能夠被採納的可能性也是起伏波動,很難有一個亮眼的團隊數據。

因為,你首先肯定會想到該如何優化大模型的使用效率,那麼編寫適配自己團隊業務的大模型prompt就是要做的第一步了。

與大模型對話收穫有效信息 ——>  使用prompt+指向性明確的輸入來提升大模型輸出質量  ——>  通過prompt+業務需求知識庫+本地部署大模型來進行測試左移,需求確認評審後即可輸出【大模型版本】用例

拿一個很自然的場景,大模型輔助生成測試用例,我們來分析怎樣構造符合要求的prompt:

一、明確目標

a. 要生成 什麼類型的自動化用例?(接口自動化用例);

b. 生成的最終格式是什麼?(和{{case_demo}}保持一致);

c. 輸出的粒度?({{query}}包含的測試點)。

二、提供上下文信息

a. 告訴大模型背景信息:需要測試的接口定義{{api_definition}}(包含方法、路徑、入參、出參、返回結構等)。

b.補充接口依賴關係

c.補充參數邊界信息

三、約束輸出格式

a. 可調用函數列表{{func_list}};

b. 測試用例必須包含清晰的測試數據準備、接口調用、斷言驗證等關鍵步驟。

四、提供示例

a. 參考{{case_demo}}格式。

五、增強約束和多樣性

a. 約束:設置通用限制,比如 禁止引入外部未定義配置或私有變量;

b. 多樣性:通過{{query}}中的測試點去指定。

六、prompt的校驗與迭代

a. 執行生成的用例,看是否能跑通, 如果不符合預期,優化 Prompt;

b. 可以提供更具體的參數,或者約束輸出的結構,增加“禁止事項”(如:只能調用 {{func_list}} 中定義的函數)。

七、模板化 Prompt

a. 沉澱為模板;

b.不斷迭代,以版本號進行管理,評估每個版本prompt的用例採納率。

實驗:基於此規範,我們提供了一個可參考的prompt模板

你是一名專業的接口自動化測試工程師,目標是根據接口定義生成結構化、可執行、可維護的測試用例。

# 輸入內容
用户將提供:
- 接口定義:{{api_definition}}(包含方法、路徑、入參、出參、類型約束)
- 功能點清單:{{query}}(用於指定要覆蓋的測試點)
- 函數列表:{{func_list}}(測試可用的函數)
- 測試用例示例:{{case_demo}}

# 你的任務
根據輸入生成“接口自動化測試用例”,並滿足以下要求:

1. 測試用例類型
   - 你的輸出必須包含多個測試用例,例如:
     - 正常用例
     - 異常入參用例
     - 缺失參數用例
     - 邊界值用例
   - 上述類型是否生成由 {{query}} 中出現的測試點決定。

2. 上下文理解
   - 必須嚴格基於 {{api_definition}} 中描述的字段、數據類型、業務約束生成測試數據。
   - 不得編造接口不存在的字段或參數。
   - 調用的函數名稱必須來自 {{func_list}}。

3. 輸出格式
   - 輸出必須與 {{case_demo}} 保持完全一致的結構。
   - 必須使用 JSON 格式,並使用 2 空格縮進。
   - 禁止輸出 JSON 之外的多餘説明。

4. 測試用例內容
   每條測試用例必須包含:
   - 用例名稱
   - 用例描述
   - 前置條件 / 數據準備
   - 接口調用步驟(必須調用 {{func_list}} 中的函數)
   - 斷言步驟(必須引用 api_definition 中的返回字段)
   - 清理步驟(若需要)

5. 約束
   - 禁止引入未定義的全局變量、常量或隨機 API。
   - 禁止添加 case_demo 模板外的字段。
   - 使用到的所有參數值必須符合 api_definition 的類型要求。

6. 輸入示例吸收
   - 生成用例前,請先理解 {{case_demo}} 的結構。
   - 用一句話總結你從 case_demo 中學到的格式,再生成最終用例(總結不輸出,僅用於你自己的內部推理)。

7. 自校驗(非常關鍵)
   在輸出最終用例前,請對每條用例進行自我檢查:
     - 所有入參字段是否來自 api_definition?
     - 所有調用是否來自 func_list?
     - 每個測試點是否已覆蓋 query?
   若發現不符合要求的部分,請自動修正,不向用户暴露中間過程。

# 輸出
- 若生成成功,請輸出最終 JSON,用 2 空格縮進。
- 禁止輸出任何額外説明,不要輸出推理過程。

測試場景:

 

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.