iT邦幫忙

2025 iThome 鐵人賽

DAY 1
0
IT 管理

Playwright + Test Design + AI Agent:自動化測試實戰系列 第 1

第 01 天:天下武功,無堅不破,唯快不破

  • 分享至 

  • xImage
  •  

這句出自電影《功夫》的台詞。意思是,世上再強的武功都有破解之道,但是只有「速度」是沒有破綻的。當修煉到一個極致,只要快,就能有更多的餘力,去化解堅固的防禦,想出擊破強大的力量的方法。在鐵人賽 30 天文章內,我希望帶著大家讓 AI Agent 能夠學習測試的內功基礎後,再搭配自動化測試常使用招式,最後用一個 RESTFul Service 的範例,讓 AI 一起協同撰寫測試案例,包含單元測試、整合測試、E2E 測試,幫助我們提升測試效率。

內功心法:第一個測試案例與單元測試的根基

測試案例是軟體測試中用來驗證系統功能的最小測試單元,通常內容會描述要測什麼、怎麼測、會發生什麼結果。所以一個完整的測試案例通常會包含:測試案例名稱、測試目的、前置條件、測試步驟、測試資料、預期結果、實際結果(失敗或通過)。這樣的架構是確保每個需求都有被測試涵蓋到,並且讓每個人執行時,都能夠維持一樣的步驟與結果,並且能夠被追蹤與報告。這也是自動化測試的基礎。

招式演練:使用 Playwright 撰寫第一個測試案例

Playwright 是由 Microsoft 開發的現代化 E2E 測試框架,而E2E (End-to-End) 測試是一種從使用者視角出發,驗證整個系統流程是否正確的驗證方式,非常適合用來自動化測試案例。雖然 Playwright 出現時間比 Selenium 與 Cypress 晚,但因為針對 E2E 測試常見的痛點進行改進,再加上 Microsoft 的推廣,讓它成為非常適合入門的工具。

範例一:檢查網頁標題

首先,測試案例通常會包含行動(Action)和預期結果(Result),我們來看看 Playwright 官網提供的第一個範例。

import { test, expect } from '@playwright/test';

test('has title', async ({ page }) => {
  await page.goto('https://playwright.dev/');

  // Expect a title "to contain" a substring.
  await expect(page).toHaveTitle(/Playwright/);
});

page.goto('https://playwright.dev/')指的是行動(Action),而 expect(page).toHaveTitle(...) 則是檢查預期結果(Result)。

範例二:點擊「Get started」並驗證標題

test('get started link', async ({ page }) => {
  await page.goto('https://playwright.dev/');

  // Click the get started link.
  await page.getByRole('link', { name: 'Get started' }).click();

  // Expects page to have a heading with the name of Installation.
  await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible();
}); 

在第二個範例中,await page.goto('https://playwright.dev/'); 則是前置條件,指的是接下來的動作前必須先滿足的條件,而接下來的 getByRole 則就是尋找網頁上面名稱是 Get started 的連結,並且按下連結的動作(Action),最後標題會出現 Installation 則是我們預期出現的結果。

秘笈傳授:AAA(Arrange-Act-Assert)

在自動化測試中,我們常用 AAA 架構來撰寫測試案例:

  • Arrange(前置條件):設定測試所需的環境、測試資料或其他條件,讓接下來的測試步驟有正確的初始狀態。
  • Act(步驟):執行你想要驗證的行為,通常會觸發系統的業務流程或是功能。
  • Assert(預期行為):檢查執行後的結果是否符合預期,用來判斷測試是否通過。

Prompt 模板:自動產生完整測試案例


在每一個測試案例中,應包含以下內容:

**測試案例 X.Y:[清楚且具描述性的標題]**
- **優先順序**:[高/中/低]  
- **分類**:[功能/介面]  
- **前置條件**:[需要的環境或設定]  
- **測試步驟**:  
  1. [逐步、詳細的操作說明]  
  2. [每一步預期結果]  
- **預期結果**:[整體測試後的最終結果]  
- **驗收標準**:[通過/失敗的判斷依據]  

最佳實踐

1. 使用上述產生的測試案例,使用 AAA 撰寫自動化測試案例

收功:今日總結

  1. 測試案例是驗證系統功能的最小測試單元,由前置條件、步驟、與預期結果所組成,是自動化測試案例的基礎。
  2. 將測試案例轉換成自動化測試案例可以使用 AAA 結構將測試流程撰寫出來。
  3. Playwright是現代化的 E2E 測試框架,從使用者視角出發檢驗整體功能,並且提供簡潔的 API 和工具。
  4. 最後,我們學會了如何把測試案例整理成 AI 可理解的格式,為後續與 AI 協作打下基礎。

下一篇
第 02 天:打狗棒法招式靈活多變,變化萬千
系列文
Playwright + Test Design + AI Agent:自動化測試實戰5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言