iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0
Software Development

測試工程師的上線時間:從分析到實戰的刻意練習系列 第 9

Day 09:用「測試金字塔」三層架構練習撰寫不同層面的測試案例

  • 分享至 

  • xImage
  •  

前言

測試金字塔是一個用來劃分不同層次測試的策略。透過將測試分成三個主要層次:單元測試 (Unit Test)、應用層測試 (API Test)、以及端對端測試 (E2E Test),我們能更有效地驗證系統的各個部分,確保每一層的功能都能運作正常,並且提升整體的測試效率。

單元測試 (Unit Test)

使用 Linear SDK 進行單元測試,驗證某個模組或功能的正確性。例如,測試 GraphQL API 的呼叫是否能正確取得使用者資料。這是測試最基礎的部分,能快速驗證小範圍的功能是否運作正常。

應用層測試 (API Test)

當我們確保了單元測試的功能正確後,下一步是進行應用層測試,這主要是用來驗證系統的 API 是否能正確運作。像是在測試查詢 Linear 任務時,檢查回傳的資料是否完整且正確。這能幫助我們確認系統內部的服務是否能正常協作,並且回傳正確的資料給使用者。

pseudo code

# 單元測試 (Unit Test)
import requests

def test_get_issues():
    query = '''
    {
      issues {
        nodes {
          id
          title
        }
      }
    }'''
    response = requests.post("https://api.linear.app/graphql", json={'query': query})
    assert response.status_code == 200
    assert "issues" in response.json()["data"]

端對端測試 (E2E Test)

使用 Playwright 自動化測試,模擬使用者透過登入頁面進行 Email 登入,並使用 MailSlurp 獲取驗證碼來完成登入流程。

pseudo code

# 端對端測試 (E2E Test)
from mailslurp_client import MailSlurp
from playwright.sync_api import sync_playwright

def test_login_with_verification():
    with sync_playwright() as p:
        browser = p.chromium.launch()
        page = browser.new_page()
        page.goto("https://linear.app/login")
        page.fill("input[name='email']", "user@example.com")
        page.click("button[type='submit']")
        
        mailslurp = MailSlurp(api_key="your_api_key")
        inbox = mailslurp.create_inbox(email_address="user@example.com")
        email = mailslurp.wait_for_latest_email(inbox.id, timeout=30000)
        code = extract_code_from_email(email.body)
        
        page.fill("input[name='verification_code']", code)
        page.click("button[type='submit']")
        
        assert page.url == "https://linear.app/dashboard"
        browser.close()

結論

透過「測試金字塔」,我們可以清楚劃分不同層級的測試範圍,從最底層的單元測試到最頂層的 E2E 測試。這樣的架構不僅幫助我們提升測試效率,還能讓我們更有系統地驗證每個功能點。隨著不同層級的練習,我們能更好地理解每個測試層級的目的,並且確保產品在各層面都保持高品質。


上一篇
Day 08:以一頁式測試計畫征服 Linear 測試挑戰
下一篇
Day 10:使用 playwright 自動化登入流程
系列文
測試工程師的上線時間:從分析到實戰的刻意練習26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言