王瑩 郭昌
【摘要】 隨著近年的移動(dòng)互聯(lián)網(wǎng)發(fā)展,Android平臺(tái)應(yīng)用開發(fā)成為熱點(diǎn)。本文針對(duì)Android平臺(tái)的移動(dòng)應(yīng)用軟件開發(fā)到軟件系統(tǒng)測(cè)試之間的效率問題,提出在該平臺(tái)下移動(dòng)應(yīng)用軟件開發(fā)持續(xù)集成的項(xiàng)目代碼管理方法,實(shí)現(xiàn)自動(dòng)化測(cè)試。實(shí)踐結(jié)果表明,該方法能夠大幅度縮減測(cè)試時(shí)間,有效提升測(cè)試工作效率,減少測(cè)試工作的重復(fù)勞動(dòng)。
【關(guān)鍵詞】 Android 持續(xù)集成 自動(dòng)化測(cè)試
隨著近年的移動(dòng)互聯(lián)網(wǎng)發(fā)展,Android智能終端操作系統(tǒng),逐漸成長(zhǎng)為唯一能與iOS系統(tǒng)抗衡的對(duì)手,而其在用戶基數(shù)上還要超過iOS,因此也帶來了Android平臺(tái)的應(yīng)用開發(fā)熱潮,其相關(guān)技術(shù)也成為熱門的發(fā)展方向。
作為Android平臺(tái)的軟件開發(fā)項(xiàng)目,有著傳統(tǒng)PC軟件開發(fā)項(xiàng)目的一些共性,又有身為移動(dòng)端應(yīng)用的自身特點(diǎn)。
一、應(yīng)用軟件開發(fā)過程與自動(dòng)化持續(xù)集成的關(guān)系
移動(dòng)互聯(lián)網(wǎng)中的移動(dòng)應(yīng)用開發(fā)項(xiàng)目越來越多,而所有的項(xiàng)目都要經(jīng)歷從產(chǎn)品需求、軟件開發(fā)到交付用戶使用這一工作流程,如圖1所示。從工作流程來看,軟件測(cè)試在移動(dòng)應(yīng)用軟件開發(fā)項(xiàng)目工作流程中的作用是不可或缺的,移動(dòng)應(yīng)用軟件開發(fā)項(xiàng)目交付用戶使用過程中必須經(jīng)歷軟件系統(tǒng)測(cè)試。
我們實(shí)驗(yàn)項(xiàng)目中的持續(xù)集成由監(jiān)控的SVN代碼主干或分支的CI動(dòng)作觸發(fā),主要解決軟件開發(fā)到軟件系統(tǒng)測(cè)試之間的效率問題,追求的是開發(fā)人員和測(cè)試人員間近乎零時(shí)間開銷的交付,從而使軟件項(xiàng)目中最重要的兩個(gè)角色都能更專注自己的工作,從繁復(fù)的版本交付中出解放出來。
實(shí)現(xiàn)持續(xù)集成需要做的工作如下:1)統(tǒng)一代碼配置管理。本文的持續(xù)集成實(shí)踐,項(xiàng)目代碼管理使用的是Subversion開源版本控制系統(tǒng)。2)將開發(fā)代碼轉(zhuǎn)變?yōu)榭捎糜跍y(cè)試的APP安裝包,主要包括開發(fā)Python腳本、編譯打包、簽名、構(gòu)建安裝包這幾個(gè)重要環(huán)節(jié)。3)使用Android 提供的monkeyrunner 實(shí)現(xiàn)APP的自動(dòng)化測(cè)試。4)使用Hudson 進(jìn)行持續(xù)集成工作的管理。
二、持續(xù)集成的實(shí)現(xiàn)
2.1 Subversion的部署
SVN選擇Apache HTTP 服務(wù)器。規(guī)劃的SVN項(xiàng)目代碼的目錄結(jié)構(gòu)如圖2所示。
其中:trunk分支為項(xiàng)目持續(xù)集成分支;tags 分支為項(xiàng)目版本發(fā)布的代碼里程碑分支;branches分支為各種驗(yàn)證性及臨時(shí)代碼分支。
2.2 APP for Android 安裝包的構(gòu)建
首先配置Android開發(fā)環(huán)境,選取適當(dāng)?shù)腟DK版本;再.用Python腳本實(shí)現(xiàn):1)為項(xiàng)目源代碼建立android工程目錄;2)用Ant編譯工程目錄,根據(jù)需要產(chǎn)生Debug 或Release 安裝包;3)為Release安裝包簽名;4)對(duì)最后的安裝包進(jìn)行驗(yàn)證,來執(zhí)行自動(dòng)化整合。
三、持續(xù)集成工具---Hudson的部署
先在Ubuntu安裝Hudson,然后在Hudson中根據(jù)項(xiàng)目需求建立工程:1)實(shí)現(xiàn)對(duì)項(xiàng)目SVN版本庫的監(jiān)控,設(shè)置為開發(fā)人員代碼提交觸發(fā),使每一次的功能提交,都會(huì)有對(duì)應(yīng)的可發(fā)布狀態(tài)安裝包交付測(cè)試;2)在建立的工程項(xiàng)目中根據(jù)項(xiàng)目需求,調(diào)用自動(dòng)化腳本組,實(shí)現(xiàn)不同的持續(xù)集成需求。
四、實(shí)踐結(jié)果
上述持續(xù)集成方案應(yīng)用前后同工作量時(shí)間開銷對(duì)比如圖3所示。應(yīng)用前使用手動(dòng)操作集成,含有開發(fā)人員與測(cè)試人員溝通耗時(shí)、手動(dòng)輸入命令耗時(shí)、編寫郵件耗時(shí)、記錄及存儲(chǔ)測(cè)試包耗時(shí)等碎片時(shí)間;應(yīng)用后無碎片時(shí)間。實(shí)踐結(jié)果表明,該方法能夠有效提升測(cè)試工作效率,大幅度縮減測(cè)試時(shí)間,減少測(cè)試工作的重復(fù)勞動(dòng),更重要的是把開發(fā)人員從項(xiàng)目編譯到送交測(cè)試的活動(dòng)中解放出來,使開發(fā)和測(cè)試人員更好的專注本職工作,提高了團(tuán)隊(duì)的研發(fā)效率。
參 考 文 獻(xiàn)
[1] 宋春雨.Android平臺(tái)自動(dòng)化測(cè)試的研究與實(shí)踐[D.北京:北京郵電大學(xué),2012.
[2] 楊怡君,黃大慶.Android手機(jī)自動(dòng)化性能測(cè)試工具的研究與開發(fā)[J].計(jì)算機(jī)應(yīng)用,2012,32(2):554-556
[3] Subversion 與版本控制[EB/OL] http://svnbook.red-bean.com/