單元測試:
對(duì)軟件中的最小可測試單元進(jìn)行檢查和驗(yàn)證知给。具體的說就是開發(fā)者編寫的一小段代碼,用于檢驗(yàn)被測代碼的一個(gè)很小的臭猜、很明確的功能是否正確鹦倚。通常而言河质,一個(gè)單元測試是用于判斷某個(gè)特定條件(或者場景)下某個(gè)特定函數(shù)的行為。
集成測試:
集成測試是在單元測試的基礎(chǔ)上震叙,測試在將所有的軟件單元按照概要設(shè)計(jì)規(guī)格說明的要求組裝成模塊掀鹅、子系統(tǒng)或系統(tǒng)的過程中各部分工作是否達(dá)到或?qū)崿F(xiàn)相應(yīng)技術(shù)指標(biāo)及要求的活動(dòng)。也就是說媒楼,在集成測試之前乐尊,單元測試應(yīng)該已經(jīng)完成。這一點(diǎn)很重要匣砖,因?yàn)槿绻唤?jīng)過單元測試科吭,那么集成測試的效果將會(huì)受到很大影響昏滴,并且會(huì)大幅增加軟件單元代碼糾錯(cuò)的代價(jià)猴鲫。
系統(tǒng)測試:
將需測試的軟件,作為整個(gè)基于計(jì)算機(jī)系統(tǒng)的一個(gè)元素谣殊,與計(jì)算機(jī)硬件拂共、外設(shè)、某些支持軟件姻几、數(shù)據(jù)和人員等其他系統(tǒng)元素及環(huán)境結(jié)合在一起測試宜狐。系統(tǒng)測試的目的在于通過與系統(tǒng)的需求定義作比較势告,發(fā)現(xiàn)軟件與系統(tǒng)定義不符合或與之矛盾的地方。
鑒于有贊的測試起步較晚(應(yīng)該很多創(chuàng)業(yè)公司都有類似情況)抚恒,測試資源緊缺咱台,代碼覆蓋率低得可憐。
服務(wù)層:
所以我們的初期自動(dòng)化用例覆蓋策略是這樣的:
從老的Iron應(yīng)用的API接口作為業(yè)務(wù)場景覆蓋的切入點(diǎn)
優(yōu)先覆蓋核心業(yè)務(wù)的場景
配合系統(tǒng)拆分俭驮,優(yōu)先覆蓋拆分出去的系統(tǒng)
已拆分出去的系統(tǒng)回溺,做好系統(tǒng)服務(wù)層的測試覆蓋(全面覆蓋該服務(wù)的接口)
測試依賴的數(shù)據(jù)準(zhǔn)備優(yōu)先選擇調(diào)用系統(tǒng)接口的方式(為了增加業(yè)務(wù)覆蓋面)
測試方式逐漸從黑盒向灰盒/白盒轉(zhuǎn)變
后續(xù)我們對(duì)于Service層自動(dòng)化測試的推進(jìn)策略是:
逐漸豐富SDV層的測試用例,并且在一定程度上進(jìn)行用例依賴的系統(tǒng)的解耦混萝,比如數(shù)據(jù)構(gòu)造從調(diào)用接口向直接往數(shù)據(jù)庫寫入數(shù)據(jù)轉(zhuǎn)變遗遵。
逐漸細(xì)化拆分業(yè)務(wù)場景,做好用例的解耦逸嘀。
優(yōu)先做場景覆蓋车要,之后再考慮代碼覆蓋。
UI層:
根據(jù)我們的UI層自動(dòng)化實(shí)踐崭倘,提一下我們的UI層自動(dòng)化覆蓋的原則:
能在底層做自動(dòng)化覆蓋翼岁,就盡量不在UI層做自動(dòng)化覆蓋
只做最核心的功能的自動(dòng)化覆蓋,腳本可維護(hù)性盡可能提高
我們提高UI腳本可維護(hù)性的方法是遵循Page Object設(shè)計(jì)模式司光。
Page Object模式是為了避免在測試代碼中直接操作HTML元素登澜,對(duì)Web頁面的抽象。好處有:
減少測試代碼的冗余
提高測試代碼的可讀性和穩(wěn)定性
提高測試代碼的可維護(hù)性
持續(xù)集成
持續(xù)集成的目的:
流程自動(dòng)化飘庄,提高工作效率
最大化自動(dòng)化測試腳本的價(jià)值
我們的持續(xù)集成是基于Jenkins搭建的脑蠕,主要的動(dòng)作如下:
代碼提交自動(dòng)執(zhí)行單元測試
單元測試通過后自動(dòng)部署整體的環(huán)境
自動(dòng)執(zhí)行集成自動(dòng)化測試(Service/UI)
自動(dòng)生成構(gòu)建的詳細(xì)測試報(bào)告,同時(shí)自動(dòng)通知相關(guān)人員
持續(xù)集成所需的支撐有:
測試環(huán)境自動(dòng)部署腳本
代碼覆蓋率自動(dòng)收集
Java應(yīng)用 基于JaCoCo+Jenkins插件的方式
php應(yīng)用 通Xdebug+phpunit的方式
測試報(bào)告相關(guān)插件及腳本
代碼靜態(tài)檢查等
對(duì)于持續(xù)集成我們后續(xù)的演進(jìn)規(guī)劃是朝著持續(xù)交付和持續(xù)部署的方向努力跪削,在持續(xù)集成的基礎(chǔ)之上谴仙,自動(dòng)將代碼部署到測試環(huán)境上方便測試人員進(jìn)行手工測試。