摘要:與傳統(tǒng)單元測試不同,面向?qū)ο蟮膯卧獪y試關(guān)注于設(shè)計適當(dāng)?shù)牟僮餍蛄幸詸z查類的狀態(tài)。面向?qū)ο筌浖募蓽y試主要采用基于使用的測試策略來進行。
目錄
本關(guān)任務(wù):根據(jù)所學(xué)知識,完成右側(cè)的選擇題。
為了完成本關(guān)任務(wù),你需要掌握面向?qū)ο蟮膯卧獪y試。
單元的意思已經(jīng)發(fā)生改變
當(dāng)考慮面向?qū)ο蟮能浖r,單元的概念就發(fā)生了改變。因為傳統(tǒng)面向過程的軟件中最小單位是模塊,所以此時單元指的是模塊。而面向?qū)ο蟮能浖械淖钚挝皇穷惡蛯ο?,所以這個時候單元指的是類和對象。
而且在測試面向?qū)ο筌浖r,不能再孤立地測試單個操作,而應(yīng)該把操作作為類的一部分來測試。
例如,假設(shè)有一個類層次,X
函數(shù)在其父類中有定義,并且被一組子類繼承了下來,而且每個子類都會使用x
函數(shù)。但是X
函數(shù)會調(diào)用子類中定義的操作并處理子類的私有變量。這個時候你若用單元測試的方式來測的話,會發(fā)現(xiàn)無從下手。
看起來這么復(fù)雜的一個類層次,其實在面向?qū)ο蟮能浖斜缺冉允?。由于在不同的子類中使?code>X函數(shù)的環(huán)境有微妙的差別,因此有必要在每個子類的語境中測試X
函數(shù)。這就說明,當(dāng)測試面向?qū)ο筌浖r,傳統(tǒng)的單元測試方法是不適用的,不能再孤立地測試單個函數(shù)。
目前,面向?qū)ο筌浖臏y試用例的設(shè)計方法還處于研究和發(fā)展階段。與傳統(tǒng)單元測試不同,面向?qū)ο蟮膯卧獪y試關(guān)注于設(shè)計適當(dāng)?shù)牟僮餍蛄幸詸z查類的狀態(tài)。
測試單個類的方法主要有隨機測試和劃分測試兩種。
下面通過銀行系統(tǒng)的例子,來簡要說明這種測試方法。該系統(tǒng)的account
(賬戶)類有這些函數(shù):open
(打開)、deposit
(存款)、withdraw
(取款)、balance
(余額)、summarize
(清單)、creditLimit
(透支限額)和close
(關(guān)閉)。
很明顯,只要是account
類的對象就都能使用這些函數(shù)。但是,使用這些函數(shù)時也會有一些限制。例如,必須在打開賬戶之后才能關(guān)閉賬戶。
即使有這樣或者那樣的限制,但合理使用函數(shù)的序列還是會有很多種例如:open->deposit->close
、open->deposit->withdraw->close
、open->summarize->creditLimit->withdraw->close
等。
這些序列其實就是用戶可能會在使用系統(tǒng)時觸發(fā)的函數(shù)使用序列,而且每個用戶的使用序列可能會不一樣,所以像這種以序列的方式來測試的方法叫作隨機測試。
劃分測試與黑盒測試中的等價類劃分類似,先按照一定的規(guī)則,把輸入和輸出分類,然后設(shè)計測試用例,用來測試劃分出來的每個類別。采用劃分測試方法可以減少測試類時所需要的測試用例的數(shù)量。
例如account
類中,與狀態(tài)有關(guān)的函數(shù)是deposit
和withdraw
,而其他的函數(shù)與狀態(tài)無關(guān)。那么設(shè)計測試用例時,可以分別測試改變狀態(tài)的函數(shù)和不改變狀態(tài)的函數(shù)。例如:open->deposit->deposit->withdraw->close
用來測試改變狀態(tài)的函數(shù),而open->balance->close
用來測試不改變狀態(tài)的函數(shù)。
請完成右側(cè)的選擇題,并點擊評測按鈕,驗證你所填寫的答案是否正確。
?
本關(guān)任務(wù):根據(jù)所學(xué)知識,完成右側(cè)的選擇題。
為了完成本關(guān)任務(wù),你需要掌握面向?qū)ο蟮募蓽y試。
因為在面向?qū)ο蟮能浖胁淮嬖趯哟蔚目刂平Y(jié)構(gòu),傳統(tǒng)的自頂向下或自頂向上的集成策略就沒有意義了。此外,由于構(gòu)成類的各個成分彼此間存在著直接或間接的交互,一次集成一個操作到類中通常是不現(xiàn)實的。
面向?qū)ο筌浖募蓽y試主要采用基于使用的測試策略來進行。
這種方法首先測試幾乎不使用服務(wù)器類的那些類(也叫獨立類),把獨立類都測試完之后,再測試使用獨立類到下一個層次的類(也叫依賴類)。對依賴類的測試一個層次一個層次地持續(xù)進行下去,直至把整個軟件系統(tǒng)構(gòu)造完成,那么整個系統(tǒng)也就測試完成了。
例如,一款刷臉簽到的app
中有Camera
類、Recognition
類、DataBase
類、Signin
類。其中Signin
類依賴于DataBase
類和Recognition
類??梢钥闯觯?code>Camera類、Recognition
類和DataBase
類是獨立類,應(yīng)該優(yōu)先測試這些類的功能。而Signin
類是依賴類,因此應(yīng)該在最后才把Signin
類與其他類集成到一起并進行測試。
請完成右側(cè)的選擇題,并點擊評測按鈕,驗證你所填寫的答案是否正確。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/121224.html
摘要:相關(guān)知識為了完成本關(guān)任務(wù),你需要掌握軟件測試的測試策略。第關(guān)測試過程任務(wù)描述本關(guān)任務(wù)根據(jù)所學(xué)知識,完成右側(cè)的選擇題。 第1關(guān):測試策略 任務(wù)描述 本關(guān)任務(wù):根據(jù)所學(xué)知識,完成右側(cè)的選擇題。 相關(guān)知識 為了完成本關(guān)任務(wù),你需要掌握軟件測試的測試策略。 ? 第2關(guān):測試過程 任務(wù)描述 本關(guān)任務(wù)...
摘要:第關(guān)基本路徑測試任務(wù)描述本關(guān)任務(wù)填寫缺失代碼,完成白盒測試。相關(guān)知識為了完成本關(guān)任務(wù),你需要掌握基本路徑測試。 第1關(guān):邏輯覆蓋 任務(wù)描述 本關(guān)任務(wù):設(shè)計測試用例,填寫代碼,完成白盒測試。 相關(guān)知識 為了完成本關(guān)任務(wù),你需要掌握: 1.語句覆蓋; 2.判定覆蓋; 3.條件覆蓋; 4.判定/條...
摘要:第關(guān)邊界值法任務(wù)描述本關(guān)任務(wù)編寫代碼,使用邊界值法進行黑盒測試。相關(guān)知識為了完成本關(guān)任務(wù),你需要掌握邊界值法。 第1關(guān):等價類劃分法 任務(wù)描述 本關(guān)任務(wù):編寫代碼,使用等價類劃分法進行黑盒測試。 相關(guān)知識 為了完成本關(guān)任務(wù),你需要掌握等價類劃分法。 第2關(guān):邊界值法 任務(wù)描述 本關(guān)任務(wù):...
摘要:移動精英開發(fā)社群的第期,也是圍繞架構(gòu)這個話題進行討論。本次我們希望結(jié)合實際開發(fā)中遇到的問題,來聊聊移動端的架構(gòu)設(shè)計。這樣的模式改進一些,可能會更適合移動端架構(gòu)。潘衛(wèi)杰之前我們公司移動端的大項目就是插座式開發(fā)的,批量出各個行業(yè)的。 此前,58 同城的技術(shù)委員會執(zhí)行主席沈劍在 OneAPM 的技術(shù)公開課上分享過一個主題,「好的架構(gòu)不是設(shè)計出來的,而是演技出來的」。因為對很多創(chuàng)業(yè)公司而言,隨...
摘要:在剛開始的時候,我通常都會先啟動一個簡單的服務(wù),然后再運行我的單元測試??墒沁@個單元測試測起來似乎非常笨重。王尼瑪張全蛋測試之這是自定義的返回值,可以是任意類型。 在開發(fā)過程中往往需要配合單元測試,但是很多時候,單元測試需要依賴一些比較復(fù)雜的準(zhǔn)備工作,比如需要依賴數(shù)據(jù)庫環(huán)境,需要依賴網(wǎng)絡(luò)環(huán)境,單元測試就變成了一件非常麻煩的事情。舉例來說,比如我們需要請求一個網(wǎng)頁,并將請求回來的數(shù)據(jù)進行...
閱讀 3855·2021-09-29 09:34
閱讀 3784·2021-09-27 13:34
閱讀 580·2021-09-24 09:47
閱讀 3045·2019-08-30 15:53
閱讀 1821·2019-08-26 13:54
閱讀 2096·2019-08-26 13:43
閱讀 545·2019-08-23 14:47
閱讀 1752·2019-08-23 14:28