東北大學(xué)軟件測(cè)試復(fù)習(xí)+開(kāi)卷考試材料

16級(jí)考軟件測(cè)試的時(shí)候,改為開(kāi)卷考試。

當(dāng)時(shí)準(zhǔn)備了所有的英文ppt和這份中文材料加一本英漢詞典,基本需要的東西都有了。

試卷內(nèi)容有選擇判斷簡(jiǎn)答和大題。

簡(jiǎn)答題考的問(wèn)題很多在ppt上有原話,例如:


例題

簡(jiǎn)答題的范圍是除了黑盒白盒之外的所有知識(shí)點(diǎn),大多集中在第一章和第九章。

大題只考了黑盒白盒相關(guān)的部分。

平時(shí)注意積累一些術(shù)語(yǔ)和詞匯,考前可以做個(gè)術(shù)語(yǔ)表,以免到時(shí)候認(rèn)不出單詞浪費(fèi)時(shí)間。

這次的大題經(jīng)常要生成測(cè)試用例,很費(fèi)時(shí)間,不知道以后會(huì)不會(huì)還是這樣。

材料來(lái)源于學(xué)長(zhǎng)分享,我整理成今年的考點(diǎn),并加上了自己的內(nèi)容。

下面是材料:

軟件缺陷的概念

從產(chǎn)品內(nèi)部看,軟件缺陷是產(chǎn)品開(kāi)發(fā)或維護(hù)過(guò)程中所存在的錯(cuò)誤、毛病等各種問(wèn)題。

從產(chǎn)品外部看,軟件缺陷是系統(tǒng)所需要實(shí)現(xiàn)的某種功能的失效或者違背。

軟件測(cè)試的一個(gè)重要功能

verification(驗(yàn)證)and validation(確認(rèn))

verification:驗(yàn)證我們是不是正確的做了這個(gè)產(chǎn)品,也就是產(chǎn)品要符合他的目標(biāo)

validation:確認(rèn)我們是不是做了正確的產(chǎn)品,也就是產(chǎn)品是用戶真正想要的

軟件測(cè)試的目的

* 軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程。

* 一個(gè)好的測(cè)試能過(guò)在第一時(shí)間發(fā)現(xiàn)程序中存在的錯(cuò)誤。

* 一個(gè)好的測(cè)試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯(cuò)誤。

* 減小軟件不能正常工作的風(fēng)險(xiǎn)

軟件測(cè)試的分類

C1:按照測(cè)試生成的來(lái)源

C2:按照生命周期的階段

C3:按照測(cè)試活動(dòng)的目的

C4:按被測(cè)對(duì)象的特征

C5:按測(cè)試過(guò)程的模型

軟件測(cè)試V模型


軟件測(cè)試V模型??

軟件測(cè)試用例

輸入以測(cè)試系統(tǒng)和預(yù)測(cè)這些系統(tǒng)的輸出,如果系統(tǒng)根據(jù)其規(guī)范運(yùn)作。

黑盒測(cè)試

等價(jià)類劃分

分為有效類和無(wú)效類,兩者不能有重疊的部分

例如:前亞利桑那州境內(nèi)的一位步槍銷售商銷售密蘇里州制造的步槍機(jī)、槍托和槍管。槍機(jī)(Lock)賣(mài)45美元,槍托(Stock)賣(mài)30美元,槍管(Barrel)賣(mài)25美元。銷售商每月至少要銷售一支完整的步槍,且生產(chǎn)限額是大多數(shù)銷售商在一個(gè)月內(nèi)可銷售70個(gè)槍機(jī)、80個(gè)槍托和90個(gè)槍管。每訪問(wèn)一個(gè)鎮(zhèn)子之后,銷售商都給密蘇里州步槍制造商發(fā)出電報(bào),說(shuō)明在那個(gè)鎮(zhèn)子中售出的槍機(jī)、槍托和槍管數(shù)量。到了月末,銷售商要發(fā)出一封很短的電報(bào),通知-1個(gè)槍機(jī)被售出。這樣步槍制造商就知道當(dāng)月的銷售情況,并計(jì)算銷售商的傭金如下:銷售額不到(含)1000美元的部分為10%,1000(不含)~1800(含)美元的部分為15%,超過(guò)1800美元的部分為20%。傭金程序生成月份銷售報(bào)告,匯總售出的槍機(jī)、槍托和槍管總數(shù),銷售商的總銷售額以及傭金。

有效等價(jià)類:

L1={Lock:1≤Lock≤70}

L2={Lock=-1}

S1={Stock:1 ≤Stock≤80}

B1={Barrel:1 ≤ Barrel ≤90}

無(wú)效等價(jià)類:

L3={Lock: Lock =0 or Lock ﹤-1}

L4={Lock: Lock ﹥70}

S2={Stock: Stock ﹤1}

S3={Stock: Stock ﹥80}

B2={Barrel: Barrel ﹤1}

B3={Barrel:Barrel﹥90}

再例如:有一個(gè)報(bào)表處理系統(tǒng),要求用戶輸入處理報(bào)表的日期。假如日期限制在2000年1月至2020年12月,即系統(tǒng)只能對(duì)該段時(shí)期內(nèi)的報(bào)表進(jìn)行處理。如果用戶輸入的日期不在這個(gè)范圍內(nèi),則顯示“錯(cuò)誤信息”。并且此系統(tǒng)規(guī)定日期由年月的6位數(shù)字組成,前四位代表年,后兩位代表月。

要求:

寫(xiě)出日期的等價(jià)類劃分。

生成測(cè)試用例。

等價(jià)類劃分


等價(jià)類劃分

生成測(cè)試用例

生成測(cè)試用例??

邊緣值分析法

基本原理

如下圖取值

邊界值法取值??
兩個(gè)變量的情況下??

注意:邊界值分析法是單一錯(cuò)誤原則

舉例說(shuō)明:

三角形問(wèn)題,輸入a、b、c

1 ≤a ≤200

1 ≤b ≤200

1 ≤c ≤200

所以a,b,c的取值是

a = {1,2,100,199,200}

b = {1,2,100,199,200}

c = {1,2,100,199,200}

測(cè)試用例如下


邊界值分析的測(cè)試用例

小節(jié)總結(jié)

等價(jià)類測(cè)試的弱形式不如強(qiáng)形式測(cè)試全面。

無(wú)效值會(huì)引起運(yùn)行錯(cuò)誤的時(shí)候(實(shí)現(xiàn)語(yǔ)言是強(qiáng)類型),則沒(méi)有必要做健壯形式的測(cè)試。

錯(cuò)誤條件很重要的時(shí)候,健壯測(cè)試很重要。

邊界值測(cè)試是等價(jià)類測(cè)試的一種補(bǔ)充,兩者結(jié)合可以加強(qiáng)測(cè)試效果。

決策表技術(shù)可以解決變量之間依賴的問(wèn)題。

要進(jìn)行多次嘗試,確認(rèn)最合適的等價(jià)類劃分。

正交測(cè)試

正交測(cè)試http://www.itdecent.cn/writer#/notebooks/11085322/notes/10481239

Decision Tables(決策表)

先來(lái)感受一波決策表吧(特別注意,結(jié)果能合并的一定要合并?。。。?/b>

決策表有四個(gè)部分

Stub portion、Entry

portion、Condition portion、Actionportion

決策表四個(gè)部分??

從問(wèn)題決策到結(jié)果,Y代表?xiàng)l件滿足,N代表?xiàng)l件不滿足,--代表忽略這個(gè)條件


決策表

練習(xí):

某貨運(yùn)站收費(fèi)標(biāo)準(zhǔn)如下:如果收件地點(diǎn)在本省,則快件每公斤5元,慢件每公斤3元;如果收件地點(diǎn)在省外,則在20公斤以內(nèi)(含20公斤)快件每公斤7元,慢件每公斤5元,而超過(guò)20公斤時(shí),快件每公斤9元,慢件每公斤7元。請(qǐng)用決策表方法解決此問(wèn)題。

第一步:確定規(guī)則的數(shù)目。

條件:

(1)收件地在本?。?/p>

(2)是快件?

(3)重量不超過(guò)20公斤?

根據(jù)公式計(jì)算2的3次方=8

所以應(yīng)有8條規(guī)則。

第二步:列出所有的條件樁和行動(dòng)樁。

第三步:填入條件條目

第四步:填入行動(dòng)條目

未簡(jiǎn)化的決策表??

第五步:化簡(jiǎn)決策表(一定要合并簡(jiǎn)化)


簡(jiǎn)化的決策表

Cause-Effect Graphing (因果圖)

因果圖法產(chǎn)生的背景

等價(jià)類劃分法和邊界值分析方法都是著重考慮輸入條件,但沒(méi)有考慮輸入條件的各種組合、輸入條件之間的相互制約關(guān)系。這樣雖然各種輸入條件可能出錯(cuò)的情況已經(jīng)測(cè)試到了,但多個(gè)輸入條件組合起來(lái)可能出錯(cuò)的情況卻被忽視了。

如果在測(cè)試時(shí)必須考慮輸入條件的各種組合,則可能的組合數(shù)目將是天文數(shù)字,因此必須考慮采用一種適合于描述多種條件的組合、相應(yīng)產(chǎn)生多個(gè)動(dòng)作的形式來(lái)進(jìn)行測(cè)試用例的設(shè)計(jì),這就需要利用因果圖(邏輯模型)。

因果圖概念介紹

因果圖(Cause-EffectGraphing)提供了一個(gè)把規(guī)格轉(zhuǎn)化為判定表的系統(tǒng)化方法,從該圖中可以產(chǎn)生測(cè)試數(shù)據(jù)。其中原因是表示輸入條件,結(jié)果是對(duì)輸入執(zhí)行的一系列計(jì)算后得到的輸出。因果圖方法最終生成的就是判定表,它適合于檢查程序輸入條件的各種組合情況。

因果圖中基本符號(hào)介紹(這里可以看PPT,不全部列出)


PPT


PPT

因果圖分析步驟

第一步,找出Cause(原因)

Cause(原因)

c1—the first character is #

c2 —thefirst character is *

c3 —thesecond character is number

第二步,找出Effect(結(jié)果)

e1—givethe information N

e2—modify the document

e3—give the information M

第三步,分析出中間節(jié)點(diǎn)

然后畫(huà)出因果圖,如圖

再舉個(gè)例子

某公司對(duì)客戶有一定的折扣政策,公司軟件的一個(gè)模塊的需求說(shuō)明書(shū)中描述“……當(dāng)交易額小于等于5萬(wàn)元時(shí)折扣為0,當(dāng)交易額大于5萬(wàn)元時(shí)才有折扣,如果交易的客戶在三個(gè)月內(nèi)無(wú)欠款,則折扣為15%;如果交易用戶在三個(gè)月內(nèi)有欠款,若該用戶是三年以上的老客戶,則折扣為10%;若該客戶不是三年以上的老客戶,則折扣為5%?!?/p>

原因(對(duì)立的就不要再寫(xiě)了,比如寫(xiě)了是小于五萬(wàn)就不用寫(xiě)大于等于五萬(wàn)了):

C1:交易額大于5萬(wàn)元

C2:三個(gè)月無(wú)欠款

C3:三年以上老客戶

結(jié)果(注意對(duì)立的就不要再寫(xiě)了):

E1:無(wú)折扣

E2:折扣=5%

E3:折扣=10%

E4:折扣=15%

因果圖,從這個(gè)圖中你就能找出導(dǎo)出上邊說(shuō)的四種結(jié)果的邏輯

正交實(shí)驗(yàn)法的介紹

正交試驗(yàn)法是研究多因素、多水平的一種試驗(yàn)法,它是利用正交表來(lái)對(duì)試驗(yàn)進(jìn)行設(shè)計(jì),通過(guò)少數(shù)的試驗(yàn)替代全面試驗(yàn)

在一項(xiàng)試驗(yàn)中,把影響試驗(yàn)結(jié)果的量稱為試驗(yàn)因素(因子),簡(jiǎn)稱因素。因素可以理解為試驗(yàn)過(guò)程中的自變量,試驗(yàn)結(jié)果可以看成因素的函數(shù)。在試驗(yàn)過(guò)程中,每一個(gè)因素可以處于不同的狀態(tài)或狀況,把因素所處的狀態(tài)或狀況,稱為因素的水平,簡(jiǎn)稱水平。

舉個(gè)例子

某所大學(xué)通信系共2個(gè)班級(jí),剛考完某一門(mén)課程,想通過(guò)“性別”、“班級(jí)”和“成績(jī)”這三個(gè)查詢條件對(duì)通信系這門(mén)課程的成績(jī)分布,男女比例或班級(jí)比例進(jìn)行人員查詢:

根據(jù)“性別”=“男,女”進(jìn)行查詢

根據(jù)“班級(jí)”=“1班,2班”查詢

根據(jù)“成績(jī)”=“及格,不及格”查詢

按照傳統(tǒng)設(shè)計(jì)——全部測(cè)試

分析上述測(cè)試需求,有3個(gè)被測(cè)元素,被測(cè)元素我們稱為因素,每個(gè)因素有兩個(gè)取值,我們稱之為水平值(也就是2)。

如果是普通的全面測(cè)試,則如下(2^3=8次)

全面測(cè)試表


若采用正交測(cè)試

利用正交表設(shè)計(jì)測(cè)試用例,我們得到的測(cè)試用例個(gè)數(shù)是n=3*(2-1)+1=4(這個(gè)公司就是(因素?cái)?shù)*(最大水平數(shù)-1)+1)),對(duì)于三因素兩水平的剛好有L4(2^3)的正交表可以套用

于是用正交表試驗(yàn)法得出4個(gè)測(cè)試用例如下(正交測(cè)試表的類型一般都會(huì)給出來(lái))

正交測(cè)試表


正交試驗(yàn)設(shè)計(jì)方法

與一般的試驗(yàn)設(shè)計(jì)類似 ,用正交試驗(yàn)設(shè)計(jì)方法設(shè)計(jì)測(cè)試用例時(shí)主要包括以下步驟:

(1)確定因素

這里的因素是指對(duì)軟件運(yùn)行結(jié)果有影響的軟件

(2)確定因素的取值范圍或集合(該步是為步驟3做準(zhǔn)備的)

因素的取值范圍是指軟件輸入的取值范圍或集合以及可用的硬件資源。

(3)確定每個(gè)因素的水平

根據(jù)因素的取值范圍或集合 ,采用等價(jià)類劃分、邊界值分析以及其他軟件測(cè)試技術(shù),在每個(gè)因素的取值范圍或集合內(nèi)挑選出有效等價(jià)類、無(wú)效等價(jià)類、正好等于、剛剛大于剛剛小于邊界值等有代表性的測(cè)試值。

(4)選擇正交表

根據(jù)確定的因素和水平 ,選擇適合的正交表。

如果沒(méi)有合適的正交表可用或需要的測(cè)試用例個(gè)數(shù)太多 ,要對(duì)因素和水平進(jìn)行調(diào)整。

正交表的構(gòu)成:

l行數(shù)(Runs):正交表中的行的個(gè)數(shù),即試驗(yàn)的次數(shù),也是通過(guò)正交實(shí)驗(yàn)法設(shè)計(jì)的測(cè)試用例的個(gè)數(shù)

l因素?cái)?shù)(Factors):正交表中列的個(gè)數(shù),即要測(cè)試的功能點(diǎn)。

l水平數(shù)(Levels):任何單個(gè)因素能夠取得的值的最大個(gè)數(shù),即要測(cè)試功能點(diǎn)的輸入值

正交表

8代表行數(shù),2代表水平數(shù),7代表因素?cái)?shù)

9代表行數(shù),3代表水平數(shù),4代表因素?cái)?shù)

正交表相關(guān)概念

將正交試驗(yàn)選擇的水平組合,列成表格,稱為正交表。

正交表具有以下兩個(gè)特點(diǎn),即正交性。正交表必須滿足這兩個(gè)特點(diǎn),有一條不滿足,就不是正交表。

1)每列中不同數(shù)字出現(xiàn)的次數(shù)相等。這一特點(diǎn)表明每個(gè)因素的每個(gè)水平與其它因素的每個(gè)水平參與試驗(yàn)的幾率是完全相同的,從而保證了在各個(gè)水平中最大限度地排除了其它因素水平的干擾,能有效地比較試驗(yàn)結(jié)果并找出最優(yōu)的試驗(yàn)條件。

2)在任意2列其橫向組成的數(shù)字對(duì)中,每種數(shù)字對(duì)出現(xiàn)的次數(shù)相等。這個(gè)特點(diǎn)保證了試驗(yàn)點(diǎn)均勻地分散在因素與水平的完全組合之中,因此具有很強(qiáng)的代表性

場(chǎng)景測(cè)試(Scenario Testing)

不考大題

先找場(chǎng)景,場(chǎng)景要生動(dòng)而有趣

白盒測(cè)試(White-box testing)

白盒測(cè)試也叫structural testing, clear box testing, andglass box testing.

透明的看得見(jiàn)結(jié)構(gòu)??

白盒測(cè)試分為靜態(tài)測(cè)試動(dòng)態(tài)測(cè)試

白盒靜態(tài)測(cè)試:Code inspection, Static structure analysis,Static quality metric method

白盒動(dòng)態(tài)測(cè)試:主要基于覆蓋,包括logic coverage, loop coverage, basispath coverage, etc.

白盒測(cè)試主要應(yīng)用于單元測(cè)試

we can’t

use exhaustive(詳盡的)testing

動(dòng)態(tài)測(cè)試之邏輯覆蓋

白盒測(cè)試用例設(shè)計(jì)的一個(gè)很重要的評(píng)估標(biāo)準(zhǔn)就是對(duì)代碼的覆蓋度。一說(shuō)到覆蓋,大家都感覺(jué)非常熟悉,但是常見(jiàn)的覆蓋都有哪些?各自有什么優(yōu)缺點(diǎn)?在白盒測(cè)試的用例設(shè)計(jì)中我們應(yīng)該如何自如地運(yùn)用呢?為大家總結(jié)了一下幾種常見(jiàn)的覆蓋以及各自的優(yōu)缺點(diǎn)。

白盒測(cè)試中常見(jiàn)的覆蓋有六種:語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、組合覆蓋和路徑覆蓋。下面我們就分別看看這幾種不同的覆蓋究竟是什么鬼。

一、語(yǔ)句覆蓋(Statement Coverage)

語(yǔ)句覆蓋,顧名思義就是針對(duì)代碼語(yǔ)句的嘛。它的含義是我們?cè)O(shè)計(jì)出來(lái)的測(cè)試用例要保證程序中的每一個(gè)語(yǔ)句至少被執(zhí)行一次。通常語(yǔ)句覆蓋被認(rèn)為是“最弱的覆蓋”,原因是它僅僅考慮對(duì)代碼中的執(zhí)行語(yǔ)句進(jìn)行覆蓋而沒(méi)有考慮各種條件和分支,因此在實(shí)際運(yùn)用中語(yǔ)句覆蓋很難發(fā)現(xiàn)代碼中的問(wèn)題。舉個(gè)非常簡(jiǎn)單的例子:

public int foo(int a,int b)

{

return a/b;

}

這是一個(gè)求兩數(shù)之商的函數(shù)。如果我們?cè)O(shè)計(jì)如下的測(cè)試用例:

TestCase: a = 2, b = 1

這時(shí)候我們會(huì)發(fā)現(xiàn),該函數(shù)的代碼覆蓋率達(dá)到了100%,并且設(shè)計(jì)的case可以順利通過(guò)測(cè)試。但是顯然該函數(shù)有一個(gè)很明顯的bug:當(dāng) b=0 時(shí),會(huì)拋出異常。

再來(lái)看這個(gè)例子:

流程圖1

主要特點(diǎn):語(yǔ)句覆蓋是最起碼的結(jié)構(gòu)覆蓋要求,語(yǔ)句覆蓋要求設(shè)計(jì)足夠多的測(cè)試用例,使得程序中每條語(yǔ)句至少被執(zhí)行一次。

用例設(shè)計(jì):(如果此時(shí)將A路徑上的語(yǔ)句1—〉T去掉,那么用例如下

語(yǔ)句覆蓋測(cè)試用例

優(yōu)點(diǎn):可以很直觀地從源代碼得到測(cè)試用例,無(wú)須細(xì)分每條判定表達(dá)式。

缺點(diǎn):由于這種測(cè)試方法僅僅針對(duì)程序邏輯中顯式存在的語(yǔ)句,但對(duì)于隱藏的條件和可能到達(dá)的隱式邏輯分支,是無(wú)法測(cè)試的。在本例中去掉了語(yǔ)句1—〉T去掉,那么就少了一條測(cè)試路徑。在if結(jié)構(gòu)中若源代碼沒(méi)有給出else后面的執(zhí)行分支,那么語(yǔ)句覆蓋測(cè)試就不會(huì)考慮這種情況。但是我們不能排除這種以外的分支不會(huì)被執(zhí)行,而往往這種錯(cuò)誤會(huì)經(jīng)常出現(xiàn)。再如,在Do-While結(jié)構(gòu)中,語(yǔ)句覆蓋執(zhí)行其中某一個(gè)條件分支。那么顯然,語(yǔ)句覆蓋對(duì)于多分支的邏輯運(yùn)算是無(wú)法全面反映的,它只在乎運(yùn)行一次,而不考慮其他情況。

二、判定覆蓋(Decision Coverage)

判定覆蓋也被成為分支覆蓋(Branch Coverage),也就是說(shuō)設(shè)計(jì)的測(cè)試用例要保證讓被測(cè)試程序中的每一個(gè)分支都至少執(zhí)行一次。舉個(gè)例子,有如下流程圖:


流程圖2

針對(duì)該圖我們想要做到判定覆蓋,可以設(shè)計(jì)如下case:

TestCase1: a=1, b=1 ?(路徑:ab)

TestCase2: a=-1, b=-1 ?(路徑:acd)

TestCase3: a=2, b=-1 ?(路徑:ace)

判定覆蓋比語(yǔ)句覆蓋強(qiáng)一些,能發(fā)現(xiàn)一些語(yǔ)句覆蓋無(wú)法發(fā)現(xiàn)的問(wèn)題。但是往往一些判定條件都是由多個(gè)邏輯條件組合而成的,進(jìn)行分支判斷時(shí)相當(dāng)于對(duì)整個(gè)組合的最終結(jié)果進(jìn)行判斷,這樣就會(huì)忽略每個(gè)條件的取值情況,導(dǎo)致遺漏部分測(cè)試路徑。

同樣上邊流程圖1例子也一樣

用例設(shè)計(jì)

用例設(shè)計(jì)

優(yōu)點(diǎn):判定覆蓋比語(yǔ)句覆蓋要多幾乎一倍的測(cè)試路徑,當(dāng)然也就具有比語(yǔ)句覆蓋更強(qiáng)的測(cè)試能力。同樣判定覆蓋也具有和語(yǔ)句覆蓋一樣的簡(jiǎn)單性,無(wú)須細(xì)分每個(gè)判定就可以得到測(cè)試用例。

缺點(diǎn):往往大部分的判定語(yǔ)句是由多個(gè)邏輯條件組合(也就是可能if(a==b&&c==d)這種的邏輯組合)而成(如,判定語(yǔ)句中包含AND、OR、CASE),若僅僅判斷其整個(gè)最終結(jié)果,而忽略每個(gè)條件的取值情況,必然會(huì)遺漏部分測(cè)試路徑。

三、條件覆蓋(Condition Coverage)

條件覆蓋于分支覆蓋不同,條件覆蓋要求所設(shè)計(jì)的測(cè)試用例能使每個(gè)判定中的每一個(gè)條件都獲得可能的取值,即每個(gè)條件至少有一次真值、有一次假值。

仍然以上面流程圖2作為例子來(lái)說(shuō)明。上圖中涉及到的條件一共有4個(gè):

a>0, a<0, b>0, b<0

為了達(dá)到條件覆蓋的目的,我們?cè)O(shè)計(jì)的用例需要在 a 點(diǎn)有:

a>0, a≤0,

b>0, b≤0,

這些情況出現(xiàn),并且在 c 點(diǎn)有:

a<0, a≥0,

b<0, b≥0

這些情況出現(xiàn)?,F(xiàn)在可以設(shè)計(jì)如下用例:

TestCase1: a=1, b=1 ?(路徑:ab)

TestCase1: a=-1, b=-1 ?(路徑:acd)

TestCase1: a=-1, b=0 ?(路徑:ace)

TestCase1: a=1, b=-1 ?(路徑:ace)

通常而言條件覆蓋比判定覆蓋強(qiáng),因?yàn)闂l件覆蓋使得判定中的每一個(gè)條件都取到了不同的結(jié)果,這一點(diǎn)判定覆蓋則無(wú)法保證。但條件覆蓋也有缺陷,因?yàn)樗荒鼙WC每個(gè)條件都取到了不同結(jié)果,但沒(méi)有考慮到判定結(jié)果,因此有時(shí)候條件覆蓋并不能保證判定覆蓋。

優(yōu)點(diǎn):顯然條件覆蓋比判定覆蓋,增加了對(duì)符合判定情況的測(cè)試,增加了測(cè)試路徑。

缺點(diǎn):要達(dá)到條件覆蓋,需要足夠多的測(cè)試用例,但條件覆蓋并不能保證判定覆蓋。條件覆蓋只能保證每個(gè)條件至少有一次為真,而不考慮所有的判定結(jié)果。

四、判定條件覆蓋(Decision/Condition Coverage)

以流程圖1為例

測(cè)試用例

主要特點(diǎn):設(shè)計(jì)足夠多的測(cè)試用例,使得判定中每個(gè)條件的所有可能結(jié)果至少出現(xiàn)一次,每個(gè)判定本身所有可能結(jié)果也至少出現(xiàn)一次。

優(yōu)點(diǎn):判定/條件覆蓋滿足判定覆蓋準(zhǔn)則和條件覆蓋準(zhǔn)則,彌補(bǔ)了二者的不足。

缺點(diǎn):判定/條件覆蓋準(zhǔn)則的缺點(diǎn)是未考慮條件的組合情況。

五、組合覆蓋(Branch Condition Combination Coverage)

組合覆蓋也叫做條件組合覆蓋。意思是說(shuō)我們?cè)O(shè)計(jì)的測(cè)試用例應(yīng)該使得每個(gè)判定中的各個(gè)條件的各種可能組合都至少出現(xiàn)一次。顯然,滿足條件組合覆蓋的測(cè)試用例一定是滿足判定覆蓋、條件覆蓋和判定條件覆蓋的。

主要特點(diǎn):要求設(shè)計(jì)足夠多的測(cè)試用例,使得每個(gè)判定中條件結(jié)果的所有可能組合至少出現(xiàn)一次。

針對(duì)前文提到的流程圖2,做條件組合覆蓋時(shí)我們可以設(shè)計(jì)如下用例:

TestCase1: a=1, b=1 ?(路徑:ab)

TestCase1: a=-1, b=-1 ?(路徑:acd)

TestCase1: a=-1, b=0 ?(路徑:ace)

TestCase1: a=1, b=-1 ?(路徑:ace)

針對(duì)流程圖1

測(cè)試用例

優(yōu)點(diǎn):多重條件覆蓋準(zhǔn)則滿足判定覆蓋、條件覆蓋和判定/條件覆蓋準(zhǔn)則。更改的判定/條件覆蓋要求設(shè)計(jì)足夠多的測(cè)試用例,使得判定中每個(gè)條件的所有可能結(jié)果至少出現(xiàn)一次,每個(gè)判定本身的所有可能結(jié)果也至少出現(xiàn)一次。并且每個(gè)條件都顯示能單獨(dú)影響判定結(jié)果。

缺點(diǎn):線性地增加了測(cè)試用例的數(shù)量。

六、路徑覆蓋

路徑覆蓋,意思是說(shuō)我們?cè)O(shè)計(jì)的測(cè)試用例可以覆蓋程序中所有可能的執(zhí)行路徑。這種覆蓋方法可以對(duì)程序進(jìn)行徹底的測(cè)試用例覆蓋,比前面講的五種方法覆蓋度都要高。那么這種方法是不是就一定最好呢?當(dāng)然不能講得這么絕對(duì),它的缺點(diǎn)也是顯而易見(jiàn)的:由于需要對(duì)所有可能的路徑全部進(jìn)行覆蓋,那么我們需要設(shè)計(jì)數(shù)量非常巨大的而且較為復(fù)雜的測(cè)試用例,用例數(shù)量將呈現(xiàn)指數(shù)級(jí)的增長(zhǎng)。所以理論上來(lái)講路徑覆蓋是最徹底的測(cè)試用例覆蓋,但實(shí)際上很多時(shí)候路徑覆蓋的可操作性不強(qiáng)。

針對(duì)流程圖1

測(cè)試用例

優(yōu)點(diǎn):這種測(cè)試方法可以對(duì)程序進(jìn)行徹底的測(cè)試,比前面五種的覆蓋面都廣。

缺點(diǎn):由于路徑覆蓋需要對(duì)所有可能的路徑進(jìn)行測(cè)試(包括循環(huán)、條件組合、分支選擇等),那么需要設(shè)計(jì)大量、復(fù)雜的測(cè)試用例,使得工作量呈指數(shù)級(jí)增長(zhǎng)。而在有些情況下,一些執(zhí)行路徑是不可能被執(zhí)行的

總結(jié)

以上簡(jiǎn)單描述了幾種不用的邏輯覆蓋方法的原則和優(yōu)劣。在實(shí)際的操作中,要正確使用白盒測(cè)試的代碼覆蓋方法,就要從代碼分析和代碼調(diào)研入手,根據(jù)調(diào)研的結(jié)果,可以選擇上述方法中的某一種,或者好幾種方法的結(jié)合,設(shè)計(jì)出高效的測(cè)試用例,盡可能全面地覆蓋到代碼中的每一個(gè)邏輯路徑。

控制流程圖和圈復(fù)雜度

常見(jiàn)控制流圖


控制流圖



程序

程序

將上訴程序轉(zhuǎn)化成控制流圖


控制流圖

圈復(fù)雜度=判定節(jié)點(diǎn)數(shù)+1

練習(xí)1:

計(jì)算下圖的圈復(fù)雜度

標(biāo)識(shí)它的獨(dú)立路徑

獨(dú)立路徑是指程序中至少引進(jìn)一個(gè)新的處理語(yǔ)句集合,采用流圖的術(shù)語(yǔ),即獨(dú)立路徑必須至少包含一條在定義路徑之前不曾用到的邊。

獨(dú)立路徑數(shù)=判定節(jié)點(diǎn)數(shù)(4)+1= 5

獨(dú)立路徑數(shù)= e – n + 1 = 11 – 7 + 1 = 5(邊-結(jié)點(diǎn)+1或2)其中全連通圖+1,不連+2

獨(dú)立路徑:

ABCFG

ABDFG

ABEFG

ABCDFG

ABEDFGABDFG

再比如

控制流程圖

獨(dú)立路徑

路徑1:1-11

路徑2:1-2-3-4-5-10-1-11

路徑3:1-2-3-6-8-9-10-11

路徑4:1-2-3-6-7-9-10-1-11

V=3個(gè)判定節(jié)點(diǎn)+1=4(圈復(fù)雜度)

由此為了覆蓋所有程序語(yǔ)句,必須設(shè)計(jì)至少4個(gè)測(cè)試用例使程序運(yùn)行于這4條路徑。

循環(huán)測(cè)試

簡(jiǎn)單循環(huán)

嵌套循環(huán)

看作兩個(gè)簡(jiǎn)單循環(huán)嵌套

連鎖循環(huán)

看作兩個(gè)簡(jiǎn)單循環(huán)

Z路徑測(cè)試法

是一種將程序中循環(huán)結(jié)構(gòu)簡(jiǎn)化成選擇結(jié)構(gòu)的測(cè)試方法。

循環(huán)簡(jiǎn)化的目的是限制循環(huán)次數(shù),無(wú)論循環(huán)的形式和循環(huán)體實(shí)際執(zhí)行的次數(shù),簡(jiǎn)化后的循環(huán)測(cè)試只考慮循環(huán)一次或者零次兩種情況。

在這種情況下,循環(huán)與判定分支的效果是一樣的,即循環(huán)要么執(zhí)行,要么跳過(guò)。

采用較復(fù)雜的循環(huán)測(cè)試策略測(cè)試循環(huán),可采用下面測(cè)試集:

跳過(guò)整個(gè)循環(huán);

只循環(huán)一次;

只循環(huán)兩次;

循環(huán)m次,m<n;

循環(huán)n-1,n,n+1次;

數(shù)據(jù)流測(cè)試

defined(d) used(d),killed(k)

每個(gè)defined都要追溯used,每個(gè)used都要檢查defined

單元測(cè)試(Unit Testing)

單元測(cè)試是最小的測(cè)試部分測(cè)試模塊是獨(dú)立于其他模塊的,一般情況下,被測(cè)單元能夠?qū)崿F(xiàn)一個(gè)特定的功能,并與其他單元有明確的接口定義,這樣才可以與其他單元隔離開(kāi)來(lái)。

In Java, a unit is a class or a class method.

In C, a unit is a function or sub processes.

目標(biāo):確保模塊被正確的編碼

依據(jù):系統(tǒng)詳細(xì)的規(guī)格說(shuō)明

過(guò)程:經(jīng)過(guò)設(shè)計(jì)、腳本開(kāi)發(fā)、執(zhí)行、調(diào)試和分析結(jié)果一個(gè)過(guò)程

執(zhí)行者:由程序開(kāi)發(fā)人員和測(cè)試人員共同完成

方法:以白盒測(cè)試方法為主,輔以黑盒測(cè)試方法

如何進(jìn)行評(píng)估:通過(guò)所有單元測(cè)試用例,代碼沒(méi)有嚴(yán)重缺陷

單元測(cè)試過(guò)程

1、在詳細(xì)設(shè)計(jì)階段完成單元測(cè)試計(jì)劃

2、建立單元測(cè)試環(huán)境,完成測(cè)試設(shè)計(jì)和開(kāi)發(fā)

3、執(zhí)行單元測(cè)試用例,并且詳細(xì)記錄測(cè)試結(jié)果

4、判定單元測(cè)試是否通過(guò)

5、提交單元測(cè)試報(bào)告

單元測(cè)試過(guò)程

單元測(cè)試優(yōu)點(diǎn)

1、單獨(dú)進(jìn)行,一起進(jìn)行,降低軟件質(zhì)量成本,縮短開(kāi)發(fā)周期;

2、便于跟蹤錯(cuò)誤;

3、集成后錯(cuò)誤會(huì)放大,集成后復(fù)雜性高,很難發(fā)現(xiàn)問(wèn)題;

4、無(wú)需而外的設(shè)備和人員。

單元測(cè)試分為靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試

靜態(tài)測(cè)試

代碼評(píng)審:代碼走查和正式會(huì)議審查。

代碼走查:代碼互查應(yīng)用最多,代碼走查是相對(duì)比較正式的評(píng)審過(guò)程,項(xiàng)目組部分成員通過(guò)閱讀代碼,向其他成員提出問(wèn)題并對(duì)有關(guān)技術(shù)、風(fēng)格、可能錯(cuò)誤是否違背開(kāi)發(fā)標(biāo)準(zhǔn)和規(guī)范等進(jìn)行評(píng)論。

正式會(huì)議審查:是一種正式的檢查和評(píng)估方法,最早由IBM提出,經(jīng)實(shí)踐證明,有一種有效的檢查辦法,從而得到軟件工程界的普遍認(rèn)同。它使用逐步檢查源代碼中有無(wú)邏輯或語(yǔ)法錯(cuò)誤的辦法來(lái)檢驗(yàn)故障。


對(duì)比表

集成測(cè)試(Integration Testing)(集成測(cè)試、組裝測(cè)試、聯(lián)合測(cè)試、子系統(tǒng)測(cè)試、部件測(cè)試)

優(yōu)點(diǎn):早點(diǎn)發(fā)現(xiàn)錯(cuò)誤,早點(diǎn)修正錯(cuò)誤,早點(diǎn)獲得測(cè)試反饋,調(diào)度修正錯(cuò)誤靈活

分為增量式測(cè)試和非增量式測(cè)試

測(cè)試模式

Big bang(大爆炸) integration

優(yōu)點(diǎn):完成速度快、能夠并行

缺點(diǎn):錯(cuò)誤發(fā)生時(shí)很難找出他的位置和改變以及很多問(wèn)題得在系統(tǒng)測(cè)試才能發(fā)現(xiàn)

適用范圍:Existing system with only minor modifications

Small systems with adequate unit testing

System made from certified high quality reusablecomponents

Top-down (自頂向下)integration

分為廣度和深度集成測(cè)試

Advantage

Early show main points of control and judgments.

Use depth-first assembly, and a complete softwarefunction can be firstly implemented and validated.

Only one driver module is needed at most.

Support fault isolation.

Disadvantage

The costs of the development and the maintenanceof stubs are both higher.

Bottom level components demand can not bepredicted may lead to many amendments to the top level components.

Bottom-up (自底向上)integration

Advantage

Allow conducting early certification for bottommodules, any leaf node is ready for integration testing can be tested.

Reduce workload of stub development

Support fault isolation

Disadvantage

Driver module development huge workloadcomparison.

Senior validation was deferred until the end,design error can not be found in time.

Bottom abnormal hard cover.

Sandwich(三明治) integration

Advantage

Combine the advantage of top-down strategy andbottom-up strategy.

Disadvantage

The testing of middle level is insufficient beforeintegration testing.

Scope

It is used by the majority of softwaredevelopment projects.

Layers(分層)integration

High-frequency (高頻)integration

Event-based(基于事件) integration

System testing(系統(tǒng)測(cè)試)

目的:測(cè)試可安裝性、可用性、兼容性、可維護(hù)性等等

Performance Testing(性能測(cè)試)

性能是量度系統(tǒng)或組件在一定約束條件下,是否達(dá)到功能設(shè)計(jì)的指標(biāo):如響應(yīng)速度,計(jì)算的精度,內(nèi)存利用率。

性能是系統(tǒng)外部的質(zhì)量屬性基于用戶的需求和用戶的系統(tǒng)操作性的看法。

同時(shí)性能特別應(yīng)用于對(duì)實(shí)時(shí)系統(tǒng)的評(píng)價(jià)當(dāng)中,就是它的行為在指定的期限內(nèi)完成正確的操作。

評(píng)估指標(biāo)為時(shí)間效率,空間效率,I∕O性能,數(shù)據(jù)庫(kù)性能,內(nèi)存性能,初始化∕退出時(shí)間和資源利用率延時(shí),事務(wù)處理時(shí)間,最大事務(wù)處理時(shí)間,事務(wù)操作時(shí)間,數(shù)據(jù)庫(kù)性能,最大消耗的內(nèi)存量,高峰內(nèi)存時(shí)間,資源消耗。

下圖描述了web應(yīng)用的頁(yè)面響應(yīng)時(shí)間的分解。


分解

頁(yè)面響應(yīng)時(shí)間分解為網(wǎng)絡(luò)傳輸時(shí)間(N1+N2+N3+N4)和應(yīng)用延遲時(shí)間(A1+A2+A3),

而應(yīng)用延遲時(shí)間又可分為數(shù)據(jù)庫(kù)延遲時(shí)間(A2)和應(yīng)用服務(wù)器延遲時(shí)間(A1+A3)。

延遲:一個(gè)指令控制器發(fā)出數(shù)據(jù)請(qǐng)求的一瞬間和數(shù)據(jù)傳送的一瞬間之間的時(shí)間間隔;是請(qǐng)求和完成操作之間拖延的時(shí)間差。

事務(wù)處理時(shí)間:是指完成一項(xiàng)事務(wù)所需要的運(yùn)行時(shí)間,用于評(píng)價(jià)事務(wù)處理效率。通常,事務(wù)處理的時(shí)間越短,則效率越高。

并發(fā)用戶數(shù),一般分兩種情況:

嚴(yán)格意義的并發(fā),即所有用戶在同一時(shí)間做同一件事情或者操作。

廣義范圍的并發(fā),多個(gè)用戶對(duì)系統(tǒng)發(fā)出了請(qǐng)求或進(jìn)行了操作,但這些操作可以是相同的,也可以是不同的。

吞吐量:是指在一次性能測(cè)試過(guò)程中網(wǎng)絡(luò)上傳輸數(shù)據(jù)量的總和。

一般來(lái)說(shuō),吞吐量用請(qǐng)求數(shù)/秒或頁(yè)面數(shù)/秒來(lái)衡量。

吞吐量指標(biāo)有如下兩個(gè)作用:

1、協(xié)助設(shè)計(jì)性能測(cè)試場(chǎng)景,衡量性能測(cè)試場(chǎng)景是否達(dá)到了預(yù)期的設(shè)計(jì)目標(biāo)。

在設(shè)計(jì)性能測(cè)試場(chǎng)景時(shí),根據(jù)估算吞吐量數(shù)據(jù)測(cè)試場(chǎng)景事物發(fā)生頻率。

2、協(xié)助分析性能測(cè)試瓶頸。

性能測(cè)試比較關(guān)注業(yè)務(wù)并發(fā)用戶數(shù),從業(yè)務(wù)的角度設(shè)置多少并發(fā)數(shù)合理。

下面給出估算并發(fā)用戶數(shù)的公式:C=nL/T

C —平均的并發(fā)用戶數(shù)

n —登錄會(huì)話的數(shù)量

L —登錄會(huì)話的平均長(zhǎng)度

T —考察的時(shí)間段長(zhǎng)度


ppt


ppt

例題:

一個(gè)軟件系統(tǒng)每天約有400個(gè)用戶訪問(wèn)。用戶在一天之內(nèi)有8小時(shí)內(nèi)使用該系統(tǒng),從登錄到退出的平均時(shí)間為4小時(shí),請(qǐng)計(jì)算該系統(tǒng)的并發(fā)用戶數(shù)和并發(fā)用戶的峰值各是多少?

分析:根據(jù)公式C=400×4/8=200

并發(fā)用戶數(shù)的峰值


負(fù)載測(cè)試是模擬實(shí)際軟件系統(tǒng)所承受的負(fù)載條件的系統(tǒng)負(fù)荷,通過(guò)不斷加載(不斷增加模擬用戶數(shù)量)或其他加載方式來(lái)觀察不同負(fù)載下系統(tǒng)響應(yīng)時(shí)間和數(shù)據(jù)吞吐量,系統(tǒng)資源占有率(cpu和內(nèi)存)等性能指標(biāo),以檢驗(yàn)系統(tǒng)的行為和特性,發(fā)現(xiàn)系統(tǒng)可能存在的性能瓶頸、內(nèi)存泄露和不能實(shí)現(xiàn)同步等問(wèn)題。

高低突變加載:某個(gè)時(shí)間用戶數(shù)量很大,突然降到很低,過(guò)一段時(shí)間,又突然加到很高,反復(fù)幾次。借助這種負(fù)載方式的測(cè)試,容易發(fā)現(xiàn)資源的釋放和內(nèi)存泄漏的問(wèn)題。

隨機(jī)加載方式:由隨機(jī)算法自動(dòng)生成某個(gè)數(shù)量范圍內(nèi)變化的、動(dòng)態(tài)的負(fù)載,這種方式可能是和實(shí)際情況最為接近的一種負(fù)載方式。雖然不容易模擬系統(tǒng)運(yùn)行出現(xiàn)的瞬間高峰期,但可以模擬系統(tǒng)長(zhǎng)時(shí)間的運(yùn)行過(guò)程的狀態(tài)。

壓力測(cè)試用于判定應(yīng)用處理大量數(shù)據(jù)的能力。

壓力測(cè)試可以成功的測(cè)試服務(wù)器滿負(fù)載的情況。

除了在服務(wù)器上增加運(yùn)行的應(yīng)用結(jié)合客戶端測(cè)試是一種額外的形式的壓力測(cè)試。

性能測(cè)試過(guò)程:計(jì)劃,記錄,修改,執(zhí)行,分析

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容