小程序開發(fā)完畢后,就要進行一個重要的流程了,那就是測試,除了添加開發(fā)、體驗權(quán)限后進行的手工測試,還可以進行小程序的自動化測試。那么具體步驟是什么呢?
目前Android自動化測試框架主要分6大類:
單元測試常用的Robolectric,具體實現(xiàn)方案是通過實現(xiàn)一套JVM能運行的Android代碼,然后在unit test運行的時候去截取android相關(guān)的代碼調(diào)用,轉(zhuǎn)到他們的實現(xiàn)的代碼去執(zhí)行這個調(diào)用的過程,并且在android標準類基礎上又豐富了很多擴展接口,這確實極大便利了單元測試過程,但是對于我們關(guān)注功能層面的測試同學確實有些麻爪啊,實踐意義不是很大。
Monkey是Android系統(tǒng)自帶的一款穩(wěn)定性測試工具,很多廠商也將其作為內(nèi)置產(chǎn)品的穩(wěn)定性驗收衡量工具,他雖然簡單易用方便快捷,但是正如其名一樣,猴子畢竟還是猴子是無法完成確定功能用例的測試過程,遺憾啊,等著猴子進化成人吧。
UIAutomator是為數(shù)不多的Android官方支持的自動化測試框架之一,最早發(fā)布的版本為API Level17。作為基于控件的自動化框架,UIAutomator確實接口明晰容易上手,基于UIAutomator也發(fā)展出了鼎鼎大名的Appium開源自動化框架,業(yè)界地位大有舍我其誰之勢。然而使用UIAutomator的前提是可以用UIAutomatorViewer查看到我們預操作控件的屬性信息,上面分析我們已經(jīng)看到,小程序部分控件的父容器是weview,此webview還非標準結(jié)構(gòu),應該是騰訊自研的X5內(nèi)核。想用appium UIAutomator跑自動化的念頭自此打消了。
還有Instrumentation這種Android基因型測試方案可以考慮,著名的Robotium自動化測試框架就誕生于此,但是經(jīng)過一番了解后,逐漸明白Instrumentation也好robotium也好,需要有產(chǎn)品源碼或者簽名,測試工程通常是與產(chǎn)品源碼放在相同項目目錄下,那么問題來了,誰能把微信的源碼給我,簽名也行啊,喂,大哥你有么?喂,喂,有人能聽到嗎?!@#@%&^
早期還有一種通過系統(tǒng)提權(quán)注入實現(xiàn)的自動化測試能力,例如百度的café,阿里的arthrun,大多copy了xposed架構(gòu)模式,具有強大的系統(tǒng)控制能力。然而試問這些框架今何在啊,原來因為android root難度越來愈高,到目前6.0版本幾乎成為不可能,所以這類開源框架早在2014年左右就停止維護了,不靠譜靠不住,還得另謀他法。
基于圖像識別也有一些自動化測試框架,例如sikuli還有testin的自動化工具,然而小生之所以直接就把這類框架pass掉是因為這種測試腳本基本不具備擴展性,系統(tǒng)ui風格變更,想要做斷言驗證,以及日后用例維護等等,想都不敢想。
今天我們介紹的是騰訊優(yōu)測的“Xtest”的自動化測試。
一、錄制腳本,加入循環(huán)等操作
使用XTest錄制從體驗上確實簡單便捷,簡單到不用插線不用PC,可以躺著錄走著錄,即使撩妹都不耽誤測試,跟平時操作App無異。對比早期錄制腳本又抓控件又摸路徑受的罪,幸福感大增。錄制很容易上手,就是在錄制模式下,按照case跑一遍就OK了,腳本自動生成,這里不做贅述,為了讓測試更加充分,我又徒手一口氣在復雜路徑加了50個循環(huán)。真的是徒手,因為就是用手機端的腳本編輯功能就實現(xiàn)了。

二、開始回放查看結(jié)果
搞定腳本后可進行本地回放或多機聯(lián)測,由于是基于控件的錄制技術(shù),所以回放過程比較順利。測試結(jié)束后在手機/sdcard/kat/result路徑下會生成kat_Performance.csv文件,這就是測試過程的性能數(shù)據(jù)了
上面還只是APP的性能測試,下面才是微信小程序測測試:
一、小程序分析
弄完了性能測試,我們切回主題,搞一下小程序,著手開展小程序UI自動化前,我們需要關(guān)注一下XTest是否可以輕松擼到小程序的控件
1、小程序的Hybrid控件
小程序?qū)Ξ斍耙阎С值慕M件給出了演示程序,首先看下這些控件的真面目

使用XTest輔助工具對控件抓取可知,在X5 WebView內(nèi),控件也是如Android原生控件一樣具有屬性字段的。
E/Kat: setString=={name:SPAN,type:notFound,X:99,Y:777,X2:171,Y2:831}
E/Kat: name = SPAN;type=notFound;label=text;x=99 y=777 x2=171 y2 = 831 E/Kat: top-result:168,1016,[99,990,72,54],-2,top=[SPAN,text],valid=[SPAN,text],30000000,0,0,weight=0 E/Kat:@0%1:android.widget.FrameLayout%1:android.widget.FrameLayout%1:android.widget.FrameLayout%1:android...
例如控件的resource-id屬性字段為”SPAN”; text屬性字段為”text”, 以及控件的矩形坐標范圍值和layout層級結(jié)構(gòu),這些數(shù)據(jù)使用XTest都可以準確獲取。
2、特殊控件也可以獲取到對象屬性么?




switch、video、canvas、map等組件都可以獲取到對象屬性,基于這些數(shù)據(jù),可以完成UI自動化的控件抓取。
二、小程序測試實踐
1、視頻接口測試
小程序演示中除了提供組件之外也展示了部分接口功能,從中抽取代表性的“選擇視頻”這一較為復雜用例進行測試:(接口類型:媒體--視頻)


通過前導路徑進入當點選圖片中的+控件后,進入系統(tǒng)相機,什么?什么!……..,XTest失控了,失控了,無法錄制系統(tǒng)相機操作過程。Demo宣傳里面提到什么跨進程,這回怎么跨到溝里去了?帶著憤恨跟疑問勾搭了一下XTest開發(fā)同學,他們提到工具本身確實支持跨進程測試,前提是需要把涉及到的apk也通過他們的工具上傳到手機端,給到我的具體建議是:
用其他相機應用替換掉默認系統(tǒng)相機,然后將此apk上傳到手機端測試
采用自動化+人工交互方式
我對后者十分好奇,什么是自動化+人工?搞搞試試,于是乎根據(jù)他們的幫助還真的搞定了,具體就是在腳本里面插入一條語句:完成自動化與人工的交互過程,結(jié)束后按音量鍵上報測試結(jié)果,之后自動化接管任務繼續(xù)執(zhí)行。看來今后測試行業(yè)也要走工廠流水線了,想想富士康工廠里愈來愈像人的設備與愈來愈像機械的人,小生不僅打了一個冷顫。

2、多賬號分發(fā)測試
看到上圖中有4臺機器一起在運行,微信程序測試需要賬號登錄,XTest本身就支持多機聯(lián)測,微信小程序登陸賬號由server統(tǒng)一管理,在運行時下發(fā)到手機端完成登錄。

看到圖中四個賬號是server端分配的唯一賬號,各不相同,保證每臺設備可以順利登錄,并由框架驅(qū)動多機聯(lián)測。
3、聯(lián)測報告展示
完成多賬號分發(fā)多機聯(lián)測后,就可直接在server端查看測試報告了。

上圖是用Xtest進行多機聯(lián)測后一臺設備的性能數(shù)據(jù)展示。從截圖可以看到當進入小程序的視頻界面開始播放后(第6步),曲線圖的紅色線(CPU)開始斜坡上升,隨著視頻加載緩存(第7、8步),代表上下行流量的綠色線(NetFlow)開始陡增。嗯,還是比較符合人類宏觀認知理論的。如果配合腳本的場景編寫,應該很容易就可以完成壓測中的性能數(shù)據(jù)收集,并根據(jù)圖片手順定位哪步操作會導致性能數(shù)據(jù)異常。
?
以上就是可速云小編為大家?guī)淼?/span>小程序資訊,更多相關(guān)資訊請點擊“可速云”查閱。
熱門文章:微信小程序設計指南、小程序的分銷系統(tǒng)、餐飲小程序主要功能