2016中國(南京)軟件開發(fā)者大會(huì)(以下簡稱 NJSD CHINA 2016)于 2016 年4月16日在南京軟件谷楚翹城召開惦界。NJSD-CHINA大會(huì)由民間技術(shù)社區(qū)志愿者發(fā)起并組織,遵循“技術(shù)為先”的理念隆圆,探討全球最新軟件技術(shù)植酥,努力打造技術(shù)交流别渔、思想碰撞的中國公益性技術(shù)盛會(huì)。其中『無線測(cè)試技術(shù)』專題論壇由Testerhome主要?jiǎng)?chuàng)始人之一陳曄(Monkey)組織和主持惧互,為我們帶來了一場無線測(cè)試技術(shù)的干貨分享盛宴哎媚。
會(huì)議主要由五個(gè)議題組成:
- 滬江無線持續(xù)集成的解決方案(主講人:滬江教育科技資深測(cè)試工程師黃偉東)
- 無線應(yīng)用兼容性全套方案(主講人:Testin眾測(cè)測(cè)試總監(jiān)李毅)
- iOS 自動(dòng)化測(cè)試框架選型(主講人:阿里巴巴高級(jí)測(cè)試工程師陳恒捷)
- 安全專項(xiàng)測(cè)試(主講人:58趕集高級(jí)測(cè)試開發(fā)工程師錢輝)
- 云化環(huán)境中可靠性測(cè)試的自動(dòng)化技術(shù)分享(主講人:華為技術(shù)規(guī)劃工程師王朝金)
由于第五個(gè)議題不屬于無線測(cè)試的范疇,這里我將為大家介紹前面四個(gè)議題的核心內(nèi)容喊儡。
黃偉東:滬江無線持續(xù)集成的解決方案
滬江無線有多款無線應(yīng)用拨与,面臨很多質(zhì)量問題,比如線上奔潰率高艾猜,開發(fā)提測(cè)質(zhì)量差买喧,測(cè)試回歸耗費(fèi)時(shí)間長等問題。為了提高測(cè)試質(zhì)量和測(cè)試效率匆赃,大東所在團(tuán)隊(duì)搭建了一套持續(xù)集成的質(zhì)量保障體系淤毛。本次大東老師為我們介紹這套體系包括哪些解決方案以及落地實(shí)施的情況。
什么是持續(xù)集成算柳?
持續(xù)集成是指通過自動(dòng)化等手段高頻率地去獲取產(chǎn)品反饋并響應(yīng)反饋的過程
集成什么低淡?
- 編譯,自動(dòng)化拉取代碼編譯
- 單元測(cè)試,滬江的單元測(cè)試全部由開發(fā)來完成
- 打包蔗蹋,同時(shí)提供Debug包和Release包
- 自動(dòng)化測(cè)試作為冒煙和回歸測(cè)試
持續(xù)集成可以發(fā)現(xiàn)哪些問題
- 編譯問題何荚,比如代碼無法編譯成功,提醒開發(fā)及時(shí)修復(fù)
- 安裝問題猪杭,打出來的包無法安裝餐塘,應(yīng)該直接打回
- App頁面可達(dá)性,關(guān)鍵業(yè)務(wù)都無法跑通皂吮,也應(yīng)該直接打回
- 專項(xiàng)指標(biāo)戒傻,包括性能,穩(wěn)定性等
持續(xù)集成流程
- 自動(dòng)構(gòu)建
- Apk掃描
- 自動(dòng)化測(cè)試
- 專項(xiàng)掃描
- 報(bào)告聚合及產(chǎn)品交付
持續(xù)集成的實(shí)現(xiàn)方案
編譯打包
- Android采用Gradle方式編譯蜂筹,通過Maven進(jìn)行包依賴管理稠鼻,同時(shí)產(chǎn)出Debug-apk和Release-apk
- iOS采用Xcode編譯,用Cocoapods進(jìn)行包依賴管理狂票,同時(shí)產(chǎn)出Debug-ipa和Release-ipa候齿、Debug-app
Apk掃描
- 靜態(tài)掃描:反編譯、字符串掃描
- 包大小檢查:包大小信息闺属、歷史包大小對(duì)比慌盯、與其他產(chǎn)品包大小對(duì)比
自動(dòng)化測(cè)試(選取Appium)
自動(dòng)化框架的特性:
- 兼容多類App(Android,iOS掂器,H5)
- 兼容多類設(shè)備
- 支持并發(fā)測(cè)試
自動(dòng)化測(cè)試流程:
專項(xiàng)指標(biāo)測(cè)試
測(cè)試哪些專項(xiàng)指標(biāo):
- Apk包大小檢測(cè)
- 啟動(dòng)時(shí)間
- 穩(wěn)定性測(cè)試
- 產(chǎn)品對(duì)比
- 性能測(cè)試:通過AOP埋點(diǎn)的方式實(shí)現(xiàn)程序內(nèi)部性能數(shù)據(jù)的收集亚皂,并隨BI數(shù)據(jù)一起上報(bào),平臺(tái)根據(jù)數(shù)據(jù)進(jìn)行性能分析
李毅:無線應(yīng)用兼容性全套方案
我們的測(cè)試人員在線下已經(jīng)盡可能去覆蓋所有功能點(diǎn)国瓮,但上線之后還是經(jīng)常會(huì)遇到一些令人頭疼的問題灭必,比如迭代速度緩慢,線上故障嚴(yán)重乃摹,測(cè)試資源不足禁漓,用戶投訴頻繁。這些問題其實(shí)歸根到底都是兼容性的問題孵睬,兼容性問題主要體現(xiàn)在手機(jī)種類多樣化和用戶場景多樣化兩大方面播歼。
傳統(tǒng)的兼容性測(cè)試是獨(dú)立的個(gè)體,我們的測(cè)試人員只是憑靠個(gè)人的力量去覆蓋一些網(wǎng)絡(luò)掰读、終端秘狞、地域、軟件蹈集、數(shù)據(jù)烁试、體驗(yàn)等類型的兼容性。這當(dāng)然是有局限性的拢肆,應(yīng)用上線后也無法滿足所有用戶的需求减响。因此靖诗,現(xiàn)階段我們提出了實(shí)施全面兼容的方案。主要從兩大方面去實(shí)現(xiàn):主動(dòng)式覆蓋和被動(dòng)式覆蓋辩蛋。主動(dòng)式兼容性測(cè)試的手段包括灰度發(fā)布和眾測(cè)等呻畸,被動(dòng)式兼容性測(cè)試的手段包括應(yīng)用埋點(diǎn)移盆,APM等悼院。
主動(dòng)式測(cè)試
我們先介紹下主動(dòng)式測(cè)試的實(shí)現(xiàn)方案,分為三部曲:測(cè)試籌劃咒循,測(cè)試執(zhí)行和測(cè)試分析据途。這主動(dòng)式測(cè)試三部曲的實(shí)施步驟是怎樣的呢?
其中測(cè)試籌劃的主要步驟是:
- 規(guī)劃被測(cè)試場景叙甸,比如要覆蓋哪些網(wǎng)絡(luò)颖医,覆蓋哪些地點(diǎn),針對(duì)哪些功能
- 確認(rèn)測(cè)試策略裆蒸,確定好是要進(jìn)行用戶體驗(yàn)測(cè)試呢熔萧,還是進(jìn)行終端兼容性測(cè)試,甚至是給產(chǎn)品找茬
- 開啟人群劃分僚祷,要確定好測(cè)試人數(shù)要求佛致,測(cè)試人群的類型
接下來測(cè)試執(zhí)行的主要步驟是:
- 測(cè)試任務(wù)發(fā)布,比如確定好任務(wù)時(shí)間周期辙谜,系統(tǒng)要求和任務(wù)描述
- 測(cè)試結(jié)果收集俺榆,一般是通過問題報(bào)告,日志數(shù)據(jù)装哆,截圖或者視頻的方式收集
- 測(cè)試任務(wù)把控罐脊,這個(gè)環(huán)節(jié)比較靈活,可以是通過問題溝通或者進(jìn)度匯報(bào)的方式來把控蜕琴。
最后是測(cè)試分析:
測(cè)試分析是基于測(cè)試執(zhí)行收集的測(cè)試結(jié)果萍桌,主要分析的類型有:硬件性能,頁面凌简,瀏覽器梗夸,應(yīng)用服務(wù)器,網(wǎng)絡(luò)等号醉。
被動(dòng)式測(cè)試
那么被動(dòng)式測(cè)試的實(shí)現(xiàn)方案又是怎樣的呢反症,也可以分為三部曲:網(wǎng)絡(luò)監(jiān)控,性能分析畔派,奔潰&異常铅碍。
首先我們介紹下被動(dòng)式網(wǎng)絡(luò)監(jiān)測(cè),主要監(jiān)測(cè)的數(shù)據(jù)有:響應(yīng)時(shí)間线椰,HTTP錯(cuò)誤率胞谈,RPM,數(shù)據(jù)量,運(yùn)營商烦绳,機(jī)型卿捎,URL等,從而跟蹤HTTP連接径密,發(fā)現(xiàn)第三方SDK和API午阵,跟蹤網(wǎng)絡(luò)響應(yīng)趨勢(shì)。
然后我們看下性能分析要關(guān)注哪些點(diǎn)享扔,主要是I/O底桂,網(wǎng)絡(luò)響應(yīng)時(shí)間,Webview惧眠,CPU籽懦,內(nèi)存等,通過這些數(shù)據(jù)來跟蹤真實(shí)用戶性能體驗(yàn)氛魁,精確分析性能瓶頸暮顺,追蹤慢交互。
最后是奔潰&異常秀存,Android奔潰可以通過UncaughtExceptionHandler來捕獲捶码,要注意的是,Android的奔潰日志只能被捕獲一次应又,如果你的應(yīng)用中有多個(gè)收集線程宙项,可能只有一個(gè)會(huì)生效。iOS也有類似的捕獲機(jī)制株扛,NSSetUncaughtExceptionHandler這個(gè)類可以實(shí)現(xiàn)奔潰日志的捕獲尤筐。
具體實(shí)施方案
- 自研兼容性測(cè)試平臺(tái)
- 引入第三方服務(wù)
- 內(nèi)部&外部灰度測(cè)試
陳恒捷:iOS 自動(dòng)化測(cè)試框架選型
自動(dòng)化一直被認(rèn)為是測(cè)試人員的一項(xiàng)基本素質(zhì),但真正要做好自動(dòng)化測(cè)試并不是一件簡單的事情洞就。恒捷先講述了自動(dòng)化測(cè)試的目的盆繁,然后對(duì)iOS常用測(cè)試框架進(jìn)行了對(duì)比分析,最后結(jié)合實(shí)例講述如何進(jìn)行選型旬蟋。
自動(dòng)化測(cè)試的目的
我們引入自動(dòng)化測(cè)試的目的當(dāng)然是為了降低成本油昂,但自動(dòng)化測(cè)試本身也是有成本的:用例編寫成本,用例維護(hù)成本,腳本調(diào)試成本,查錯(cuò)成本藕赞。如果自動(dòng)化測(cè)試的成本要大于不引入自動(dòng)化測(cè)試的成本草慧,那么我們完全沒必要去做自動(dòng)化測(cè)試准颓。因此,我們做自動(dòng)化測(cè)試的第一步是要科學(xué)降低成本。通過經(jīng)典的測(cè)試金字塔,我們可以看到理想的測(cè)試分為三個(gè)階段挑庶,從下到上分別是:單元測(cè)試言秸,模塊級(jí)測(cè)試,UI測(cè)試迎捺。我們可以根據(jù)具體的測(cè)試點(diǎn)來選擇最佳的測(cè)試方式举畸。比如對(duì)于適合最單元測(cè)試的場景,我們就需要選擇一個(gè)單元測(cè)試框架來做自動(dòng)化凳枝。
iOS有哪些自動(dòng)化測(cè)試框架
- UIAutomation抄沮,最早點(diǎn),蘋果官方推出的針對(duì)UI的自動(dòng)化測(cè)試工具范舀,相關(guān)框架有Tuneup和Appium
- XCTest/XCUITest合是,蘋果在Xcode5加入的單元測(cè)試框架了罪,XCUITest是Xcode7推出的基于XCTest的UI自動(dòng)化測(cè)試框架锭环,其他相關(guān)框架有基于私有API的KIF,Google最近推出的EarlGrey
- 注入編譯型泊藕,通過在應(yīng)用中插碼控制應(yīng)用操作辅辩。添加到應(yīng)用功能的部分多以agent形式存在。相關(guān)框架有calabash-ios和Frank
- 另類方法娃圆,比如坐標(biāo)系+圖像識(shí)別的方式玫锋,相關(guān)框架有TouchElf(觸摸精靈),不過該框架需要越獄
各測(cè)試階段適合哪些框架
- 單元測(cè)試:XCTest
- 客戶端功能測(cè)試:KIF,XCUITest,Earlgrey
- 冒煙測(cè)試:Appium和Calabash-ios
- 回歸測(cè)試:同上
錢輝:安全專項(xiàng)測(cè)試
安全測(cè)試是測(cè)試過程中的一個(gè)重要環(huán)節(jié)讼呢,隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展撩鹿,移動(dòng)端安全問題也越來越多地暴露出來,尤其是對(duì)于Android這樣一個(gè)開源系統(tǒng)而言悦屏,安全問題更加容易出現(xiàn)节沦。因此,我需要有特定的測(cè)試手段來提前發(fā)現(xiàn)應(yīng)用中的安全風(fēng)險(xiǎn)础爬,并采取措施規(guī)避甫贯。錢輝的講座主要介紹了四個(gè)方面的內(nèi)容:App有哪些安全漏洞,如何檢測(cè)安全漏洞看蚜,漏洞有什么危害叫搁,如何修復(fù)這些漏洞。
App有哪些安全漏洞
- 反編譯供炎,一般的攻擊方式是使用apktool工具來反編譯出源碼文件渴逻,篡改后重新打包,偽裝Apk音诫。因此一般的檢測(cè)點(diǎn)有:是否可以被反編譯惨奕,二次打包,重新安裝纽竣。
- 權(quán)限掃描墓贿,主要是掃描出所有的權(quán)限的使用情況茧泪,然后定位出使用權(quán)限的代碼
- 應(yīng)用組件掃描,檢測(cè)點(diǎn)有:Activity安全聋袋,Service安全队伟,Broadcast Receiver安全,Content Provider安全幽勒,Intent安全等
- 本地?cái)?shù)據(jù)存儲(chǔ)嗜侮,檢測(cè)點(diǎn)有:本地?cái)?shù)據(jù)敏感信息,本地?cái)?shù)據(jù)防篡改啥容。
- Logcat日志風(fēng)險(xiǎn)控制锈颗,主要檢測(cè)調(diào)試信息和敏感信息
- Xposed獲取用戶信息,是否存在Xposed組件獲取用戶名和密碼的風(fēng)險(xiǎn)
- 配置信息風(fēng)險(xiǎn)咪惠,主要有兩個(gè):allowBackup和debuggable
檢測(cè)方式
- 開放平臺(tái)檢測(cè)
- 安全團(tuán)隊(duì)人工審計(jì)
安全團(tuán)隊(duì)要做的事情:一個(gè)測(cè)試點(diǎn)的確定要經(jīng)過反復(fù)的論證击吱,實(shí)踐,要不斷的學(xué)習(xí)了解新興的漏洞遥昧,及時(shí)補(bǔ)充你的測(cè)試點(diǎn)覆醇。