軟件測(cè)試流程分享
,Click to edit Master title style,Edit Master text styles,Second level,Third level,Fourth level,Fifth level,2016/10/17,#,軟件測(cè)試流程分享,目 錄,整體流程,各階段質(zhì)量評(píng)審方式和標(biāo)準(zhǔn),Bug,分布,CodeReview,單元測(cè)試,測(cè)試用例設(shè)計(jì),功能測(cè)試,性能測(cè)試,異常測(cè)試,1.,整體流程,測(cè)試溝通,溝通紀(jì)要,測(cè)試設(shè)計(jì),測(cè)試設(shè)計(jì)文檔,測(cè)試執(zhí)行,測(cè)試報(bào)告,(時(shí)間軸),測(cè)試介入,線上檢查,2.,各階段質(zhì)量評(píng)審方式和標(biāo)準(zhǔn),階段,評(píng)審方式,通過標(biāo)準(zhǔn),啟動(dòng),MRD,需求設(shè)計(jì)評(píng)審,項(xiàng)目相關(guān)人員達(dá)成一致,預(yù)判能實(shí)現(xiàn)項(xiàng)目目標(biāo)。,編碼階段,CodeReview,代碼走查,核心模塊和邏輯復(fù)雜模塊走查。,單元測(cè)試,由程序開發(fā)人員完成,函數(shù)覆蓋率,90%,行覆蓋率,80%,分支覆蓋率,60%,全面測(cè)試階段,集成測(cè)試,性能測(cè)試,異常測(cè)試,場(chǎng)景化測(cè)試,與開發(fā)人員共同,review,確認(rèn)達(dá)成項(xiàng)目設(shè)計(jì)目標(biāo)。,預(yù)上線階段,線上監(jiān)控,設(shè)計(jì)災(zāi)備、預(yù)案,小流量上線,確認(rèn)穩(wěn)定性。,上線,線上回歸測(cè)試,邏輯,BUG,代碼做了錯(cuò)誤的事情,,例如條件語句寫錯(cuò),變量未賦值等,銜接,BUG,對(duì)象之間銜接時(shí)候出現(xiàn)錯(cuò)誤,,例如接口之間傳遞參數(shù)出錯(cuò)等,渲染,BUG,能夠用眼睛看出來的錯(cuò)誤,出現(xiàn)在,UI,例如頁面布局與,MRD,不一致,邏輯,銜接,渲染,出現(xiàn)概率,高,中,低,發(fā)現(xiàn)難度,難,一般,容易,修復(fù)代價(jià),高,中,低,最理想的測(cè)試方法,單元測(cè)試,接口測(cè)試,系統(tǒng)測(cè)試,3.Bug,分布,DAO,DataService,PageService,Action,模板,UT,ST,,針對(duì)渲染和銜接,BUG,IT,,針對(duì),銜接,BUG,http,請(qǐng)求,http,應(yīng)答,UT,針對(duì)邏輯,BUG,UT,UT,UT,3.Bug,分布,并非所有的類都要做,UT,4.CodeReview,何時(shí)進(jìn)行,開發(fā)人員每次提交代碼前,都應(yīng)通過本地單測(cè)并將代碼提交,team,間及測(cè)試人員,Review,,,Reveiw,通過后才能入庫。,優(yōu)點(diǎn),保持項(xiàng)目整體代碼風(fēng)格一致,團(tuán)隊(duì)間互相熟悉代碼,提前發(fā)現(xiàn)錯(cuò)誤,CodeReview,要點(diǎn),遵守代碼規(guī)范,保持項(xiàng)目整體代碼風(fēng)格一致,邏輯錯(cuò)誤,異常條件考慮不足,5.,單元測(cè)試,單元測(cè)試開發(fā)原則,短:一般在,10,行以內(nèi),平:基本上都是順序執(zhí)行,沒有分支語句,沒有循環(huán)語句,快:一個(gè)用例執(zhí)行時(shí)間在毫秒級(jí)別,一致性:測(cè)試用例多次執(zhí)行,結(jié)果一致,原子性:測(cè)試用例的執(zhí)行結(jié)果,要么是,PASS,,要么是,FAIL,獨(dú)立性:測(cè)試用例之間獨(dú)立,即測(cè)試用例的執(zhí)行順序不影響結(jié)果,單元測(cè)試架構(gòu)工具,c+,單測(cè)框架:,Gtest,c+,覆蓋率分析:,Lcov,python,單測(cè)框架:,unittest,nose,java,單測(cè)框架:,Junit,java,覆蓋率分析:,cobertura,6.,測(cè)試用例設(shè)計(jì),輸入,細(xì)化的測(cè)試需求,測(cè)試的方法,相關(guān)的資源,輸出,完成測(cè)試需求的數(shù)據(jù)設(shè)計(jì),完成測(cè)試步驟,完成測(cè)試預(yù)期,可選:標(biāo)識(shí)別用例的優(yōu)先級(jí),可選:和測(cè)試需求綁定,用例間的執(zhí)行順序,測(cè)試分類:,功能測(cè)試,性能測(cè)試,異常測(cè)試,6.1,功能測(cè)試,對(duì)產(chǎn)品的各功能進(jìn)行驗(yàn)證,檢查產(chǎn)品是否達(dá)到用戶要求的功能。,構(gòu)造輸入,(正常,/,異常),測(cè)試數(shù)據(jù)(正常數(shù)據(jù)),配置文件(正常配置),測(cè)試環(huán)境(正常環(huán)境),測(cè)試步驟,針對(duì)系統(tǒng)功能進(jìn)行驗(yàn)證,檢查輸出,數(shù)據(jù):正確性、新舊,diff,功能:正確性,針對(duì),namespace,、,database,的增刪改查功能的系統(tǒng)測(cè)試。,測(cè)試輸入,測(cè)試數(shù)據(jù):系統(tǒng)對(duì)外部數(shù)據(jù)沒有強(qiáng)依賴,測(cè)試使用數(shù)據(jù)可以進(jìn)行構(gòu)造,測(cè)試環(huán)境:?jiǎn)吸c(diǎn),server,、后臺(tái)數(shù)據(jù)庫,系統(tǒng)配置:使用線上配置,測(cè)試步驟,針對(duì),namespace,、,database,的增刪改查,及交叉功能應(yīng)用常用測(cè)試設(shè)計(jì)方法進(jìn)行測(cè)試設(shè)計(jì)。,測(cè)試輸出,檢查增刪改查的功能是否實(shí)現(xiàn),數(shù)據(jù)是否正確。,6.1,功能測(cè)試,舉例,6.2,性能測(cè)試,-,基本概念,極限性能,穩(wěn)定性能,預(yù)期負(fù)載性能,性能,壓力,常態(tài)負(fù)載,極限負(fù)載,壓力評(píng)估,通過自動(dòng)化的測(cè)試工具模擬多種正常、峰值以及,異常負(fù)載條件來對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試。,基本概念,穩(wěn)定性,壓力,負(fù)載,CPU,IO,內(nèi)存,帶寬,成功率,超時(shí)率,響應(yīng)時(shí)間,并發(fā)用戶數(shù),資源指標(biāo),產(chǎn)品指標(biāo),資源指標(biāo)與硬件消耗直接相關(guān)。,本質(zhì)反映的是成本問題。,產(chǎn)品指標(biāo)與場(chǎng)景需求直接相關(guān)。,本質(zhì)反映的是效果問題。,6.2,性能測(cè)試,關(guān)鍵指標(biāo),14,step1,分析對(duì)象設(shè)計(jì)原理,確認(rèn)資源消耗類型,確認(rèn)具體關(guān)注指標(biāo),性能測(cè)試場(chǎng)景設(shè)計(jì),架構(gòu)部署方案設(shè)計(jì),性能預(yù)期設(shè)計(jì)(穩(wěn)定、極限),壓力方案設(shè)計(jì),step2,step3,step4,step5,環(huán)境、數(shù)據(jù)與工具選擇,環(huán)境(超時(shí)、線程、日志、硬件資源等),數(shù)據(jù)(大小、讀寫方式、,cache,機(jī)制),工具選擇(線程池、連接方式、通信方式、壓力增加方式),執(zhí)行方案,執(zhí)行輪次優(yōu)化(對(duì)比方案),結(jié)果指標(biāo)分析,指標(biāo)組合判斷,性能指標(biāo)評(píng)估,瓶頸判斷,優(yōu)化方案設(shè)計(jì),6.2,性能測(cè)試,測(cè)試方案設(shè)計(jì),6.2,性能測(cè)試,舉例,消息發(fā)送平臺(tái)接口測(cè)試,測(cè)試目的:,測(cè)試線上單臺(tái)機(jī)器,消息,發(fā)送接口,的發(fā)送能力,(系統(tǒng)入口接受外部請(qǐng)求的能力),期望值:,系統(tǒng)入口:,2000QPS,,單機(jī),500QPS,(線上共四臺(tái)機(jī)器);,CUP_IDLE:30,以上。,性能測(cè)試過程:,(1),搭建性能測(cè)試環(huán)境,準(zhǔn)備線上測(cè)試機(jī)器并構(gòu)造壓測(cè)數(shù)據(jù),(2),起壓線程,從,10300,,依次增加,遇到瓶頸后,尋找臨界屆值的點(diǎn),(3),發(fā)送請(qǐng)求數(shù):隨著線程的增加,請(qǐng)求數(shù)略有增加,保證壓測(cè)時(shí)間不低于,200s,6.2,性能測(cè)試,舉例,性能測(cè)試結(jié)果分析:,線程,數(shù),總請(qǐng)求數(shù),壓測(cè)時(shí)間,s,入口平均,QPS,接口平均響應(yīng)時(shí)間,Min,響應(yīng)時(shí)間,Max,響應(yīng)時(shí)間,Err,CPU_IDLE,平均值,CPU_IDLE,最低值(,min,),備注,1,10,10w,427,234.1,42,35,474,0.00%,98.395,91,2,50,10w,92.4,1082.1,44,35,676,0.00,%,98.00,94,壓力時(shí)間太短,后續(xù)增加請(qǐng)求數(shù)。,3,100,100w,957,1044.9,94,35,2106,0.00%,98.125,95,QPS,負(fù)增長(zhǎng)。壓測(cè)時(shí)間過長(zhǎng),減少數(shù)據(jù)量。,4,100,50w,423,1181.3,83,35,1158,0.00%,98.548,95,可以繼續(xù)開大線程數(shù)嘗試。,5,200,50w,170,2934.9,65,35,1211,0.00,%,94.833,87,QPS,增長(zhǎng)明顯。,但壓測(cè)時(shí)間偏短,6,300,90w,288,3127.4,90,35,3001,0.34%,(,3056,),36.966,29,Cpu_idle,降至,28,接口部分請(qǐng)求丟失。,CPU_IDLE,也低至,30,左右。,考慮需要調(diào)低線程數(shù),減少發(fā)送頻率。,7,250,75w,244,3072.4,76,35,1375,0.00%,(7),31.960,29,發(fā)送,75w,個(gè)請(qǐng)求,丟失,7,個(gè)。錯(cuò)誤率接近,0,。,接近臨界點(diǎn)。,構(gòu)造系統(tǒng)的異常場(chǎng)景,檢查系統(tǒng)的穩(wěn)定性、正確性,構(gòu)造輸入,測(cè)試數(shù)據(jù)(異常數(shù)據(jù)),配置文件(異常配置),測(cè)試環(huán)境(異常環(huán)境:,CPU,、內(nèi)存、磁盤、網(wǎng)絡(luò)、依賴系統(tǒng)異常),測(cè)試步驟,構(gòu)造各種異常場(chǎng)景,檢查輸出,數(shù)據(jù):是否正常,是否與正常場(chǎng)景存在,diff,性能:性能是否有波動(dòng),日志:查看系統(tǒng)內(nèi)部是否走進(jìn)異常分支,異常處理是否正確,功能:是否與預(yù)期一致,6.3,異常測(cè)試,6.3,異常測(cè)試,舉例,Id,1,標(biāo)題,請(qǐng)求字段異常,步驟,構(gòu)造請(qǐng)求字段缺失、為空的情況,,,查看接口返回,。,http:/xxx/api/getrealtimeinfobyno,post,參數(shù),“flightno”:”5J110”,”token”:”12345”,預(yù)期,接口會(huì)有相應(yīng)的錯(cuò)誤提示,執(zhí)行結(jié)果,通過,1.,當(dāng),flightno,取值為空或,flightno,參數(shù)缺省時(shí),返回錯(cuò)誤碼,-1,,提示參數(shù)錯(cuò)誤,status:-1,msg:params error,2.,當(dāng),token,異常時(shí),返回錯(cuò)誤碼,-1,,提示,token,校驗(yàn)失敗,“status”:-1,“msg”:“token checksum failed”,某接口異常測(cè)試結(jié)果分析:,Q&A?,