用腳本自動化複雜測試場景#

透過 scripting 來自動化複雜的測試場景,有多種選擇:

  • Unix shell:搭配 cURL 抓取 URL、jq 解析 JSON,適合編排 processes 和檔案操作
  • 進階腳本語言:Python、Ruby、Perl,適合涉及 API 存取和狀態維護的複雜場景
  • 內建腳本語言:許多系統自帶腳本支援,例如 Apache HTTP Server、Wireshark、VLC 都支援 Lua

為你的軟體加入腳本語言#

如果你的軟體不支援 scripting 但你能修改它,考慮嵌入一個腳本語言,並加入 API bindings 來暴露程式的功能。

範例:透過 Lua 測試 C 函式#

書中展示了一個實際範例——用 C 程式載入並執行 Lua 腳本,將 sincostan 三角函數暴露給 Lua,然後在 Lua 中撰寫測試程式驗證 tan(θ) = sin(θ) / cos(θ)

epsilon = 1
errors = 0
while epsilon > 0 and errors < 2 do
    for theta = 0, 2 * math.pi, 0.1 do
        diff = lsin(theta) / lcos(theta) - ltan(theta)
        if (math.abs(diff) > epsilon) then
            print(epsilon, theta, diff)
            errors = errors + 1
        end
    end
    epsilon = epsilon / 10
end

在更實際的場景中,C 程式就是你的大型應用,暴露的函數是你需要測試的功能,而 Lua 腳本讓你輕鬆撰寫和調整測試案例。

重點回顧#

  • 透過腳本語言自動化複雜測試案例的執行