Web/app端自動化測試
做了一段時間的Android自動化測試,對比個人之前做的web端自動化測試,有一些感想。(由於個人接觸的時間也不是太久,很多東西理解也並不深刻,先寫下菜鳥時期的感想。)
區別
1. 啟動差別
app端:在執行用例的時候,1部安卓手機同一時刻打開一個apk包,可以理解,因為比如你在做王者榮耀的測試,那么你的apk肯定只有1個在主屏幕顯示,其他apk在后台繼續運行,但是你無法對他們做操作。
web端:web端就不太一樣了,在web端,我們可以通過Python多線程(或多進程)同時開啟幾個瀏覽器,讓selenium對多個瀏覽器進行操作,同樣100個測試用例,如果均勻分布在3個瀏覽器進行,那么測試效率會有所提高,而且只需要一台電腦就可以測試多種瀏覽器。
2. 安裝檢查
app端:這點感覺很像c/s架構軟件,因為app是需要安裝了才能使用的,所以軟件是否安裝異常,也是需要檢查的一個點。
web端:不需要安裝,在瀏覽器中輸入url就可以測試。
3. 頁面元素操作
app端:只會顯示在手機頁面里加載出來的部分,比方說有的頁面比較長,需要向下滑動才能看到更多信息,此時需要保證不可見的元素顯示在手機頁面才能對它進行操作。
web端:不太一樣,如果控件不是下拉產生的異步加載,那么我們是可以對屏幕內不可見的元素做操作的。因為雖然頁面上沒有加載出來,但是html頁面實際上已經有了。如果遇到需要下拉才能加載的頁面,可以用js操作滾動條。
4. 元素定位
app端:基本操作和web端差不多,不過部分定位方式不支持,比如css_selector和link_text,使用的時候會提示方法還沒實現,也多出了accessible_id這種新的定位方式,不過目前我還沒有用到,以后再補充。
web端:基礎的就name,id,class_name,css,xpath這幾種了。
5. 啟動
app端:需要制定desired_caps內容,因為里面包含了設備信息等。
web端:通過啟動webdriver不同的瀏覽器類,獲取driver,如webdriver.Chrome(),也可以模擬手機端加載wap頁面做wap頁面的測試。
6. 關於元素的屬性
app端:查找到元素以后,查看元素對象,發現里邊基本上只有元素的text屬性,也沒有相關的方法修改,這個區別還是很大的。不過appium有set_text和set_value的方法,目前還沒有嘗試,用的還是send_keys()。
web端:web端簡直就是天堂了,比起修改,讀取元素屬性。比如我要獲取input標簽的name,我可以用get_attribute方法,也可以自行寫js代碼改變這些屬性。
7. 使用js
app端:似乎是支持了,但是執行任何命令server端都會提示404的錯誤。
web端:支持非常好,因為本身js就是負責網頁交互的,所以會很方便。
8. 關於滑動
app端:關於滑動是會用得很多的,比如頁面很長,或者打開通知欄,這種需要在屏幕上滑動的,用到的還比較多。
web端:用到的比較少,之前基本上沒有用到過。
9. 異常
app端:需要注意的是其他apk給你帶來的影響,目前沒有找到很好的方式去處理這些問題,因為其他apk給你做了彈窗,比如qq異地登陸,或者短信這種推送,會影響到目前的流程。辦法肯定是有解決的,我個人理解,可以在出錯之后比對一下是否在當前apk,如果不在的話則進入當前apk再做一次相關操作。
web端:很少被影響,可以邊跑用例邊聊qq,當然我只是舉個例子,總之個人體會就是影響比較小,因為瀏覽器的driver完全只是控制瀏覽器,別的地方和它無關。
其他內容的話有待大家補充啦~暫時只想到這些。