使用ruby 1.9新特性進行自動化腳本的編寫
昨天因為要裝watir-webdriver的原因將用了快一年的ruby1.8.6升級到了1.9。由于1.9是原生支持unicode編碼,所以我們可以使用中文進行自動化腳本的編寫工作。
做了簡單的封裝后,我們可以實現如下的自動化測試代碼。請注意,這些代碼是可以正確運行并作為正式的自動化測試用例的。這樣一來,自動化測試腳本跟手工測試用例就非常相似了,大言不慚的說相似程度可以達到60%。
這樣做有什么好處呢?
■ 手工測試用例更加容易“翻譯”正自動化測試用例:
測試瀏覽器 = Watir::Browser.new :firefox 測試瀏覽器.轉到 'www.google.com' 在(測試瀏覽器.的.text_field(:name, "q")).中.輸入 "qq" 點擊 測試瀏覽器.的.button(:name, "btnG") 等待(測試瀏覽器.的.div(:id, "resultStats")) 斷言 '測試通過' if 測試瀏覽器.的.text.包含('騰訊QQ') 關閉 測試瀏覽器 |
由于加入了符合自然語義的”的”及“在”函數,整個測試用例的自然度得到大大提升,基本可以做到不熟悉自動化代碼的人員可以大致猜測到用例的真實用例。讓用例自己說話,這比反復釋疑和解惑要好上一些;
■ 手工測試人員編寫用例的門檻相對降低:
由于代碼的靈活度及兼容性相對較大(ruby語言的特性)及測試api相對簡單(watir的特性),手工測試人員應該可以更加方便的理解和編寫代碼,這樣用例編寫的門檻降低;
■ 用例維護成本降低:
中文化的用例代碼可以很容易的進行review。大家應該有這樣的經驗,在有些代碼中會出現一些隨意的ab, zb之類難以理解的變量或方法名。糾其原因無非是不好的編程習慣或詞窮的英文積淀。用上中文之后這些情況會有很大好轉。代碼本地化這項工作日本這些年一直在做,而且成果豐碩。我們完全可以通過ruby借鑒這一點;
■ webdriver的強大特性
上面的測試代碼是基于watir-webdriver編寫的。由于webdriver支持多種瀏覽器,如ff,chrome,safiri,ie等,代碼的擴展性非常強。在配置合理及框架支撐的前提下,基本可以做到一套腳本多瀏覽器運行,這對回歸測試來說應該是一個利好消息;
當然,測試腳本中文化,自然化口語化也會帶來一些列的問題,這點我們也必須清楚認識到。
1.用例編寫會相對費時一些;中英文結合編碼在輸入速度上確實不如純英文;
2.對程序員來說上面的代碼會有些怪異或者是令人難以忍受的;對于完美主義者來說,上面的代碼是“不純粹”且有些難看的;
總結一下,個人的觀點如下:
對于產品代碼來說,中英文混編的風格目前來說應該是不合時宜的。但對于測試腳本來說,中文越多,用例可讀性越高,自動化測試代碼越接近手動用例,這反而應該是一件不錯的事情。這在里先拋磚引玉,希望有志同道合者可以一起研究,讓自動化腳本更加的人性、自然、可讀、可維護。也許在不遠的將來,手動用例可以直接拿來當自動化用例執行也未嘗不可能。
下面是用例的完整代碼,由于只是演示興致,因此只是隨意在Module層進行了簡單的可視化封裝,過于簡陋和demo,還望磚家手下留情。
# encoding: utf-8 測試瀏覽器 = Watir::Browser.new :firefox |
posted on 2013-09-18 11:23 順其自然EVO 閱讀(383) 評論(0) 編輯 收藏 所屬分類: ruby languages