淺談功能測試之美[2] 功能測試方法
* 保持驗收條件以及其技術實現的同步
之前我們將驗收條件保存在Mingle中的故事卡里,而現在QA和BA通過Twist來編寫驗收條件,并標記為in-progress。在實現的時候,開發者通過IDE 來自動生成測試。在任何人修改驗收條件或者技術實現時,IDE的重構功能將自動完成它們之間的同步。例如:測試專家們在Twist IDE 中可能寫出如下的驗收條件:
Search and buy book :
# search for book written by "Martin Fowler"
# add book "refactoring" to shopping cart
# check book "refactoring" is in my shopping cart
開發者通過TWIST IDE, 可以生成如下測試代碼(以Java為例)
public SearchAndBuyBook {
public void searchForBookWrittenBy(String name) {
}
public void addBookToShoppingCart(String name) {
}
public void checkBookIsInMyShoppingCart(String name) {
}
}
之后開發人員可以選擇通過手工編寫代碼(例如通過使用Selenium、 watir作為Driver )或者錄制的方式(Twist會記錄鼠標、鍵盤在WEB頁面上的動作并轉變為相應的測試腳本)來實現功能測試。 更方便的是,測試專家們編寫的DSL驗收條件在保持可讀性的同時,可以像代碼一樣自動完成、對重構更加友好、并且可以方便的運行。
在開發者對相應的源代碼進行諸如重命名或者引入參數(Introduce Parameter)等重構操作時,相應的測試DSL也會被改變.
* 對測試進行標簽管理
Twist 使用標簽(Tag)對測試進行管理,開發團隊可以使用任意標簽來標注測試。例如:已完成還是未完成測試、對應的故事卡號、相應或者相關的模塊名、屬于回歸測試還是冒煙測試。這樣團隊可以方便地劃分測試。通過使用Twist發布的ant target中的tag屬性,你可以輕松地分組運行測試。比如在我們的項目中最廣泛使用的一個Tag是in-progress,這樣,QA、BA可以隨時提交他們的驗收條件,這些尚未完成的驗收條件(沒有相應的技術實現)會被自動過濾掉,不會引起測試的失敗。
* 更有效率地 閱讀測試
Twist很好地在產品中抽象了驗收條件和技術實現,并將它們巧妙地關聯起來。這樣開發者可以通過易于閱讀的DSL來快速了解上下文,并通過Eclipse的快捷鍵F3,快速地在驗收條件和技術實現中進行切換,從而更有效率地閱讀測試。
* 減少啟動功能測試的花費
用戶可以通過在Eclipse中創建Twist項目,快速展開測試。 Twist項目包含了運行Twist測試所必需的所有的第三方庫。同時,Twist發布了相應的ANT target,大大減少了團隊用于啟動功能測試的時間。
在使用Twist的過程中,我們也發現了一些問題,主要集中在Twist的IDE不夠穩定,會有一些UI的異常等方面。我們已經將BUG提交到了Twist 團隊的論壇里,相信稍后的版本會更加穩定易用。通過使用Twist,很好地將團隊以功能測試為中心整合在一起,團隊中的所有角色可以通過一套IDE來編寫、實現、運行、維護測試,大大減少了交流成本,提高了開發的速度,體會了開發之樂。
文章來源于領測軟件測試網 http://www.kjueaiud.com/