測試基礎

一個完整的測試

  • 準備環境
  • 準備資料
  • 定義輸入
  • 執行 function
  • 驗證輸出

測試環境

- DEV QA / UAT Staging Production
資料庫內的資料 假資料 假資料 跟 Production 一致的環境 真實資料
分支 develop release master master
使用情境 beta 功能 demo 驗收功能 上版前的最後測試
預先測試 SQL 腳本

UAT:全名叫 User Acceptance Testing 使用者驗收測試

測試需要使用到的資料

  • 環境變數 & 環境設定檔
// test/conf
defaults.js
index.js
local.js
mobile.js
travis-ci.js

https://github.com/webdriverio/webdriverio/blob/master/test/conf/defaults.js

process.env._PORT

Mac

export TESTINGBOT_KEY=
export TESTINGBOT_SECRET=

Window

SET TESTINGBOT_KEY=
SET TESTINGBOT_SECRET=

fixtures

https://github.com/webdriverio/webdriverio/tree/master/test/fixtures

測試專用資料庫

  • 匯入測試 sql 檔案至資料庫
  • 將初始化專案的假資料存在 JSON

測試金字塔 (Test Pyramid)

測試金字塔的概念是由 Mike Cohn 所提出的一個測試開發概念,被 Martin Fowler 大師轉述而聲名大噪,相關細節描述在 Succeeding with Agile 這本書中,其中很重要的一點是強調你應該擁有更多低階的單元測試。

層級 測試程式的數量 描述
第三層 10% UI 測試 / 前端 (end-to-end) 測試
第二層 20% 商業邏輯測試 / 整合測試
第一層 70% 單元測試:針對程式中的最小測試單元進行驗證。

相關資料來源:https://martinfowler.com/bliki/TestPyramid.html

手動測試 vs 自動化測試

以自動化程度來劃分,可分成:

  • 手動測試 (Manual Testing):一個步驟一個步驟的手動去執行
  • 自動化測試 (Automation Testing)

錄製測試步驟

撰寫自動化程式

var webdriver = require('selenium-webdriver'),
    By = webdriver.By,
    until = webdriver.until;

var driver = new webdriver.Builder()
    .forBrowser('firefox')
    .build();

driver.get('http://www.google.com/ncr');
driver.findElement(By.name('q')).sendKeys('webdriver');
driver.findElement(By.name('btnG')).click();
driver.wait(until.titleIs('webdriver - Google Search'), 1000);
driver.quit();

比較表

項目 手動測試 自動化測試
花費的時間
可測出的問題分佈 新功能的 bug 已知的測試流程的 bug
同時測試數量 一次只能測一個 一次可以測多個

延伸閱讀

results matching ""

    No results matching ""