本文為作者在使用Junit做單元測(cè)試時(shí)測(cè)試計(jì)劃中的一部分,在這里共享出來(lái),希望大家多指教。
測(cè)試策略
1、 類測(cè)試階段
確保類實(shí)例滿足類的設(shè)計(jì)描述;
測(cè)試驅(qū)動(dòng):使用Junit實(shí)現(xiàn)獨(dú)立的測(cè)試類;
類的實(shí)例方法沒(méi)有和任何類交互的確保覆蓋100%;
先測(cè)試沒(méi)有交互的類,然后逐步組合測(cè)試;
使用Code Coverage工具進(jìn)行類代碼覆蓋測(cè)試;
類測(cè)試用例確定方法之一:根據(jù)前置和后置狀態(tài)確定測(cè)試用例(前置條件中可指定輸入值,包括常見值和邊界值,來(lái)增加測(cè)試用例的測(cè)試覆蓋率),根據(jù)前置和后置條件的不同組合方式產(chǎn)生不同的測(cè)試用例具體測(cè)試方法體;
類測(cè)試用例確定方法之二:根據(jù)代碼確定測(cè)試用例。所有Public聲明的方法都需要被測(cè)試(確定的);Protected和Frendly聲明的方法有所選擇的被測(cè)試(模糊的);所有Private聲明的方法都被禁止測(cè)試(確定的)。
類測(cè)試用例確定方法之三:根據(jù)狀態(tài)轉(zhuǎn)換確定測(cè)試用例。
用例命名方式:1、根據(jù)用例方法命令;2、根據(jù)前置條件和后置狀態(tài)命名。
盡量使測(cè)試代碼不依賴于數(shù)據(jù)(不要因?yàn)橥獠繑?shù)據(jù)不同而產(chǎn)生不同結(jié)果)。
進(jìn)行語(yǔ)句覆蓋率分析。
2、 功能確認(rèn)與接口測(cè)試測(cè)試階段
用例按照需求描述(軟件概要設(shè)計(jì)說(shuō)明書和詳細(xì)設(shè)計(jì)說(shuō)明書)確定,再編寫測(cè)試代碼來(lái)滿足需求描述的功能;
驗(yàn)證程序和詳細(xì)設(shè)計(jì)說(shuō)明的一致性;
功能確認(rèn)與接口測(cè)試范圍:?jiǎn)卧涌、局部?shù)據(jù)結(jié)構(gòu)、重要的執(zhí)行路徑、錯(cuò)誤處理的路徑、影響上述幾點(diǎn)的邊界條件
先是簡(jiǎn)單功能驗(yàn)證測(cè)試,通過(guò)后再進(jìn)行該功能的復(fù)合功能測(cè)試;
簡(jiǎn)單功能測(cè)試都通過(guò)則進(jìn)行條件組合搭配測(cè)試,路徑覆蓋測(cè)試;
測(cè)試邊界條件:未初始化、Null值、大小值、臨界值、初始值等;
檢驗(yàn)每個(gè)軟件單元模塊能否正確的實(shí)現(xiàn)其功能,滿足其性能和接口要求;
單元測(cè)試中測(cè)試每個(gè)單元模塊,集成測(cè)試中進(jìn)一步把單元組裝成部件并測(cè)試其正確性;
進(jìn)行邏輯覆蓋率分析。
3、 性能與效率測(cè)試階段
單個(gè)功能運(yùn)行時(shí)間分析;
選取典型測(cè)試用例使用JUnitPerf工具多線程持續(xù)運(yùn)行觀察運(yùn)行情況;
單個(gè)函數(shù)的性能分析、函數(shù)的調(diào)用頻率分析、代碼執(zhí)行頻率分析、響應(yīng)時(shí)間、并發(fā)性;
在源代碼的入口與出口進(jìn)行插樁,然后收集時(shí)間數(shù)據(jù)來(lái)測(cè)量代碼的運(yùn)行時(shí)間與調(diào)用次數(shù);
針對(duì)影響性能的代碼段作優(yōu)化處理;
4、 內(nèi)存分析
內(nèi)存分配未成功,卻使用了它
內(nèi)存分配雖然成功,但是尚未初始化引用它
內(nèi)存分配成功并且已經(jīng)初始化,但操作越過(guò)了內(nèi)存的邊界
忘記了釋放內(nèi)存,造成內(nèi)存泄露
釋放了內(nèi)存卻繼續(xù)使用它
使用全局測(cè)試工具分析(OptimizeIt,Jprobe等)