本文章轉(zhuǎn)載于搜狗測試
本期小編與大家分享搜狗手機(jī)輸入法隨機(jī)自動(dòng)化測試框架以及隨機(jī)動(dòng)作概率算法烁落。
背景介紹:
提起隨機(jī)自動(dòng)化操作邓嘹,相信大家并不陌生,目前使用最為普遍的adb monkey命令應(yīng)該都有所耳聞。monkey優(yōu)點(diǎn)不言而喻捶码,它使用起來很簡單,只需要在命令輸入命令即可完成對app的各種隨機(jī)操作或链。但是在搜狗手機(jī)輸入法項(xiàng)目中惫恼,這一方法就有些局限了:
輸入法穩(wěn)定性測試重點(diǎn)之一是輸入各種語料內(nèi)容,也就是輸入ni'hao等比較有規(guī)律的詞語澳盐,這一點(diǎn)monkey無法滿足祈纯。
輸入法穩(wěn)定性測試需要定制有一些有序的動(dòng)作,例如:輸入ni'hao后叼耙,點(diǎn)擊候選詞文字進(jìn)行上屏腕窥;又或者是切換輸入鍵盤等。
以上2中定制的動(dòng)作數(shù)量很多旬蟋,希望能夠在測試前進(jìn)行靈活配置油昂,例如:覆蓋安裝輸入法權(quán)重低,打字上屏權(quán)重高倾贰。
基于以上幾點(diǎn)冕碟,在搜狗手機(jī)輸入法自動(dòng)化測試中,我們設(shè)計(jì)了一種隨機(jī)自動(dòng)化的框架匆浙,與大家進(jìn)行分享安寺。
輸入法隨機(jī)自動(dòng)化測試框架圖
隨機(jī)操作穩(wěn)定性主界面
主界面主要提供的功能是:
1.配置測試時(shí)間
2.控制隨機(jī)自動(dòng)化的開始和結(jié)束
3.配置隨機(jī)動(dòng)作的權(quán)重
ProbManager概率動(dòng)作計(jì)算
假設(shè)我們要配置的動(dòng)作列表如下:
動(dòng)作名稱
權(quán)重值
起始點(diǎn)
結(jié)束點(diǎn)
Action1
20
1
20
Action2
50
21
70
Action3
5
71
75
Action4
100
76
175
通過map,記錄每個(gè)Action的起始點(diǎn)和結(jié)束點(diǎn)首尼,然后隨機(jī)函數(shù)獲取1到175(最大結(jié)束點(diǎn))的隨機(jī)數(shù)挑庶,這樣即可得到對應(yīng)權(quán)重的比例言秸。
ExecCoremanager隨機(jī)動(dòng)作執(zhí)行內(nèi)核
這部分主要有兩個(gè)功能:隨機(jī)動(dòng)作序列的執(zhí)行和反射方法調(diào)用包名下的方法
隨機(jī)動(dòng)作序列的執(zhí)行:
反射方法調(diào)用包名方法:
SogouInputUtil搜狗輸入法連接器
SogouInputUtil是連接Monkey和SogouInput鍵盤布局的連接器:
SogouInputKeybard主要專注于維護(hù)輸入法各個(gè)控件的坐標(biāo),例如拼音26鍵的qwery等按鍵的位置迎捺。
SogouInputUtil將要執(zhí)行的動(dòng)作轉(zhuǎn)換為坐標(biāo)值举畸,然后告訴給monkey模塊去執(zhí)行。
如果希望有更多復(fù)雜的隨機(jī)動(dòng)作凳枝,可以派生SogouInputUtil進(jìn)行編寫即可抄沮,例如執(zhí)行打字功能:
SogouInputKeyboard搜狗輸入法鍵盤布局
該模塊主要用于維護(hù)搜狗輸入法鍵盤各個(gè)控件的坐標(biāo)值,目前實(shí)現(xiàn)的方法是從配置文件中讀取坐標(biāo)位置:
1.配置文件保存位置:哆啦A夢assets的inputConfig目錄岖瑰。
2.配置文件的格式為:
InputDataProvider輸入法測試數(shù)據(jù)提供類
該模塊主要用于向隨機(jī)穩(wěn)定性動(dòng)作提供測試數(shù)據(jù)叛买。
讀取的數(shù)據(jù)文件位置為:哆啦A夢assets目錄下的KPITestDir/Source數(shù)據(jù),該數(shù)據(jù)內(nèi)容為線上的用戶輸入語料蹋订。