測試技能-周二單元測試_第1頁
測試技能-周二單元測試_第2頁
測試技能-周二單元測試_第3頁
測試技能-周二單元測試_第4頁
測試技能-周二單元測試_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

。360企業(yè)管理信息化解決方案提供商日期:賽意信息科

白金級合作伙1 122334重4重點:單元測試發(fā)現(xiàn)的常見問題,單元測試用例設計方什么是單元測試單元測試是對軟什么是單單元具有一些基本屬性,如:明確的功能、規(guī)格定義,他單元劃分基本單元不一定是指一個具體的函數(shù)(functionprocedure)或 個類的方法在具體實現(xiàn)時,也可能對應的是多個程序文件中的一組函數(shù)1.單元測試的目需求和設計的實現(xiàn)3.發(fā)現(xiàn)設計和需求中存在的錯誤4.詳細設編編詳細設編編譯調(diào)檢單元單元測試計劃,用例設計,檢視,環(huán)境準備缺與解單元測試主要活完成測試計劃和方案(計劃、設計階段計劃總的方法、資源和進確定被測特優(yōu)化總的計獲取測試集(實現(xiàn)階段設計測試完成改進的計劃和設度量測試單元(執(zhí)行和總結階段 試規(guī)檢查結束條評價測試工作和單測試對象有區(qū)個具體單元模塊的邏輯結構和功能是里不同模塊往往是分配給不同的開發(fā)單元測試使問題及早,也便于問題的112334測試對在一種傳統(tǒng)的結構化編程語言中,比如C,要進 試的單元一般是函數(shù)或子過程。在類似+這樣的面向?qū)ο蟮恼Z言中,要進 試的基本單元是類或類的方法。單單元測試的主要內(nèi)模//若改為如//若改為如下,則更好些voidsum_data(unsignedintnum,int*data,int*sum{unsignedintcountintsum_temp=for(count=0;count<num;count{sum_temp+= }*sum=}這樣防止返回的sum值在執(zhí)行過程中被其他函 導致數(shù)據(jù)不一致模塊接//約//約束條件是不如分為如下兩intadd(inta,intb{return(a+}intintsub(inta,intb{return(a–}}}11、如Unsignedinta;那么不為負,果用a是否<0判斷循環(huán)結束2、int*a;a的值是不可知的,如果直接利用會問題:*a=0;可能會出現(xiàn)不可預知錯誤3、inta=65536;會導致a實際為0;例如把作為256賦給a等等4、MaxNum1寫成MaxNum2等5、inta;floatba=b會導致精局部數(shù)據(jù)結獨立路1、例如+、-的優(yōu)先級高于>><<那么ab+c2;代碼相當于ab+c)/4;而不是ab+c/4;2、a=b++;本來考慮的是3、unsignedintaintbwhile(a>b)就兩種容易死循環(huán)5、如for(i=0;i<101;i++)本來想循環(huán)100次,結循環(huán)了1016、7、將if(a==1)寫成9、while(i){循環(huán)體中錯誤的修改i的值誤出錯處出錯的描述難以理解原因顯示的錯誤與實際的錯誤不符對錯誤條件的處理不正確系統(tǒng)的干等邊界處在n次循環(huán)的n次,取最大最小值時容特別要注意數(shù)據(jù)流,控制流中剛好等于、大于、小于確定的比較值時出現(xiàn)錯誤的可能性。者用測試來發(fā)現(xiàn)軟件中所以的問題。盡早發(fā)現(xiàn)代碼中的Bug,可大大縮小后期查找Bug的工作及時改正代碼中的Bug,可大大縮小后期改正Bug的代許多后期出現(xiàn)的重大問題,往往是單元測試階段就該發(fā)現(xiàn)而未被發(fā)現(xiàn)低級錯1,內(nèi)存相關問題。在C語言中最重要的問題就是要記得時刻關注內(nèi)及時釋放,否則會發(fā)生內(nèi) (見例子,補充知識:c語言5大內(nèi)在c用fr來釋放內(nèi)存,但是也不要多次釋放同一內(nèi)存。這里我總結了一些經(jīng)驗,既可以避免內(nèi)存 ,也可以避免重復。c,mcfr成對存在;c中ew和成對存在”。在lnx中,要養(yǎng)成經(jīng)常用fre來查看內(nèi)存使用情況以及用s來查看進程的良好 。是否可能出現(xiàn)越界問題,在函數(shù)中我們經(jīng)fo循環(huán)操作數(shù)組,很可能出現(xiàn)越3,函數(shù)中經(jīng)常會有一些相對復雜的判斷條>,<,==,>=,<=,!=)以及單目運算符中的--的組合運算(注意++a和a++的區(qū)別4,變量初始化問這個最典型的例子就是指針了指針變量時,c語言并不會自動對其進行初始化,這時,指針變量值是cccccccc此時,通過指針間接 所指的內(nèi)存區(qū)域是十分的,該內(nèi)存區(qū)域不可寫intnum= =對于無處可指的指針變量,也要將其初始化為null(即0,空指針int*p=以我當年開發(fā)的經(jīng)驗之談:定義一個變量時,最好對其初始化,養(yǎng)成個良好 例如:inta=0; inta[3]={0}; int*p=NULL;等,這樣可以避免很多5,函數(shù)的一些重要關注break和continue函數(shù)的區(qū)別(這個問題很多人容 或 候注要一時變量(這個問題很多開發(fā)多年的人也容易出錯,當年我開發(fā)時出現(xiàn)這種問題,當時 項目經(jīng)理幫我 問題的原因了,見例子)單元測試發(fā)現(xiàn)的常見問6,協(xié)議問#definepi3.14棧,隊列,鏈表的使9,linux下打包壓縮和解壓時出現(xiàn)錯誤,拷貝文件 時出現(xiàn)錯誤tar cpa.c cp-r 10,運算符優(yōu)先級的問單目運算符>算數(shù)運算符>關系運算符>邏輯運算自頂向下的單元測試策方法優(yōu)點缺點總結

先對最頂層的單元進試,把頂層所調(diào)用的單元做成樁模塊。其次對第二層進試,使用上面已測試的單在集成測試前提供系統(tǒng)早期的集成途徑。由頂向下單元測試策略在執(zhí)行上同詳細設計的順序一致單元測試被樁模塊控制,隨著單元一個一個被測試,測試過程將變得越來越復雜,并且開發(fā)和的成本將增加。該策略比基于孤立單元測試的成本要高很多。不是單元測試的一個好的選擇。但是如果單元都已經(jīng)被獨立測試過了,可以使用該方法。自底向上的單元測試策方法優(yōu)點缺點

先對模塊調(diào)用層次圖上最低層的模塊進行單元測試,模擬調(diào)用該模塊的模塊做驅(qū)動模塊。然后再對上面一層做單元測試,用下面已被測試過的模塊做樁模塊。以此類推,直到測試完所有模塊。在集成測試前提供系統(tǒng)早期的集成途徑。不需要樁模塊隨著單元一個一個被測試,測試過程將變得越來越復雜,開發(fā)和的成本將增加。并且測試層次越到頂層,結構覆蓋率就越難達到??偨Y 該策略是一個比較合理的單元測試策略,尤其當需要慮到對象或復用的時候,但測試周期較長孤立的測試策方法

不考慮每個模塊與其他模塊之間的關系,為每個模塊設樁模塊和驅(qū)動模塊。每個模塊進行獨立的單元測試優(yōu)點缺點總結

該方法是最簡單,最容易操作的。可以達到高的結構覆蓋率。該方法是純粹的單元測試,上面兩種策略是單元測試同集成階段的混合。不提供一種系統(tǒng)早期的集成途徑該方法是最好的單元測試策略。如果輔助以集成測試策略,將可以縮短整個軟件開發(fā)周期。112334專項測試:對容易出錯的異常處理 一,為運行起來而設計用1道測試環(huán)境和被測單元是可用3,如果不能夠執(zhí)行起來,那么最好重新調(diào),也就是說還不具備開始測試的條單元測試用例設計思二,為正向測試設計用1,測試用例的設計者應該通讀相關的設計說明,每一個測試用例就對測試說 一項或多項內(nèi)容來設計2,正向測試的用例就是驗證設計說明書所對應的功能項或性能指標實三,為逆向測試設計用1,逆向測試的用例就是用來驗證被測的軟件單元有沒有做它不應該事2,此步驟主要依靠錯誤猜測的方法 試用例的構單元測試用例設計思四,為滿足特殊需求而設計用1,從系統(tǒng)的性能,安全性 性的角度來設計測試用例也是有必要2,尤其是對于安全 要求比較高的系統(tǒng),在測試方案中,特別標用來進行安全 驗證的測試用例是有好處五,為漏測語句而設計用1,設計好的測試用例是可以保證較高的代碼覆2,在被測代碼中,可能包含復雜的判斷條件,循環(huán)以及分支語句在 試用例的過程中,覆蓋率的目標可能無法達3,在這種情況發(fā)生時,有必要分析為什么會導致覆蓋率目標沒有達一般的原因如下不可能的條件或路徑充分的測試用注意:大多數(shù)有效的測試用例都來自于分析,而不是僅僅為了達到測覆蓋率目標而草草設計測試用單元測試用例設計思路(總結為逆向測試而測試用例黑盒設計方法1,功能測試(規(guī)格導出2,等價類測3,邊界值測4,錯誤推白盒設計方法1,語句覆2,判斷覆3,條件覆4,條件判斷覆5,路徑覆6,循環(huán)處舉例:求實數(shù)的平方根 輸入:實 輸出:實測試用例輸入4,輸出2。對應規(guī)格中的第一句陳測試用例輸入-10,返回0,輸出“平方 ——輸入值小于0”。對應規(guī)格中第二句陳單元測試方法之等價類劃 單元測試方法之邊界值分 測試用例2:輸入“恰比0小”,返回0,輸出“平方根錯誤— 負值輸入單元測試方法之錯誤推斷。inttest(intA,intB,int{intx=x=x/A;return}單元測試方法之判斷覆判斷覆蓋:程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次,判斷覆蓋又叫分支覆蓋inttest(intA,intB,int{intx=c;x=x/A;return}要用兩個測試用例(黑線缺點:假如第二個判斷中的條x>1錯寫成了x<1,利用上面2組單元測試方法之條件覆inttest(intA,intB,int{intx=x=x/A;return}(1,0,3) 單元測試方法之條件判斷覆條件判斷覆蓋:設計的測試用例,既滿足條件覆蓋,又滿足分支覆蓋inttest(intA,intB,int{intx=x=x/A;return}可用測試用例(2,0,4)(黑線單元測試方 徑覆inttest(intA,intB,int{intx=c;x=x/A;return}單元測試方 徑覆見例子(程序在下方分析程序,得到控制流圖路徑1:4–14路徑2:467路徑3:46810134路徑4:46811134路徑1:414輸入數(shù)據(jù):whileNo0路徑2:4–6–7– 輸入數(shù)據(jù):whileNo=1,tp=路徑3:46–810–134–輸入數(shù)據(jù):whileNo1,tp1路徑4:46811134– 預期結果例子

單元測試方法之循環(huán)處i為輸入值,取值范圍為正整iNum //GetNum()的取值范圍為{}可以構造以下測試用例1,跳出循 2,通過循環(huán)1次iNum=1;3,通過循環(huán)m次iNum=m;4,通過循環(huán)最大次數(shù)-1,最大次 再舉一例子(下方112334常用的單元測試工代碼靜態(tài)分析工具:Logiscope,McCabe等測 工

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論