1.允許測試腳本里調(diào)用api。
我們經(jīng)常在測試時要做一些準備活動,比如注冊一個新用戶。這一步驟可能每次花費幾分鐘時間,那么這時候建議直接調(diào)用注冊用戶的api來生成新用戶。每個場景節(jié)約幾分鐘,加起來就多了。
2.允許測試腳本里訪問數(shù)據(jù)庫。
雖然我們做測試可以說重點在界面上,但是業(yè)務邏輯上如果出錯了最好也要能找出來。也就是說,我的檢查點不止檢查頁面元素,更先去檢查對應數(shù)據(jù)在數(shù)據(jù)庫里是否正確。好處是數(shù)據(jù)庫里不正確的時候,腳本就不用傻乎乎等個幾十秒才報出來頁面上的錯誤。
3.為測試準備獨立干凈的測試環(huán)境。
測試如果針對網(wǎng)站,很多時候要考慮在windows系統(tǒng)上跑腳本。一般建議和工作用的電腦分開。如果有條件,還可以自動化搭建這樣的測試環(huán)境,我們以前是通過云自動搭建符合要求的虛擬機來做。
4.考慮測試邏輯的重用性。
通常采用頁面對象建模,詳見selenium官網(wǎng)。如果是商業(yè)工具則一般已經(jīng)自帶對象庫,如QTP等都自帶了。簡單來說就是同樣的測試邏輯封裝在一起,用的時候直接調(diào),改的時候只改一個地方。
5.在開發(fā)階段考慮可測性。
有的app就是不可測,這也動態(tài)那也動態(tài),控件各種不標準,自定義。這種是沒法做自動化的。比如用selenium去測gmail的網(wǎng)頁版,一切都是動態(tài)的,那簡直瘋了也做不成功。相反比如說去看京東的網(wǎng)頁,各種標準,再沒有比它更適合用selenium測試的了??蓽y性每提升一丁點兒,自動化測試效率提升一大截。質(zhì)的改變。
6.采用統(tǒng)一的設計和分層次的設計。
有一個經(jīng)典問題,在我去一些公司面試時被反復問到,有一個測試場景會用到網(wǎng)站、桌面app、手機app,如何做自動化?
具體點我舉個例子,你在手機端拍了一張照片,上傳到了網(wǎng)盤上,放下手機在桌面端打開這個照片并做了一些修改和美化,然后在網(wǎng)頁端把他展示出去。這個場景如何自動化測試?
如果采用統(tǒng)一的自動化測試設計應當可以解決。不管是桌面的網(wǎng)頁的還是手機的,對測試腳本來說都是執(zhí)行測試的庫去負責的,也就是說我寫測試只是寫業(yè)務邏輯,如何執(zhí)行是那些庫的事情。第一層是測試邏輯層,第二層是測試實現(xiàn)層。
這樣分開的好處是:1.實現(xiàn)層的工具可能會換,2.可以測試復雜的場景,3,維護人員可以分開,降低測試邏輯層維護人員的技術要求,4,便于大團隊的協(xié)作。
7.允許半自動化測試
我曾經(jīng)這么做:腳本負責截圖,我事后肉眼人工檢查截下來的圖,來判斷是否有界面錯亂之類的問題。好處是實現(xiàn)方便,不用搞什么鬼的圖像比對。圖像比對完了之后你還是要瞄一眼截圖,不然你不放心圖像比對的結果,事實上我自己光瞄幾眼就看完了所有圖片,每種界面截個一兩張就夠了。