好像好久沒有更新博客了,之前寫的幾篇博客關於自動化的框架的居多,其中好多博友向我提了好多問題,我沒有回復。這里給博友道個歉~ ~ 總結幾點原因如下:
1.我一般很少上博客,看到了都是好幾天之前的問題
2.比較懶~ ~這是主要原因,以后會更改!
3.框架都是比較老了,現在已經對自動化單元測試框架,做了更高級的封裝。(報告更加優美,功能也增加了:比如錯誤截圖,后台異常搜集,可重復多次執行,錯誤錄屏,后台crash和anr異常· 捕捉)
4.打算最近重新把這一套完整的東西,放在github上。
目前從事的是APP測試,所以封裝了minicap快速截圖、監聽器處理異常彈框(廣告)、圖形識別、OCR技術等公共方法與appium完美結合,關於圖形識別和OCR的作用是明顯的...當前這一套東西同樣適應用web端。
目前我們的所有測試結果是放在平台上的。包括功能、性能、穩定性、兼容性測試等....
這一塊,我改天專門講講我在封裝時的一些小心得.....
今天,我們的主題是遍歷APP!!!
進入主題,為什么要研究這個玩意?
話說做app自動化測試或者功能測試對monkey這個玩意應該不陌生嗎,在壓力測試中經常跑這個然后搜集crash和anr信息。但是monkey的缺點是很明顯:
1.沒有目的性,遍歷效果比較差,一般很難比較系統的遍歷玩app的大部分頁面!!
2.經常沒事還把你wifi給斷了,那么接下來的monkey是無意義的,有些app沒有網就是廢的~
3.可能陷入到一種死循環中,比如A-B-C-D-C-B-A 根本出不來,這時候如果看見了,可能狂按返回鍵幫他跳出整個死循環...
所以我也改造了monkey了 某種程度上讓他看起來稍微智能和高效點,整個有感興趣的博友可以留言討論。。。
好了,說了這么多,我們總想着如果有一種算法大致上能像人一樣點完app的上所有按鈕,然后在點擊過程中收集一些性能信息比如耗電、cpu、上下行流量...更重要的是搜集一些crash和anr信息,對於一些比較固定且內容變化不大的app還可以進行圖形對比,判斷不同版本對應不同頁面的截圖差異!等等
其實,早就有這個東西了像百度的測試的那個所謂的深度遍歷,還有其他的各種雲的遍歷,但是但是,效率是相當的差,因為不支持定制和一些過濾規則,根本遍歷不了幾個按鈕就結束或者陷入死循環...而且tm的還要錢...我是試用了下,懶得再用了!然后再testhome上看見了一個大神寫的app遍歷:https://testerhome.com/search?q=AppCrawler
感覺想法和思路很好!我非常佩服,但是我下載了下來用來遍歷我們的這個比較比較變態的app,效率和遍歷深度很差....這里沒有其他的意思(針對我的這個app),實話實說!原因呢可能有一下幾點:
1.我們的這個app廣告特別的多,不時彈出個廣告,讓你措手不及,這個不好處理!
2.過濾規則我可能沒太理解怎么用!
3.有死循環出現。比如在A用戶的個人主頁面點擊進了B的個人profile然后進入C的個人profile,反正一直在profile頁面遍歷!
還有一些缺點:
1.沒有脫離appium,運行腳本建立在appium的基礎上
2.速度有點慢...
那么,我也想寫個簡單的遍歷腳本(我希望他不斷不簡單),當前可能不能和這位大神的AppCrawler相比,但是也有我的一些小優點~~
1.用的自生長的深度優先遍歷算法
在一個初始頁面獲取所有自定義規則的element,然后點擊其中的一個element,跳轉或者不跳轉到另外一個page,再次獲取次也么的合法element添加路徑和圖的鄰邊...一直這樣遞歸一直到一個page
無法獲取新的element或到達設定的深度或設定的時間終止遍歷!!如果不太了解可以看下深度優先遍歷算法。不過我們的這個圖和鄰邊是單向的。
2.脫離了appium,利用appium的真正實現原理封裝了針對於uiautomator2-server的方法,只要裝有這個apk就行,省去了appium的安裝成本和排除坑爹的appium錯誤的錯誤成本。
3.同樣支持規則引導
4.目前自認為還可以的遍歷效率和深度(對我這個app,當前還要不斷增加邏輯和優化,這是我寫這篇博客的主要目的!)
5.遍歷完生成思維導圖和遍歷截圖(用jsmind)
....
其他的慢慢的再加上,我只想讓他遍歷高效點和准確點,工程我已經放在github上,寫這篇博客的目的就是想引入這么個概念,然后想讓感興趣的一些拓展或修改這個框架,不管是過濾規則還是算法
我相信只有大家共同來想好怎么做這個工程才能做好!!!
項目github的地址:https://github.com/zhoudaqiang/appCrawler
最后,寫的時候比較隨意主要是讓他能運行起來。如果大家對這個框架不太了解或者對其中的任何思想不明白可以留言加QQ詳聊。希望能有人一起想好做好這個遍歷工程,至少能比monkey高效點~