軟件測試引論_第1頁
軟件測試引論_第2頁
軟件測試引論_第3頁
軟件測試引論_第4頁
軟件測試引論_第5頁
已閱讀5頁,還剩79頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件測試引論

鄭人杰

內(nèi)容

一、軟件缺陷

二、排除軟件缺陷的兩種重要手段

1.軟件測試

2.軟件評審

三、軟件測試的基本概念

1.測試的目的

2.測試的對象

3.軟件測試的原則

4.軟件測試信息流

5.為什么不可能做到窮舉測試

內(nèi)容

四、測試策略

1.測試步驟

2.生存期各階段VV&T活動

3.集成測試

4.驗收測試

5.黑盒測試與白盒測試

6.靜態(tài)分析與動態(tài)測試

五、如何對待測試工作

六、測試工作評估

七、小結(jié)

八、參考資料

、軟件缺陷

1、軟件缺陷是對軟件產(chǎn)品預(yù)期屬性的偏離現(xiàn)象

a,對產(chǎn)品規(guī)格說明的偏離。如:規(guī)格說明規(guī)定了a+b=>c,而軟件產(chǎn)品

實際上做的不是。

b.對用戶期望的偏離,即用戶要求未體現(xiàn)在產(chǎn)品中(可能是規(guī)格說明

有疏漏,也可能是實現(xiàn)中的問題。)

2、缺陷有三種

a.錯誤:未將規(guī)格說明正確實現(xiàn)。

b.遺漏:規(guī)定的或預(yù)期的需求未體現(xiàn)在產(chǎn)品中(可能未將規(guī)格說明全

面實現(xiàn),也可能在開發(fā)過程中追加了需求。)

c.額外的實現(xiàn):規(guī)格說明并未規(guī)定的需求被納入產(chǎn)品,得到實現(xiàn)。

3、軟件缺陷不可能完全避免

、軟件缺陷

4、缺陷和事故

a.機(jī)械和建筑業(yè)的對比。

b.缺陷是軟件內(nèi)部的“裂縫”,在未影響到用戶和系統(tǒng)運行的

情況下是隱蔽狀態(tài),并未表現(xiàn)出來。

c.當(dāng)缺陷引發(fā)運行錯誤或產(chǎn)生負(fù)面影響時,構(gòu)成事故,造成損

失或傷害。

內(nèi)部隱含外部表現(xiàn)

缺錯誤失效損失

遺漏或或

陷冗余事故危害

DefectFailure

二、排除軟件缺陷的兩種重要手段

1、軟件測試

>測試在軟件開發(fā)中占有重要地位

>測試成本占有開發(fā)成本的近一半

軟件開發(fā)成本分布

開發(fā)成本按階段分布%

軟件類型

需求與設(shè)計實現(xiàn)測試

控制軟件462034

航空航天軟件342046

操作系統(tǒng)331750

科技計算軟件442630

商業(yè)應(yīng)用軟件442828

2、軟件項目評審

設(shè)

設(shè)

細(xì)

認(rèn)

設(shè)

設(shè)

測試策劃

三、軟件測試的基本概念

1、測試目的(J.Myers)

?測試是程序執(zhí)行的過程,目的在于發(fā)現(xiàn)錯誤(缺陷)

?好的測試用例能有效地發(fā)現(xiàn)別的測試用例未發(fā)現(xiàn)的

錯誤(缺陷)

?成功的測試是發(fā)現(xiàn)了未曾發(fā)現(xiàn)的錯誤(缺陷)

三、軟件測試的基本概念

2、測試的對象

1)程序測試:發(fā)現(xiàn)程序中的缺陷

程序正確性的各種情況

a.程序編寫無語法錯誤

b.程序執(zhí)行中未發(fā)現(xiàn)明顯的運行錯誤

c.程序中無不適當(dāng)語句

例:某程序------------------

說明部分D……L,……對L說明

語句部分S……

L=3;對L賦值I

M=L+5對L引用R

DDRDDDD

IRRII

RII

正常異常

程序正確性的各種情況

d.程序運行時能通過典型的有效測試數(shù)據(jù),得到正確的預(yù)期結(jié)果。

e.程序運行時能通過典型的無效測試數(shù)據(jù),得到正確的結(jié)果。

f.程序運行時能通過任何可能給出的數(shù)據(jù),給出正確的結(jié)果。

2)軟件測試:發(fā)現(xiàn)程序及前期開發(fā)的缺陷

3軟件測試的原則

1)在測試工作開始以前,不應(yīng)設(shè)想程序中沒有缺陷或找不出缺陷。

(測試心理學(xué))

2)測試以前應(yīng)預(yù)知測試的結(jié)果數(shù)據(jù)。

3)盡可能避免測試自己寫的程序。堅持獨立測試原則,必要的情況

下建立獨立測試機(jī)構(gòu)。

4)測試用例應(yīng)兼顧有效輸入和無效輸入。

5)不僅要檢驗程序是否做了該做的事,還應(yīng)檢驗是否做了不該做的

事。

6)測試的充分性。

7)測試的有效性。

8)限于人力、物力,測試工作適可而止。(測試經(jīng)濟(jì)學(xué))

9)保留一切測試用例。

10)任何已測程序的變更都應(yīng)重新進(jìn)行測試。(回歸測試)

軟件測試信息流

回歸測試

測試計劃

測試用例

測試程序

預(yù)期結(jié)果

測試成本曲線

為什么不可能做窮舉測試

<=20次

循環(huán)次數(shù)012.......20

獨立路徑數(shù)51+52+53+.........+521旬014(1百萬億)

每個測試用例(考慮、執(zhí)行、驗證結(jié)果)5分鐘

共需測試時間10億年

為什么不可能做窮舉測試

程序P---------Z

若X、Y為所有可能的整數(shù)

在字長32位機(jī)上

測試Xi、YinZi

Xn、Yn=>Zn

n=232X232=264=1.84xlO19

四、測試策略

1.測試步驟

(集成)

測試與開發(fā)前期工作的關(guān)系

系統(tǒng)測試

測試查錯曲線

7O7O

發(fā)

6O現(xiàn)6O

5O錯5O

4O數(shù)4O

OO

33

OO

22

OO

11

OO

1234567周1234567周

2、生存期各階段V、V&T活動

排除隱錯的相對成本

25

需求隱錯

20-

15

設(shè)計隱錯

10

編碼隱錯

5

1

0111

e66e6(t6d

靜態(tài)分析

軟件生存期各階段的VV&T活動

1.需求分析階段

a.制定本項目的VV&T計戈I」

b,設(shè)置基于需求的測試用例

c.對需求進(jìn)行評審與分析

d,對用戶手冊初稿進(jìn)行評審與分析

2.概要設(shè)計階段

a.修訂VV&T計戈I」

b.制定基于設(shè)計的測試步驟

c.對概要設(shè)計進(jìn)行評審與分析

3.詳細(xì)設(shè)計階段

a,設(shè)置基于設(shè)計的功能測試數(shù)據(jù)

b,對詳細(xì)設(shè)計進(jìn)行評審與分析

軟件生存期各階段的VV&T活動

4.程序編寫和單元測試

a.完成測試用例說明書

b.進(jìn)行單元測試

c.進(jìn)行集成測試

5.安裝

a.進(jìn)行系統(tǒng)測試

b.進(jìn)行驗收測試

6.運行和維護(hù)階段

a.軟件評價

b.軟件修改評價

c.回歸測試

(弓I自美國國家標(biāo)準(zhǔn)局信息處理標(biāo)準(zhǔn)FIPSPUB101)

3、集成測試過程

集成測試過程

(c)

(d)

4、軟件驗收測試

驗收期、保修期和返修期

(>5年)

5、黑盒與白盒測試

特點測試依據(jù)方法舉例

需求規(guī)格

黑盒測試不給程序等價類劃分

說明

事出程序

白盒測試程序邏輯覆蓋

黑盒測試與白盒測試能夠發(fā)現(xiàn)的錯誤

A只能用黑盒測試發(fā)現(xiàn)的錯誤

C只能用白盒測試發(fā)現(xiàn)的錯誤

B用黑盒測試或白盒測試都能發(fā)現(xiàn)的錯誤

D用黑盒測試或白盒測試均無法發(fā)現(xiàn)的錯誤

A+B能用黑盒測試發(fā)現(xiàn)的錯誤

B+C能用白盒測試發(fā)現(xiàn)的錯誤

A+B+C用兩種測試能發(fā)現(xiàn)的錯誤

A+B+C+D軟件中的全部錯誤

五、如何正確對待測試工作

1.明確測試工作意義

2.加強(qiáng)責(zé)任心,疏忽可能造成惡果

3.學(xué)習(xí)——實踐——鉆研,積累經(jīng)驗,

努力提高業(yè)務(wù)水平

4.處理好與編程人員關(guān)系

六、測試工作評估問題

1.你單位是否有專人負(fù)責(zé)測試工作?

2.你們是否有、是否用測試計劃規(guī)范?

3.你們是否有、是否用單元計劃規(guī)范?

4.你們是否有、是否用測試報告規(guī)范?

5.測試過程(包括計劃和實施)與整人開發(fā)過程是否并行開展?

(測試在開發(fā)初期著手,在開發(fā)結(jié)束完成)

6.測試能夠確認(rèn)規(guī)格說明得到正確的實現(xiàn)嗎?

7.除規(guī)格說明以外,你能否確認(rèn)用戶的期望也能滿足嗎?

8.測試人員能驗證開發(fā)的階段(如需求和設(shè)計)的精確性和完全性

嗎?

9.測試人員向開發(fā)人員報告缺陷以期進(jìn)一步采取措施嗎?

10.在制定計劃之前測試人員能估計業(yè)務(wù)風(fēng)險嗎?

測試工作評估問題

11.針對被測軟件是否提出了可度量的測試目標(biāo)?

12.如已提出,它與商業(yè)風(fēng)險有關(guān)嗎?

13.測試中發(fā)現(xiàn)的缺陷是否做了紀(jì)錄和總結(jié),使其用于改進(jìn)開發(fā)過程

和測試過程?

14.測試人員是否根據(jù)以前的工作經(jīng)驗判斷可能的缺陷?

15.是否有改進(jìn)測試過程的辦法?

16.你為缺陷命名嗎?

17.是否利用缺陷記錄、總結(jié)和事故數(shù)據(jù)來評價測試過程的有效性?

18.是否采用度量(如千行代碼缺陷數(shù))來計劃和評價測試過程?

19.是否已建立了測試人員的培訓(xùn)制度?

20.采用測試工具來支持測試過程嗎?

不同等級的測試機(jī)構(gòu)

級狀態(tài)特點

數(shù)

?測試依賴于測試人員個人的技巧和創(chuàng)造性

17-把測試工作當(dāng)作?對測試人員無指導(dǎo),無要求

1

20技藝(art)?測試工作效果不穩(wěn)定,有時好、有時糟

?顧客和用戶不能靠測試的有效性判斷質(zhì)量

?有測試過程、規(guī)范、標(biāo)準(zhǔn)和測試計劃

13-把測試工作當(dāng)作?測試計劃得不到實施

2

16工藝(craft)?測試人員只熱衷于找缺陷,報告開發(fā)人員

?用戶不信任測試過程,只好做驗收測試

?測試過程已被定義,單位但未得到有效執(zhí)行

執(zhí)行已確切定義?測試工作針對規(guī)格說明,重視問題的需求

39-12

的測試過程?測試結(jié)束時沒有提供表明被測軟件能否投入使用的正

式報告

不同等級的測試機(jī)構(gòu)

45-8先進(jìn)的測試機(jī)構(gòu)?有明確的測試目標(biāo),可優(yōu)化利用測試資源實現(xiàn)目標(biāo)

?重視測試過程薄弱環(huán)節(jié)的改進(jìn)

50-4最先進(jìn)的測試機(jī)?測試工作基于降低風(fēng)險,測試人員工作有效

構(gòu)?測試得到度量,過程得到很好定義

?缺陷得到記錄、分析和總結(jié),且用其改進(jìn)過程

?測試成本顯著卜降

?顧客和用戶相信測試過程,不依靠驗收測試取得滿意

產(chǎn)品

七、小結(jié)

1.選擇測試用例是測試工作的關(guān)鍵

2.測試的有效性不應(yīng)被忽視

測試后評審其充分性

3.重要的是何時停止測試

4.回歸測試一定不可省

軟件測試參考資料

1.RichardA.DeMilloetal.,SoftwareTestingand

Evaluation,Benjamin/CummingsPublishing

Company,1987.

2.J.Myers,TheArtofSoftwareTesting,JohnWiley&

Sons,Inc.,1979.

3.BorisBeizer,SoftwareTestingTechniques,2ndEdition,

VanNostrand,1990.

4.IEEETransactionsonSoftwareEngineering.

5.R.S.Pressman,SoftwareEngineering:A

Practitioner^Approach,2ndEdition,McGraw-Hill,

1987.

軟件測試參考資料

6.Musa,SoftwareReliability,McGrawHill,1990.

7.WilliamPerry,EffectiveMethodsforSoftwareTesting,

JohnWiley&Sons,Inc.,1995.

8.鄭人杰,計算機(jī)軟件測試技術(shù),清華大學(xué)出版社,

1992o

9.MarkFewster&DorothyGraham著,舒智勇等譯,

軟件測試自動化技術(shù)與實例詳解,電子工業(yè)出版社,

2000.

io.WilliamE.Perry,EffectiveMethodsforSoftware

Testing,SecondEdition,JohnWiley&Sons.2000.

邏輯驅(qū)動測試

鄭人杰

被測程序段流程圖

(A>1)AND(B=O)

[A>1)A(B=OJ

<?NY

X=X/A

(A=2)OR(X>1)

A=2)V(X>1J

N

X=X+1

.、五種邏輯驅(qū)動測試

設(shè)計若干測試用例,運行被測程序,使之作到:

1)語句覆蓋:程序中每一可執(zhí)行語句至少執(zhí)行一次

A=2

此4列僅用一個測試用例,

<B=O

ace通常需要多個

X=3

2)判定覆蓋:程序中每個判定的取真分支和取假分

支至少執(zhí)行一次(也稱分支覆蓋)

A=2A=1

<B=0ace及JB=Oabd

X=3x=i

'A=3

A=2

<B=0acd及B=1abe

、X=3X=1

3)條件覆蓋:使程序的判定中每個條件的真假取值

至少滿足一^次

例中設(shè)條件i一取真表為11取假表為

B=0十2

T2

A=2亍3

T3

、〒紜

ABX經(jīng)歷覆蓋分支覆蓋條件

203acece%T2T3T4

十十

101abdbdT234

%十十

211abebe2T34

另一例:4分支4條件8取值

ABX經(jīng)歷覆蓋分支覆蓋條件

103abebeT2T3T4

211abebeT]十2十4

2分支4條件8取值

4)判定/條件覆蓋:判定中每個條件的所有可能取值至少滿

足一次,每個判定的分支至少執(zhí)行一次。

上例中需考慮4個條件的8種組合

①A>1,B=O⑤A=2X>1T3T4

②A>1,BRO丁尸2⑥A=2X<1丁3十4

③A01,B=O亍1丁2⑦A'2X>1十3T4

@A<1,B^O十1十2⑧A,2X<1千3十4

ABX覆蓋組號經(jīng)歷覆蓋條件

203①⑤ace

%T2T3T4

211②⑥ace

T1亍2T3十4

102③⑦abeT2亍3T4

111④⑧abd亍2亍3亍4

(事實上3組已夠,第一組冗余)

4)路徑覆蓋:覆蓋程序中所有可能的路徑。

ABX覆蓋路徑

203aceL1

101abdL2

211abeL3

301acdL4

三、實施

初始化Cd)

c⑴=(X1)+1

C(2)=C(2)+1

C(n)=C(n)+1

打?。╔i)

插裝程序中插入的語句

因果圖方法

、因果圖方法概述

1、一種黑盒測試方法

2、方法的依據(jù):

需求規(guī)格說明中的因果關(guān)系

二、因果圖符號

C[=l=>e^l

5=0=>句=0

5=1i=>e^O

5=0i=>e^l

C]=l或C2=l或C3=l

e[=1

否則L=>句=0

C]=l且C2=l

f=>ei=1

否貝4=0

輸入條件的約束

*-,/

E約束(異):a,b中至多有一個可能

、、、、_為1即a和b不能同時為1

一Q

二二二二___I約束(或):a,b和c中至少有一個

通必須是1,即a、b和c不能同時為0

0約束(唯一):a和b中必須有一個

0<、

?且僅有一個為1

Q

R約束(要求):a是1時,b必須是1

即不可能a是1時b為0

輸出條件的約束

M約束(強(qiáng)制):若結(jié)果a是1時,

則結(jié)果b強(qiáng)制為0

三、因果圖方法舉例

某程序要求:

第一列字符必須是A或B,第二列字符必須是

一個數(shù)字,在此情況下對文件進(jìn)行修改。但第一

列字符不正確,則給出信息L;若第二列字符不

是一個數(shù)字,則給出信息M。

〔分析]

原因結(jié)果

1——第一列字符是A21-----修改文件

2——第一列字符是B22——給出信息L

3——第二列字符是一個數(shù)字23——給出信息M

因果圖

323

〔解)判定表和測試用例

12345678

條?11110000

件?11001100

Z~\

原?10101010

111100

000011

(101000

結(jié)

果010101

)

測試A3AMB5BNC2DY

用例A8A?B4B!X6D;

測試工具

一、軟件測試工具概述

在IS09000-3實施指南中的4.11節(jié)有關(guān)于“檢

驗、測量實驗設(shè)備的控制”的要求(原文是

Controlofinspection,measuringandtestequipment)。

應(yīng)如何理解這一節(jié)的要求?

我們知道,在傳統(tǒng)的制造業(yè)中計量設(shè)備、化

驗設(shè)備在生產(chǎn)過程中對質(zhì)量控制是至關(guān)重要的。

如果千分尺、天平、實驗爐的溫度計不準(zhǔn),它所

引起的后果可想而知。因此必須規(guī)定對這些設(shè)備

的控制、校準(zhǔn)和維修的辦法,并建立文件化程序。

對于軟件企業(yè)呢,這里應(yīng)該指的是軟件測試

工具的控制。

1、什么是軟件測試工具?

——軟件測試是軟件開發(fā)的重要階段,往往投入

成本的40-60%。

——軟件測試工具是一種測試軟件,開發(fā)人員借

助它來提高軟件測試工作的效率。

——目前國內(nèi)軟件企業(yè)采用軟件測試工具還不夠

2、軟件測試工具的分類

①按工作方式分:

——靜態(tài)分析工具

——動態(tài)測試工具

②按工具功能分:

—測試計劃工具:支持制訂測試計劃

——測試設(shè)計與開發(fā)工具:支持測試數(shù)據(jù)生成,測試問題的

捕捉與重演

——測試執(zhí)行工具:支持特定的測試方法、支持回歸測試

——測試評價工具:報告測試覆蓋情況

——測試管理工具:協(xié)助進(jìn)行測試的組織工作

——其它輔助工具:如數(shù)據(jù)比較、模擬運行

3、如何控制

①自行開發(fā)的測試工具待成熟才可投入使用

②采購產(chǎn)品的選擇:優(yōu)秀的、名牌的

③使用前充分檢測

4、參考:

《計算機(jī)軟件測試技術(shù)》鄭人杰

清華大學(xué)出版社1992.12第七章

二、幾類軟件測試工具簡介

1、評審與檢查用工具Toolsforreviewsandinspections

①復(fù)雜度分析工具Complexanalysis

?程序復(fù)雜性度量:McCabe程序環(huán)路度量

Halstead程序工作量度量

?程序復(fù)雜度給測試人員啟示,如何掌握測試工作投入

量即復(fù)雜性大的程序部分要投入更大的測試工作量,

同時也必須投入更夫的成本和足夠的測試時間(Cost

schedule)

②代碼理解工具Codecomprehension

?幫助理解程序:依賴關(guān)系、程序邏輯、程序圖形表示、

識別死代碼段,從而提醒我們,哪些程序需作重點檢

查。

,通常代碼檢查(inspection)會花很多時間準(zhǔn)備,該工

具能幫助進(jìn)行分析、理解和實施逆向工程(reverse

engineering)o

③語法和語義分析工具SyntaxandSemanticanalysis

?該工具能深入地查找出編譯系統(tǒng)查不出的錯誤

,與語言相關(guān),(如C語言,F(xiàn)ortran,........)

也還有依據(jù)方言開發(fā)的

?將發(fā)現(xiàn)的錯誤列出表格

2、5則試計戈工具ToolsforTestplanning

?制訂測試計劃的目的在于確定測試活動的范圍、方法、

資源(包括工具)以及進(jìn)程。測試計劃給出了整個測

試活動的依據(jù)。

,IEEE/ANSIStandardfbrSoftwareTestDocumentation

(Std.829-1983)給出了測試計劃的目的、大綱和內(nèi)容,

還在附錄中給出商業(yè)數(shù)據(jù)處理的例子。

?有的工具幫助決定為實現(xiàn)充分測試所需的人員和進(jìn)度。

這要比人主觀計劃更為客觀。

?類型:

——測試計劃文檔樣本

——測試進(jìn)程和人員配備統(tǒng)計

——復(fù)雜性分析器

?評審和檢查的工具對測試計劃的制訂有用。

例如,識別出復(fù)雜程序,就應(yīng)加強(qiáng)測試和額外的測試。

3、測試,殳計與開發(fā)工具ToolsforTestDesign&Development

?測試設(shè)計----針對軟件的特征(features)將測試計劃

描述測試方法(approach)詳細(xì)化的過程

?測試開發(fā)是將測試設(shè)計轉(zhuǎn)換成特征的測試用例過程。

?類型:

----測試數(shù)據(jù)生成TestDataGenerator

——基于需求的測試設(shè)計工具

Requirement-basedTestDesign

(這類工具尚未流行,例如,因果圖方法)

----返回捕捉capture/playback

----覆蓋分析

4、測試執(zhí)行與評價工具TestExecution&Evaluation

?任務(wù)是執(zhí)行測試用例及評價測試結(jié)果。包括:

——選擇執(zhí)行的測試用例

——建立測試環(huán)境

——執(zhí)行選定的測試

------1己錄執(zhí)行活動

——分析產(chǎn)品可能的失效

——度量測試工作的效率

?類型

------Capture/Playback

----覆蓋分析

----存儲測試memorytesting

----模擬和執(zhí)行Simulator&Performance

,Capture/Playback

?覆蓋分析

——覆蓋分析工具是測試質(zhì)量定量度量的手段。他告

訴我們測試的程度。那些部分測試過,那些部分

尚未測試到需要進(jìn)一步測試。它對所有的測試機(jī)

構(gòu)都是重要的。

——最常用的仍然是語句覆蓋和判定覆蓋兩種。

——有的開發(fā)機(jī)構(gòu)規(guī)定了覆蓋率至少要達(dá)到某個值。

,存儲測試MemoryTesting

----又稱bounds-checker,memorytester,run-time,error

detector,或泄露探察器leakdetectoro

——功能的探察:

存儲問題

溫馨提示

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

評論

0/150

提交評論