隨著對軟件質量的要求越來越高,測試也越來越被重視。而采用自動化測試的方法就顯得非常重要。
最初采用自動化測試的目的是為了進行回歸測試:因為自動化測試能夠在測試用例執行方面大幅度的降低成本,減少測試執行工程師;但是對于編寫自動化測試腳本成本和效率的考慮,也使得自動化測試應用范圍不是很大。
但是,自動化測試能夠給用戶帶來的不僅僅是非常好的執行效率和較低的執行成本,同時也能夠使測試工程師編寫更多的測試用例來提升測試覆蓋率,提升測試效果。
使用自動化來進行測試的軟件開發組織越來越多,但是大多數的自動化測試都是不成功的:往往付出很多成本,回報很小——只能夠覆蓋部分測試用例、測試環境管理復雜、測試數據復雜、支持業務流程的自動測試復雜。
本文的目標就是對這些問題作一個基本的討論,來說明如果構建一個自動化測試框架來解決這些問題。主要是提出一個規范和指標,并不涉及如何實現。
自動測試框架的目標
自動測試框架的宏觀目標,是:1)降低單個測試腳本的復雜程度,使得測試腳本更簡潔、更規范,只關注于測試操作過程;2)測試用例支持 BPT(business process testing),支持在測試用例中的業務流;3)測試用例復用;4)把測試環境從“定性”的抽象管理,轉變成“定量”管理,具體化測試環境;5)管理精確的測試數據;6)截取正確或者錯誤的用例執行信息;7)支持測試迭代。
自動測試框架的要求
1、自動測試3+模型
在傳統的測試模型中,特別是手工測試用例中,測試設計人員不太需要去考慮測試用例之下的層次——對于使用自然語言的描述信息,而不是形式化的方式描述——只關心測試用例就可以了。
但是,如果需要自動執行,就需要編寫自動化的測試腳本。過于體現流程的自動化測試腳本,會帶來:1)數據管理的復雜性。每個腳本都是被參數化的,并且具備多組數據,而測試用例如果需要使用多個腳本,數據復雜性就會大大提高,不離于進行管理;2)測試腳本的復用支持。測試腳本需要付出很多代價得到的(需要編寫、測試),管理者從節約成本的角度上,需要測試腳本進行重用,即可以通過測試腳本組合出很多不同的測試用例;3)測試迭代。如果需要把上一次測試過程中產生的測試用例、測試集,作為下一輪次測試的輸入,就需要測試集支持多層次的包涵,即允許一個測試集合包含另外一個測試集合。
基于以上的要求,自動測試的模型,應該是支持“3+層”的模型:
第一層,體現測試腳本,即測試執行的操作流程層;
第二層,體現測試的業務流程,即測試用例層;
第三層,測試集合層,即多個測試用例的集合,用來執行。
第n層,測試計劃層,支持在一個測試計劃中擁有多個測試集合。
3+層模型,能夠把整個自動化測試的模型變得更簡單,更多的參數化和可配置,就如同TestCenter類似。TestCenter本身的測試框架,就是基于3+層模型的。
2、對測試用例的要求
對于自動測試用例而言,要求:1)測試數據依賴于測試用例;2)測試用例支持內部的流程配置;3)測試用例內部的參數傳遞;4)測試用例的輸入參數;5)測試用例驗證規則支持。
測試數據依賴于測試用例,而不是測試腳本,是自動測試框架中基本的要求。
原文轉自:http://www.anti-gravitydesign.com