然后自動化測試工具選擇腳本語言的問題,我們可以選擇VBScript,Perl,Python,比較一下,Python比較強大,Nokia的一些工具就是python做腳本的。
兩者之間的通信機制:可以使用ATcommand進行通信,出了GSM標準支持的ATC,還要有手機專門自己的命令來支持遠程終端操控手機。比如鍵盤控制,長按短按等。
手機需要暴露一些接口,比如截圖,文字識別,返回圖像,文字等。這樣可以做自動化驗證,做到無人值守。這些均需要手機來支持。比如設計手機要有這樣的接口 BOOL GetPicture(int top, int bottom, int right, int left, BITMAP & bitmap); 這樣通過ATC發過來命令然后手機解析一下,得到top,bottom等信息,然后得到bitmap返回。文字識別需要python來完成,char* GetStringFromPic(Point pt, const Bitmap* bitmap); 我就用C++來表示了。這樣在腳本里面就可以進行比較文字了。
更進一步,支持錄制腳本功能,比如按下某個鍵,串口信息,監聽串口信息,這樣腳本解析按下的鍵,然后判斷在轉譯成腳本語言。Key();
關于手機只需要支持識別ATC參數,然后傳回要的結果,我想主要是通過圖片來返回,因為這是模擬人工測試的原理,我按下某個鍵,就會出現什么結果,這樣需要返回圖片即可,然后腳本客戶端需要對圖片進行處理,要么進行比較圖片內容,要么進行文字識別進行文字對比,這樣可以實現測試自動化。
前文已經把大致的手機需要提供的接口說了一下,再次總結一下:
1.需要手機支持GSM07.07中規定(Optional)的鍵盤控制的命令at+ckpd
2.需要手機支持一些特殊的ATC,比如傳回手機當前圖片,以便作比較。
3.自動化測試的目的:能夠替代人工實現大量手工難以完成的工作,重復性較強的工作,比如一些壓力測試,存五百條通訊錄等,刪除等,考驗手機內存釋放時是否有內存泄露等等。二是能夠完成大量的回歸測試,易于維護等特點。
思路:
選擇腳本語言:由于python使用很靈活而且具有強大的文本處理能力,且易于學習等特點,可以選用python作為腳本語言和實現語言。
方式:
比如定義def CCKEY()來完成發送CCKEY,也可以通過一個map文件來實現CCKEY--at+ckpd=\"c\"這種方式,然后用戶這邊只是用譬如以下的命令:
CenterKey()
Key(\"#\", 2)
LongPress(\"#\")
PressKey(\"0\")
LSK()
RSK()
NaviUp()
NaviDown()
再加上python的控制流程,異常處理等,可以編出強大的易于維護的腳本來。
手機方面的接口可以是GetImage(),然后通過腳本進行處理,這個可能需要很大的工作量,因為要么重新研究圖像識別對比,文字識別等技術,要么購買組件等,即驗證這一關也很難實現。
在初期可以考慮人工來驗證一些結果,比如圖片對比結果,可以使用一些技術,比如蒙板等,得到一些異狀圖片,用戶自己審閱一下,加入明顯的由異樣,就Fail,這樣就不能自動,可以說是半自動化了。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/