一猾漫、什么是持續(xù)集成?
(1)Continuous integration(CI)
持續(xù)集成是一種軟件開發(fā)實(shí)踐运提,即團(tuán)隊(duì)開發(fā)成員經(jīng)常集成他們的工作鳍寂,通常每個(gè)成員至少集成一次改含,也就意味著每天可能會(huì)發(fā)生多次集成。每次集成都通過自動(dòng)化的構(gòu)建(包括編譯迄汛,發(fā)布捍壤,自動(dòng)化測(cè)試)來驗(yàn)證,從而盡快地發(fā)現(xiàn)集成錯(cuò)誤鞍爱。許多團(tuán)隊(duì)發(fā)現(xiàn)這個(gè)過程可以大大減少集成的問題鹃觉,讓團(tuán)隊(duì)能夠更快的開發(fā)內(nèi)聚的軟件。而jenkins就是持續(xù)集成其中的工具之一睹逃。
(2)monkey與Jenkins千絲萬縷
身為一個(gè)測(cè)試人員我們最常用的集成工具就是jenkins了盗扇,而monkey這款工具我們也常常用來檢測(cè)做app的冒煙測(cè)試和穩(wěn)定性測(cè)試,如何我們將寫好的monkey的腳本與jenkins結(jié)合沉填,讓jenkins來管理我們的monkey的測(cè)試腳本疗隶,以及設(shè)定定時(shí)任務(wù),那我我們就可以在jenkins設(shè)置定時(shí)任務(wù)翼闹,自動(dòng)去檢驗(yàn)app的穩(wěn)定性抽减,自動(dòng)將錯(cuò)誤信息通過集成郵件的方式,發(fā)送給開發(fā)人員橄碾。這樣可以大大節(jié)省測(cè)試時(shí)間以及提高測(cè)試效率。
(3)在jenkins進(jìn)行真機(jī)的配置
很多情況下我們選擇真機(jī)做monkey測(cè)試颠锉,結(jié)果更加可靠法牲。下面,我們看一下如何用jenkins搭配真機(jī)進(jìn)行monkey測(cè)試琼掠。在配置jenkins之前拒垃,我們需要確保PC端已經(jīng)配置好了android adb的環(huán)境變量。
定時(shí)任務(wù)的設(shè)置
一瓷蛙、定時(shí)構(gòu)建語法
* * * * *
(五顆星悼瓮,中間用空格隔開)
第一顆*表示分鐘戈毒,取值0~59
第二顆*表示小時(shí),取值0~23
第三顆*表示一個(gè)月的第幾天横堡,取值1~31
第四顆*表示第幾月埋市,取值1~12
第五顆*表示一周中的第幾天,取值0~7命贴,其中0和7代表的都是周日
1.每30分鐘構(gòu)建一次:
H/30 * * * *
2.每2個(gè)小時(shí)構(gòu)建一次
H H/2 * * *
3.每天早上8點(diǎn)構(gòu)建一次
0 8 * * *
4.每天的8點(diǎn)道宅,12點(diǎn),22點(diǎn)胸蛛,一天構(gòu)建3次
0 8,12,22 * * *
在jenkins構(gòu)建的案例
參數(shù)化構(gòu)建
由于monkey測(cè)試需要進(jìn)行一系列參數(shù)配置污茵,所以我們可以在jenkins的General中配置一些構(gòu)建過程中需要使用的參數(shù)。例如葬项,monkey運(yùn)行的參數(shù)evencount,seed泞当,hrottle, pct-touch民珍, pct-motion 襟士,pct-appswitch ,pct-rotation都可以在此進(jìn)行輸入配置穷缤,可以更加靈活的控制monkey測(cè)試敌蜂。
構(gòu)建
采用真機(jī)進(jìn)行monkey測(cè)試,需要通過adb命令來啟動(dòng)monkey測(cè)試津肛。所以需要在構(gòu)建步驟中增加execute shell選項(xiàng)章喉。然后在選項(xiàng)中,添加執(zhí)行monkey測(cè)試的腳本身坐。腳本主要執(zhí)行兩項(xiàng)任務(wù)秸脱,首先將構(gòu)建的包安裝到手機(jī)端,然后啟動(dòng)monkey測(cè)試部蛇。腳本中可以使用前面配置的參數(shù)摊唇,這樣方便測(cè)試者依據(jù)不同的測(cè)試需求,構(gòu)建不同的測(cè)試任務(wù)涯鲁。
命令行執(zhí)行monkey測(cè)試巷查,基本語法:
adb shell monkey [options] <event-count>
event-count: 為必選參數(shù),用于指定monkey測(cè)試過程中模擬的用戶事件數(shù)量抹腿。
[options]主要參數(shù)如下:
-p packageName :該參數(shù)指定需要執(zhí)行monkey測(cè)試的包名岛请。如果需要測(cè)試多個(gè)包,需要添加多個(gè)-p參數(shù)警绩,每個(gè)參數(shù)后帶一個(gè)包名崇败。
-s seed :該參數(shù)指定偽隨機(jī)生成器的seed值。
-v: 指定monkey測(cè)試結(jié)果中輸出log信息的詳細(xì)程度,總共分為三個(gè)級(jí)別后室。默認(rèn)級(jí)別是0:-v缩膝,測(cè)試結(jié)果中只包含啟動(dòng)信息,測(cè)試完成信息和最終結(jié)果信息岸霹。級(jí)別2:-v -v疾层,打印測(cè)試過程中執(zhí)行的一些信息,如模擬的用戶點(diǎn)擊事件松申。級(jí)別3:-v -v -v云芦,打印最詳細(xì)的信息。
--hprof:在事件序列前后立即生成profiliing? report?
--throttle milliseconds:指定monkey模擬事件的前后間隔時(shí)間贸桶。通過這個(gè)選項(xiàng)可以減緩monkey的執(zhí)行速度舅逸。如果不指定該選項(xiàng),monkey模擬事件將會(huì)持續(xù)執(zhí)行皇筛,事件間不會(huì)有停頓琉历。
<percent>--pct-touch:后面接觸摸事件百分比
<percent>--pct-motion:調(diào)整手勢(shì)事件百分比
<percent>--pct-appswitch:后面接應(yīng)用啟動(dòng)事件百分比
<percent>--pct-rotation 后面接屏幕旋轉(zhuǎn)事件的比例值
--ignore-crashes: 該參數(shù)指定monkey測(cè)試過程中是否忽略crash。如果設(shè)置了該參數(shù)水醋,測(cè)試過程中如果發(fā)生了crash旗笔,monkey測(cè)試會(huì)繼續(xù)執(zhí)行。否則測(cè)試過程中遇到crash拄踪,停止測(cè)試蝇恶。
--ignore-timeouts:該參數(shù)指定monkey測(cè)試過程中忽略ANR。如果測(cè)試過程中出現(xiàn)了ANR惶桐,將忽略此現(xiàn)象撮弧,繼續(xù)執(zhí)行monkey測(cè)試。
-ignore-security-exceptions:在設(shè)置此選項(xiàng)后姚糊,當(dāng)應(yīng)用程序發(fā)生任何權(quán)限錯(cuò)誤(如啟動(dòng)一個(gè)需要某些權(quán)限的Activity)時(shí)贿衍,monkey將繼續(xù)運(yùn)行直到計(jì)數(shù)完成。如果不設(shè)置此選項(xiàng)救恨,monkey遇到此類權(quán)限錯(cuò)誤將停止運(yùn)行贸辈。
測(cè)試小結(jié)
jenkins與monkey結(jié)合能大大提高了測(cè)試的效率,其實(shí)還可以結(jié)合python肠槽,來統(tǒng)計(jì)app內(nèi)存泄漏擎淤,耗電測(cè)試,cpu的利用率等等問題秸仙。