Java自動化測試(一)

軟件自動化測試範疇很廣,理論我就不說了,只針對我此次選的題目——Java自定義組件的測試,從Java事件機制的基礎提及,其中有一小部分關於開源軟件測試框架Abbot的簡單介紹
仍是先說說Abbot吧,Abbot能夠支持Java GUI組件從單元測試到集成測試,簡單地說,單元測試時,你可使用Abbot的一些類庫,把你要測試的GUI扔給某個方法,而後Abbot能夠查找某個組件,好比特定按鈕,而後對那個按鈕調用一下 click(個人按鈕),就能夠實現「點擊」的效果, 你會看到屏幕上的鼠標移動到那個按鈕上並點擊,頗有趣吧,固然你能夠手工編寫一堆代碼控制鼠標移動到那個按鈕上並點擊,可是那樣很麻煩,Abbot幫你封裝了不少底層的操做。
對於一個已經作好的GUI,Abbot也能夠進行腳本錄製,也就是你在你的GUI上操做,Abbot自動記下你的動做,以腳本形式保存起來,之後你還能夠進行重放。下面是官方介紹的一部分翻譯:java

Abbot 框架
abbot提供了一個框架測試你的GUI代碼,而不用考慮你的代碼的當前狀態。若是你喜歡進行測試驅動的開發,那麼abbot提供相關工具爲你生成單元測試代碼。若是你已經有一堆代碼但不是基於單元測試的,abbot也能夠幫你生成腳本
總的來講,abbot測試首先要得到組件的引用,而後要麼模擬用戶操做,要麼對組件的狀態進行斷言。abbot提供ComponentReference得到組件的句柄,以及擴展的、相似robot的對象,用來模擬用戶行爲。這些操做既能夠經過腳本,也能夠經過java代碼來實現
abbot的目標:
1.用戶輸入的可靠重現
GUI測試不完全的一大緣由就是不能很好的重現用戶輸入
2.利用腳本控制動做
使用動態解析的腳本,省去了寫新的測試代碼的麻煩,而且這些腳本還能直接調用java單元測試的代碼
3.下降組件之間的綁定
若是修改了原有的GUI佈局,組件的位置、大小改變了,那麼以前的測試代碼可能會失效(好比找不到新的組件位置)在不一樣平臺下,組件的位置大小均可能改變,那樣測試框架就不能跨平臺了。abbot使用查詢機制,只要能查詢到組件,即便位置大小改變了,abbot同樣能夠運行
4.底層使用低級的操做系統事件來實現高級的語義行爲
java.awt.robot提供了便利的方法直接生成事件,可是其功能太過基礎,不方便使用,abbot在其上抽象出方便的接口(正如Swing對基本窗口的抽象同樣)。經過抽象語句,你能夠很容易的推斷出測試代碼的功能,好比像下面這樣:
Click on 100, 100
Move to 110, 110
Press down key
Press down key
Click on 110, 110
app

Select "blue" from the color list框架

5.支持動態錄製高級語義事件
你能夠手工編輯xml文件,也能夠一條條修改測試語句,可是有了Costello editor ,電腦會幫你記錄全部用戶動做,並自動生成腳本
6.用戶動做的記錄和生成是可擴展的
你能夠本身擴展上述框架,以支持自定義的組件。雖說用基本的robot能夠在不修改測試代碼的狀況下測試任何東西,不過使用擴展的好處在於:你的代碼更加抽象,就好像調用CalRow(10)而不是click(x,y),其中x、y指的是第10行的中心座標
ide

相關文章
相關標籤/搜索