在專案執行的過程中,由於時間、人力與各種資源的限制下,有時開發團隊無在對遞交的產品作完整的測試,因為使用者的情境過於複雜,狀況也不一,在有限的資源下,測試時間總是被壓縮,專案經理與測試人員不是刪減測試案例,就是沒有時間測試全部的案例。在測試的時間被壓縮之下,由於測試的工作被任意刪減,開發團隊完全很難掌握遞交出去的軟體品質如何?當團隊面臨兩難的處境時,測試自動化則是不錯的解決方案,使用人力與測試自動化的比較如下:
經由上述的比較,測試自動化也並非【銀彈】。測試自動化較適用於重複性、冗餘和人為易判斷錯誤的問題,除去這些,人力的支援也是必要的,測試自動化僅是輔助人力,增加軟體品質的工具,並非完全取代人工測試的絕對方法。
測試的主要類型有單元測試(Unit Testing)、整合測試(Integration Testing)與回歸測試(Regression Testing),當然還有其他測試方式,但測試自動化的工具對於這三種測試有很大的助益。
1. 單元測試: 一種軟體測試方法,藉由程式內獨立的單元或元件進行的測試。
2. 整合測試: 軟體的測試方法,從獨立的軟體模組測試到相關的模組,直至包含所有的模組。分為由上而下、由下而上、大爆炸測試。
3. 回歸測試: 在軟體開發後,用來找尋或是複測軟體臭蟲的測試方法。
簡略介紹以上三種測試類型後,該進入今天的主題 - 測試自動化的工具: Cucumber與Calbash。以下為工具的主要特性:
- A framework for writing software specifications
- A tool for executing those specifications
- Specifications are written in a readable language that is close to natural language.
- Scenarios – user behavior driven tests
- Steps – combine mobile operation and logic
- A tool
- Predefined and custom steps
- Reuse of tests across platform possible
- For BDD-style acceptance testing
- Run on physical devices or simulators
- Support for webview
- Ruby based
- Cross-platform mobile testing tool
- Cucumber: Android or IOS testing
了解上述這兩種工具的基本特性後,可以歸納出Cucumber其實就是為了執行測試案例的事前準備,也就是軟體功能的描述與測試案例的撰寫工具,然而Cucumber最方便之處,便是能用自然語言的方式表達(中文亦可),可以讓團隊在軟體開發初期或是功能描述上更為便利、直覺;Calabash則是在測試案例撰寫後進行的案測試實作,由於Calabash能夠支援Web, Android和IOS,加上各種平台皆用Ruby on Rails語言來實作,對於開發人員或是測試人員來說,都能減輕負擔,無需學習多種語言便能恣意地完成測試功能的實作。簡介完這兩種工具後,下個章節將進入Cucumber與Calabash的流程。