測試基礎(chǔ)知識_第1頁
測試基礎(chǔ)知識_第2頁
測試基礎(chǔ)知識_第3頁
測試基礎(chǔ)知識_第4頁
測試基礎(chǔ)知識_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件測試基礎(chǔ)知識

軟件測試基礎(chǔ)知識

文件更改摘要:

日期版本號修訂說明修訂人審核人批準(zhǔn)人

2008-12-1VI.0創(chuàng)建林懷玉

第1頁共38頁

軟件測試基礎(chǔ)知識

目錄

1.軟件測試的意義.................................................5

1.1.軟件缺陷.................................................5

1.1.1.缺陷帶來的影響的例子:..............................5

1.1.2.缺陷的定義:........................................5

1.2.軟件缺陷產(chǎn)生的各個階段...................................5

1.3.軟件缺陷產(chǎn)生的原因.......................................5

1.4.修復(fù)軟件缺陷的代價(jià).......................................6

1.5.軟件測試員的工作目標(biāo).....................................6

1.6.軟件測試員的必備素質(zhì).....................................6

第2頁共38頁

軟件測試基礎(chǔ)知識

1.7.軟件測試職業(yè)..............................................7

2.軟件開發(fā)過程簡介................................................7

2.1.軟件產(chǎn)品的組成............................................7

2.2.軟件開發(fā)項(xiàng)目組成員........................................8

2.3.軟件開發(fā)模式..............................................8

2.3.1.邊做邊改模型(Build-and-FixModel)..................8

2.3.2.瀑布模型(WaterfallModel)...........................9

2.3.3.快速原型模型(RapidPrototypeModel)................9

2.3.4.螺旋模型(SpiralModel)............................10

3.軟件測試的原則..................................................11

3.1.軟件測試原則..............................................11

4.軟件測試的相關(guān)理論.............................................12

4.1.軟件測試的基本概念......................................12

4.1.1.軟件測試基礎(chǔ)知識....................................12

4.1.2.靜態(tài)測試方法和動態(tài)測試方法..........................13

4.1.3.黑盒測試、白盒測試、灰盒測試........................14

4.1.4.軟件測試過程........................................15

4.2.單元測試................................................16

4.2.1.單元測試的主要任務(wù)...................................16

4.2.2.單元測試的執(zhí)行過程...................................17

4.3.集成測試................................................17

4.3.1.非增式測試方法.......................................18

4.3.2.增式測試方法.........................................18

4.3.3.不同集成測試方法的比較...............................19

4.4.確認(rèn)測試................................................19

4.4.1.確認(rèn)測試的準(zhǔn)則.......................................19

4.4.2.配置審查的內(nèi)容.......................................19

4.5.系統(tǒng)測試................................................20

4.5.1.恢復(fù)測試............................................20

4.5.2.安全測試............................................20

4.5.3.強(qiáng)度測試............................................20

4.5.4.性能測試............................................20

4.6.驗(yàn)收測試................................................21

4.6.1.驗(yàn)收測試定義.......................................21

4.6.2.驗(yàn)收的結(jié)果:.......................................21

4.6.3.三種驗(yàn)收方法:......................................21

4.6.4.軟件配置審核和文檔資料.............................22

5.軟件測試用例設(shè)計(jì)...............................................22

5.1.黑盒測試方法...........................................22

5.1.1.邊界值分析法........................................22

5.1.2.等價(jià)類劃分方法.......................................24

5.1.3.因果圖方法..........................................25

5.1.4.錯誤推測法..........................................27

5.1.5.測試方法的選擇......................................27

第3頁共38頁

軟件測試基礎(chǔ)知識

5.2.白盒測試方法............................................27

5.2.1,原則:...............................................27

5.2.2.邏輯覆蓋測試方法...................................27

5.2.3.路徑測試方法.......................................28

5.3.特定環(huán)境及應(yīng)用的測試.....................................28

5.3.1.客戶/服務(wù)器體系結(jié)構(gòu)的測試...........................28

5.3.2.GUI的測試..........................................29

5.3.3.實(shí)時(shí)系統(tǒng)的測試......................................30

6.DATAFACTORY的使用..........................................31

6.1.DATAFACTORY概述.........................................31

6.2.DATAFACTORY的基本操作...................................31

7.規(guī)劃測試工作.................................................31

7.1.建立測試計(jì)劃的目標(biāo).......................................31

7.2.測試計(jì)劃的主要內(nèi)容.......................................32

8.測試案例的編寫和跟蹤..........................................32

8.1.計(jì)劃測試案例的原因和目的:...............................32

8.2.測試案例計(jì)劃一覽.........................................33

8.2.1.有關(guān)測試設(shè)計(jì)說明....................................33

8.2.2.有關(guān)測試案例說明....................................33

8.2.3.有關(guān)測試過程說明....................................33

8.3.組織和跟蹤測試案例.....................................34

9.報(bào)告軟件缺陷...................................................34

9.1.如何面對軟件缺陷.......................................34

9.1.1.報(bào)告軟件缺陷的基本原則:.............................34

9.2.軟件缺陷的分離和再現(xiàn)...................................35

9.2.1.缺陷分離和再現(xiàn)方法:................................35

9.3.軟件缺陷的嚴(yán)重性和優(yōu)先級...............................36

9.4.軟件缺陷的生命周期.....................................36

9.5.軟件缺陷跟蹤系統(tǒng).......................................38

9.5.1.測試事件報(bào)告.......................................38

9.5.2.缺陷跟蹤管理工具....................................38

軟件測試基礎(chǔ)知識

第4頁共38頁

軟件測試基礎(chǔ)知識

1.軟件測試的意義

1.1.軟件缺陷

1.1.1.缺陷帶來的影響的例子:

1)美國航空集團(tuán)公司去年曾由于定價(jià)軟件的缺陷使?些機(jī)票被錯誤地定為1.86美元,造

成了數(shù)百萬美元的損失。

2)奧運(yùn)門票網(wǎng)站

1.1.2.缺陷的定義:

1)軟件缺陷是指系統(tǒng)或系統(tǒng)部件中那些導(dǎo)致系統(tǒng)或部件不能實(shí)現(xiàn)其功能的缺陷。一般定義

為,只要符合以下任意一條,就叫做軟件缺陷:

>軟件未達(dá)到產(chǎn)品說明書標(biāo)明的功能。

>軟件出現(xiàn)了產(chǎn)品說明書指明不會出現(xiàn)的錯誤。

>軟件功能超出產(chǎn)品說明書指明范圍。

>軟件未達(dá)到產(chǎn)品說明書雖未指出但應(yīng)達(dá)到的目標(biāo)。

>軟件測試員認(rèn)為軟件難以理解、不易使用、運(yùn)行速度緩慢,或者最終用戶認(rèn)為不好。

1.2.軟件缺陷產(chǎn)生的各個階段

1)在團(tuán)建生命周期中軟件缺陷占的比例:需求和構(gòu)架設(shè)計(jì)階段占54樂設(shè)計(jì)階段占25樂

編碼階段占15%、其他占6%.

1.3.軟件缺陷產(chǎn)生的原因

1)需求說明書:需求說明書的錯誤或不清楚引起的問題;

2)設(shè)計(jì)文檔:設(shè)計(jì)文檔描述不準(zhǔn)確,和需求說明書不一致的問題;

3)系統(tǒng)集成接口:系統(tǒng)各模塊參數(shù)不匹配、開發(fā)組之間缺乏協(xié)調(diào)引起的缺陷;

4)數(shù)據(jù)流(庫):由于數(shù)據(jù)字典、數(shù)據(jù)庫中的錯誤引起的缺陷;

5)程序代碼:純粹在編碼中的問題所引起的缺陷。

第5頁共38頁

軟件測試基礎(chǔ)知識

L4.修復(fù)軟件缺陷的代價(jià)

o

10

修o

□復(fù)

援o

?o

2o

O

1)隨著時(shí)間的推移,修復(fù)軟件缺陷的費(fèi)用吳幾何級數(shù)增長速度。

1.5.軟件測試員的工作目標(biāo)

1)軟件測試的目的是通過測試,盡可能的早發(fā)現(xiàn)軟件當(dāng)中的缺陷,并盡可能早的修復(fù)軟件

缺陷,保證軟件產(chǎn)品的最終質(zhì)量,在軟件開發(fā)的過程中,對軟件產(chǎn)品進(jìn)行質(zhì)量控制。

1.6.軟件測試員的必備素質(zhì)

1)探索精神:不怕接觸新事務(wù),進(jìn)入陌生的環(huán)境,樂于拿到新軟件,并運(yùn)行和觀察它。

2)發(fā)現(xiàn)缺陷的能力:善于發(fā)現(xiàn)問題,喜歡猜測。

3)不懈努力:不停嘗試,從不心存僥幸,而是盡一切能力去尋找。

4)創(chuàng)造性:不滿足于顯而易見的問題,想出富有創(chuàng)意甚至超常的手段來尋找缺陷。

5)追求完美:力求完美,但是知道某些無法企及時(shí),不去苛求。

6)判斷準(zhǔn)確:軟件測試人員需要具有決定測試內(nèi)容,測試時(shí)間,以及判斷所看到的現(xiàn)象是

否算真正缺陷的能力。

7)老練穩(wěn)重:不怕壞消息,知道如何告訴程序員他的程序有缺陷,同時(shí)尊重程序員的勞動

成果,做到態(tài)度誠懇而冷靜。

8)說服能力:測試人員需要具有說服程序員為什么軟件缺陷必須修復(fù)的能力。

第6頁共38頁

軟件測試基礎(chǔ)知識

1.7.軟件測試職業(yè)

1)初級測試工程師:剛?cè)腴T的擁有計(jì)算機(jī)科學(xué)學(xué)位的個人或具有一些手工測試經(jīng)驗(yàn)的個

人,負(fù)責(zé)開發(fā)測試腳本并開始熟悉測試生存周期和測試技術(shù)。

2)測試工程師/程序分析員:具有1-2年經(jīng)驗(yàn)的測試工程師或程序員。編寫自動測試腳本

程序并擔(dān)任測試編程初期的領(lǐng)導(dǎo)工作。進(jìn)一步拓展編程語言、操作系統(tǒng)、網(wǎng)絡(luò)與數(shù)據(jù)庫

方面的技能。

3)高級測試工程師/程序分析員:具有3-4年經(jīng)驗(yàn)的測試工程師或程序員。幫助開發(fā)或維

護(hù)測試或編程標(biāo)準(zhǔn)與過程,負(fù)責(zé)同級的評審,并為其它初級的測試工程師或程序員充當(dāng)

顧問。繼續(xù)拓展編程語言、操作系統(tǒng)、網(wǎng)絡(luò)與數(shù)據(jù)庫方面的技能。

4)測試組負(fù)責(zé)人:具有4-6年經(jīng)驗(yàn)的測試工程師或程序員。負(fù)責(zé)管理1至3名測試工程師

或程序員。擔(dān)負(fù)一些進(jìn)度安排和工作規(guī)模/成本估算職責(zé)(更集中于技能方面)

5)測試/編程負(fù)責(zé)人:具有6-10年經(jīng)驗(yàn)的測試工程師或程序員。負(fù)責(zé)管理8至10名技術(shù)

人員。負(fù)責(zé)進(jìn)度安排、工作規(guī)模/成本估算、按進(jìn)度表和預(yù)算目標(biāo)交付產(chǎn)品。負(fù)責(zé)開發(fā)

項(xiàng)目的技術(shù)方法。為一些用戶提供支持與演示。開發(fā)一些特定領(lǐng)域的技術(shù)專長

6)測試/質(zhì)量保證/開發(fā)(項(xiàng)目)、經(jīng)理:具有10多年的工作經(jīng)驗(yàn)。管理8名或更多的人

員參加的1個或多個項(xiàng)目。負(fù)責(zé)這一領(lǐng)域(測試/質(zhì)量保證/開發(fā))內(nèi)的整個開發(fā)生存周

期業(yè)務(wù)。為?些用戶提供交互和大量演示。負(fù)責(zé)項(xiàng)目成本、進(jìn)度安排、計(jì)劃和人員分工

7)計(jì)劃經(jīng)理:具有15年以匕開發(fā)與支持(測試/質(zhì)量保證)活動方面的經(jīng)驗(yàn)。管理從事若

干項(xiàng)目的人員以及整個開發(fā)生存周期。負(fù)責(zé)把握項(xiàng)目方向與盈虧責(zé)任

2.軟件開發(fā)過程簡介

2.1.軟件產(chǎn)品的組成

1)各種各樣的開發(fā)投入:產(chǎn)品說明書、產(chǎn)品審查、設(shè)計(jì)文檔、進(jìn)度、來自上一版本的反饋、

競爭對手情況、測試計(jì)劃、客戶調(diào)查、易用性數(shù)據(jù)、觀察和感受說明書、軟件、軟件代

碼;

2)客戶需求:明確客戶的需求:

3)產(chǎn)品說明:對產(chǎn)品進(jìn)行定義,確定其功能;

第7頁共38頁

軟件測試基礎(chǔ)知識

4)軟件設(shè)計(jì)文檔:包含架構(gòu)、數(shù)據(jù)流示意圖、狀態(tài)變化示意圖、流程圖、注釋代碼等內(nèi)容;

5)軟件測試文檔:包含測試計(jì)劃,測試用例,軟件缺陷報(bào)告,歸納、統(tǒng)計(jì)和總結(jié)形式來描

述整個測試過程;

6)開發(fā)進(jìn)度表:制定進(jìn)行的目標(biāo),跟蹤開發(fā)進(jìn)度;

7)軟件產(chǎn)品的組成部分:幫助文件、用戶手冊、樣本和示例、標(biāo)簽、產(chǎn)品支持信息、圖標(biāo)

和標(biāo)志、錯誤信息、廣告和宣傳材料、軟件的安裝、軟件說明文件、測試錯誤提示信息;

錯誤提示信息應(yīng)包含:標(biāo)準(zhǔn)窗口、提示出錯內(nèi)容、級別,導(dǎo)致的結(jié)果、解決的方法;

2.2.軟件開發(fā)項(xiàng)目組成員

1)項(xiàng)目管理員:負(fù)責(zé)整個軟件開發(fā)項(xiàng)目,編寫產(chǎn)品說明書、管理進(jìn)度,進(jìn)行重大決策;

2)設(shè)計(jì)師或系統(tǒng)工程師:軟件小組的技術(shù)專家,設(shè)計(jì)整個系統(tǒng)架構(gòu);

3)程序員:設(shè)計(jì)、編寫并修復(fù)軟件的缺陷;

4)軟件測試員:負(fù)責(zé)進(jìn)行測試,找出并報(bào)告軟件產(chǎn)品的問題;

5)技術(shù)作者、用戶助手、用戶培訓(xùn)專員、手冊編寫人員或文案專員:負(fù)責(zé)編制軟件產(chǎn)品附

帶的文件和聯(lián)機(jī)文檔;

6)結(jié)構(gòu)管理員或制作人員:將全部文檔資料合并成一個軟件包;

2.3.軟件開發(fā)模式

2.3.1.邊做邊改模型(Build-and-FixModel)

>沒有規(guī)格說明,也沒有經(jīng)過設(shè)計(jì),軟件隨著客戶的需要一次又一次地不斷被

修改,在這個模型中,開發(fā)人員拿到項(xiàng)目立即根據(jù)需求編寫程序,調(diào)試通過

后生成軟件的第一個版本。在提供給用戶使用后,如果程序出現(xiàn)錯誤,或者

用戶提出新的要求,開發(fā)人員重新修改代碼,直到用戶滿意為止。

>存在問題:

a)缺少規(guī)劃和設(shè)計(jì)環(huán)節(jié),軟件的結(jié)構(gòu)隨著不斷的修改越來越糟,導(dǎo)致無法

繼續(xù)修改;

b)忽略需求環(huán)節(jié),給軟件開發(fā)帶來很大的風(fēng)險(xiǎn);

c)沒有考慮測試和程序的可維護(hù)性,也沒有任何文檔,軟件的維護(hù)十分困

難。

第8頁共38頁

軟件測試基礎(chǔ)知識

2.3.2.瀑布模型(WaterfallModel)

A1970年WinstonRoyce提出了著名的“瀑布模型”,直到80年代早期,它

直是唯一被廣泛采用的軟件開發(fā)模型。

>軟件生命周期:問題定義、可行性研究、需求分析、軟件設(shè)計(jì)(總體設(shè)計(jì)和詳

細(xì)設(shè)計(jì))、程序編寫、軟件測試和運(yùn)行維護(hù)等基本活動,嚴(yán)格按照線性方式進(jìn)

行,當(dāng)前活動接受上一項(xiàng)活動的工作結(jié)果,實(shí)施完成所需的工作內(nèi)容。當(dāng)前

活動的工作結(jié)果需要進(jìn)行驗(yàn)證,如果驗(yàn)證通過,則該結(jié)果作為下一項(xiàng)活動的

輸入,繼續(xù)進(jìn)行下一項(xiàng)活動,否則返回修改。

何題定義

計(jì)

M

總體設(shè)計(jì)

發(fā)

測Ct

韁護(hù)階段

運(yùn)行維護(hù)

>模型的線性過程太理想化,已不再適合現(xiàn)代的軟件開發(fā)模式,幾乎被業(yè)界拋

棄,其主要問題在于:

a)各個階段的劃分完全固定,階段之間產(chǎn)生大量的文檔,極大地增加了工

作量;

b)由于開發(fā)模型是線性的,用戶只有等到整個過程的末期才能見到開發(fā)成

果,從而增加了開發(fā)的風(fēng)險(xiǎn);

c)早期的錯誤可能要等到開發(fā)后期的測試階段才能發(fā)現(xiàn),進(jìn)而帶來嚴(yán)重的

后果。

2.3.3.快速原型模型(RapidPrototypeModel)

>構(gòu)造?個快速原型,實(shí)現(xiàn)客戶或未來的用戶與系統(tǒng)的交互,用戶或客戶對原

型進(jìn)行評價(jià),進(jìn)一步細(xì)化待開發(fā)軟件的需求。通過逐步調(diào)整原型使其滿足客

第9頁共38頁

軟件測試基礎(chǔ)知識

戶的要求,開發(fā)人員可以確定客戶的真正需求是什么;第二步則在第??步的

基礎(chǔ)上開發(fā)客戶滿意的軟件產(chǎn)品。

>特點(diǎn):快速原型方法可以克服瀑布模型不夠直觀的缺點(diǎn),減少由于軟件需求

不明確帶來的開發(fā)風(fēng)險(xiǎn),具有顯著的效果。

2.3.4.螺旋模型(SpiralModel)

>將瀑布模型和快速原型模型結(jié)合起來,強(qiáng)調(diào)了其他模型所忽視的風(fēng)險(xiǎn)分析,

特別適合于大型復(fù)雜的系統(tǒng)。

累計(jì)

制定計(jì)劃成本風(fēng)險(xiǎn)分析

決定目標(biāo)、評價(jià)方案、

方案和限制識別風(fēng)險(xiǎn)

消除風(fēng)險(xiǎn)

可運(yùn)行

原型

軟件

需求

需求

確認(rèn)一

設(shè)計(jì)確認(rèn)

與驗(yàn)證

組裝

臆收

測試

測試實(shí)施工程

開發(fā)、驗(yàn)證

>螺旋模型沿著螺線進(jìn)行若干次迭代,圖中的四個象限代表了以下活動:

令制定計(jì)劃:確定軟件目標(biāo),選定實(shí)施方案,弄清項(xiàng)目開發(fā)的限制條件;

令風(fēng)險(xiǎn)分析:分析評估所選方案,考慮如何識別和消除風(fēng)險(xiǎn);

令實(shí)施工程:實(shí)施軟件開發(fā)和驗(yàn)證;

令客戶評估:評價(jià)開發(fā)工作,提出修正建議,制定下一步計(jì)劃。

>螺旋模型由風(fēng)險(xiǎn)驅(qū)動,強(qiáng)調(diào)可選方案和約束條件從而支持軟件的重用,有助

于將軟件質(zhì)量作為特殊目標(biāo)融入產(chǎn)品開發(fā)之中。但是,螺旋模型也有一定的

限制條件,具體如下:

第10頁共38頁

軟件測試基礎(chǔ)知識

令螺旋模型強(qiáng)調(diào)風(fēng)險(xiǎn)分析,但要求許多客戶接受和相信這種分析,并做出

相關(guān)反應(yīng)是不容易的,因此,這種模型往往適應(yīng)于內(nèi)部的大規(guī)模軟件開

發(fā)。

令如果執(zhí)行風(fēng)險(xiǎn)分析將大大影響項(xiàng)目的利潤,那么進(jìn)行風(fēng)險(xiǎn)分析毫無意義,

因此,螺旋模型只適合于大規(guī)模軟件項(xiàng)目。

令軟件開發(fā)人員應(yīng)該擅長尋找可能的風(fēng)險(xiǎn),準(zhǔn)確地分析風(fēng)險(xiǎn),否則將會帶

來更大的風(fēng)險(xiǎn)

3.軟件測試的原則

3.1.軟件測試原則

1)不可能對程序進(jìn)行完全測試:輸入量太大、輸出結(jié)果太多、軟件實(shí)現(xiàn)途徑太多、軟件說

明沒有客觀標(biāo)準(zhǔn)

2)無法顯示潛伏的軟件缺陷:只能報(bào)告一經(jīng)發(fā)現(xiàn)的缺陷,無法報(bào)告潛伏的缺陷

3)軟件測試的風(fēng)險(xiǎn):無法完成完全測試,因?yàn)榇嬖谝欢ǖ娘L(fēng)險(xiǎn);

測試量、測試成本和發(fā)現(xiàn)的軟件缺陷數(shù)量之間的關(guān)系(如卜圖)

占總?cè)毕莸谋壤?/p>

4)軟件缺陷越找越多:一個缺陷,通常會在他的周圍發(fā)現(xiàn)很多缺陷。原因有三點(diǎn):

>程序員的怠倦:程序員是人,有疲勞的時(shí)候,這段時(shí)期編的代碼可能會有較多問題。

>程序員會犯同樣的錯誤:一個程序員喜歡在類似的地方犯自己容易犯的錯誤。

第11頁共38頁

軟件測試基礎(chǔ)知識

A缺陷的關(guān)聯(lián)性:一系列缺陷可能與某個比較深層的關(guān)鍵缺陷有關(guān)。

5)難以描述的軟件缺陷:對軟件產(chǎn)品的質(zhì)量持不同觀點(diǎn),因而不能確定相應(yīng)的軟件缺陷

6)產(chǎn)品說明書不斷變化

7)殺蟲劑現(xiàn)象:軟件測試越多,其免疫力越強(qiáng)

8)軟件缺陷不都能得到修復(fù):

>沒有足夠的時(shí)間

>不算真正的軟件缺陷

>修復(fù)的風(fēng)險(xiǎn)太大

>不值得修復(fù)

4.軟件測試的相關(guān)理論

4.1.軟件測試的基本概念

4.1.1.軟件測試基礎(chǔ)知識

1)軟件測試的定義

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

>軟件測試是根據(jù)軟件開發(fā)階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)的一批測

試用例(即輸入數(shù)據(jù)及預(yù)期的輸出結(jié)果),并利用這些測試用例去運(yùn)行程序,以發(fā)

現(xiàn)錯誤的過程。

2)測試的目的:

>測試是運(yùn)行程序的過程,目的在于發(fā)現(xiàn)錯誤,在用戶使用應(yīng)用之前發(fā)現(xiàn)問題;

>一個好的測試用例在于能夠發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤;

>?個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。

3)測試的基本原則

>確定預(yù)期輸出作為測試情況必不可少的一部分,必須徹底檢查每一個測試結(jié)果;

>程序員應(yīng)避免檢查自己的程序,測試工作應(yīng)該由獨(dú)立專業(yè)的軟件測試機(jī)構(gòu)來完成。

>非法或非預(yù)期的輸入要與合法的、預(yù)期的輸入一樣設(shè)計(jì)用例。

>是否做了要做的,是否做了不該做的

第12頁共38頁

軟件測試基礎(chǔ)知識

>程序中存在錯誤的概率與在這段程序中J發(fā)現(xiàn)的錯誤數(shù)成反比;

>測試用例的保存與復(fù)用;

>所有的測試都應(yīng)追溯到用戶需求。

>應(yīng)該在測試工作真正開始前的較長時(shí)間內(nèi)就進(jìn)行測試計(jì)劃??梢栽谛枨竽P鸵煌瓿?/p>

就開始,詳細(xì)的測試用例定義可以在設(shè)計(jì)模型被確定后立即開始。因此,所有測試

應(yīng)該在任何代碼被產(chǎn)生前就進(jìn)行計(jì)劃和設(shè)計(jì)。

>Pareto原則應(yīng)用于軟件測試。測試發(fā)現(xiàn)的錯誤中的80%很可能起源于程序模塊

中的20%。當(dāng)然,問題在于如何孤立這些有疑點(diǎn)的模塊并進(jìn)行徹底的測試。

>測試應(yīng)從“小規(guī)?!遍_始,逐步轉(zhuǎn)向“大規(guī)?!薄W畛醯臏y試通常把焦點(diǎn)放在單

個程序模塊上,進(jìn)一步測試的焦點(diǎn)則轉(zhuǎn)向在集成的模塊簇中尋找錯誤,最后在整個

系統(tǒng)中尋找錯誤。

>窮舉測試是不可能的。即使是一個大小適度的程序,其路徑排列的數(shù)量也非常大。

因此,在測試中不可能運(yùn)行路徑的每一種組合。然而,充分覆蓋程序邏輯,并確保

程序設(shè)計(jì)中使用的所有條件是有可能的。

>不充分的測試是不負(fù)責(zé)任的;過分的測試是一種資源的浪費(fèi),同樣也是種不負(fù)責(zé)

任的表現(xiàn).

4)測試的對象

軟件測試并不等于程序測試。軟件測試應(yīng)貫穿于軟件定義與開發(fā)的整個期間。需求分析、

概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)以及程序編碼等各階段所得到的文檔,包括需求規(guī)格說明、概要設(shè)

計(jì)規(guī)格說明、詳細(xì)設(shè)計(jì)規(guī)格說明以及源程序,都應(yīng)成為軟件測試的對象。

5)測試的分類

>按是否需要執(zhí)行被測軟件的角度:可分為靜態(tài)測試和動態(tài)測試

>按測試方法,分為白盒測試、黑盒測試、灰盒測試;

>按開發(fā)過程,分為單元測試、集成測試、確認(rèn)測試和系統(tǒng)測試;

>按測試實(shí)施組織劃分:開發(fā)方測試(a測試)、用戶測試(B測試)、第三方測試

>按軟件測試過程模型:V模型、W模型、H模型

4.1.2.靜態(tài)測試方法和動態(tài)測試方法

1)靜態(tài)測試:利用計(jì)算機(jī)測試源程序時(shí),計(jì)算機(jī)并不真正的運(yùn)行被測試程序,只進(jìn)行特性

第13頁共38頁

軟件測試基礎(chǔ)知識

分析研究;

2)動態(tài)方法:計(jì)算機(jī)必須真正運(yùn)行被測試的程序;

4.1.3.黑盒測試、白盒測試、灰盒測試

1)白盒測試

>白盒測試:結(jié)構(gòu)測試、邏輯驅(qū)動測試或基于程序的測試,用來分析程序的內(nèi)部結(jié)構(gòu);

>常見方法:語句覆蓋、分支覆蓋/判斷覆蓋、條件覆蓋、判斷/條件覆蓋、路徑覆蓋

>工具:JunitFramework.Jtest等。

表7.1白盒測試與黑盒測試兩類方法的對比

白盒測試黑盒測試

根據(jù)用戶的規(guī)格說明,即針對命令、信息、

根據(jù)程序的內(nèi)部結(jié)構(gòu),如語句的控制

報(bào)表等用戶界面及體現(xiàn)它們的輸入數(shù)據(jù)與

測試規(guī)劃結(jié)構(gòu),模塊間的控制結(jié)構(gòu)以及內(nèi)部數(shù)

輸出數(shù)據(jù)之間的對應(yīng)關(guān)系,特別是針對功

據(jù)結(jié)構(gòu)等進(jìn)行測試。

能進(jìn)行測試

能夠?qū)Τ绦騼?nèi)部的特定部位進(jìn)行初蓋

優(yōu)點(diǎn)能站在用戶的立場上進(jìn)行測試

測試

無法檢驗(yàn)程序的外部特性

點(diǎn)不能測試程序內(nèi)部特定部位

缺點(diǎn)無法對未實(shí)現(xiàn)規(guī)格說明的程序內(nèi)部欠

如果規(guī)格說明有誤,則無法發(fā)現(xiàn)

缺部分進(jìn)行測試

語句稷蓋

判定覆蓋

基于圖的測試

條件覆蓋

等價(jià)類劃分

方法舉例判定一條件覆蓋

邊值分析

甚本路徑很蓋

比較測試

循環(huán)欖蓋

模塊接口測試

2)黑盒測試

>黑盒測試:又稱功能測試、數(shù)據(jù)驅(qū)動測試或基于規(guī)格說明書的測試;基于產(chǎn)品的功

能,目的是檢查程序各功能是否實(shí)現(xiàn),并檢查其中的錯誤;測試規(guī)劃基于產(chǎn)品的內(nèi)

部結(jié)構(gòu)來規(guī)劃測試,是一種從用戶觀點(diǎn)出發(fā)的測試;

>常見方法:等價(jià)類劃分、邊界值分析、因果圖、錯誤推測法;

>常用工具:WinRunner,QuickTestPro,RationalRobot等。

第14頁共38頁

軟件測試基礎(chǔ)知識

3)灰盒測試

>介于黑盒測試和白盒測試兩者之間,不但關(guān)注輸出對于輸入的正確性,同時(shí)也關(guān)注

程序結(jié)構(gòu)內(nèi)部表現(xiàn)。但這種關(guān)注并不像白盒測試那樣詳細(xì)、完整,而只是通過一些

表征性的現(xiàn)象、事件和標(biāo)志等來判斷內(nèi)部的運(yùn)行狀態(tài)。

>灰盒測試借助測試工具可以同時(shí)考核兩種測試通過準(zhǔn)則,一是基于需求的覆蓋率準(zhǔn)

則;二是基于代碼的覆蓋率準(zhǔn)則。能夠給出這兩種指標(biāo),并進(jìn)行分析和審查,則可

以比較充分地考核測試的完整程度。

4)ALAC(Act-1ike-a-customer)測試

>ALAC測試是一種基于客戶使用產(chǎn)品的知識開發(fā)出來的測試方法。是基于復(fù)雜的軟

件產(chǎn)品有許多錯誤的原則,最大的受益者是用戶,缺陷查找和改正將針對哪些客戶

最容易遇到的錯誤。

4.1.4.軟件測試過程

1)單元測試:集中對用源代碼實(shí)現(xiàn)的每一個程序單元進(jìn)行測試,檢查各個程序模塊是否正

確地實(shí)現(xiàn)了規(guī)定的功能,常用白盒測試;

2)集成測試:把已測試過的模塊組裝起來,主要對與設(shè)計(jì)相關(guān)的軟件體系結(jié)構(gòu)的構(gòu)造進(jìn)行

測試,較多采用黑盒測試;

3)確認(rèn)測試:則是要檢查已實(shí)現(xiàn)的軟件是否滿足了需求規(guī)格說明中確定了的各種需求,以

及軟件配置是否完全、正確;通常采用黑盒測試;

4)系統(tǒng)測試:把已經(jīng)經(jīng)過確認(rèn)的軟件納入實(shí)際運(yùn)行環(huán)境中,與其它系統(tǒng)成份組合在一起進(jìn)

行測試,通常采用黑盒測試;

5)驗(yàn)收測試:檢驗(yàn)軟件產(chǎn)品質(zhì)量的最后一道工序,突出客戶的作用,同時(shí)軟件開發(fā)人員也應(yīng)

有一定程度的參與。

>軟件測試的輸入信息:軟件配置(需求說明書、設(shè)計(jì)說明書、被測的源程序),測試配

置(測試計(jì)劃、測試步驟、測試用例、具體實(shí)施測試的測試程序、測試工具)

第15頁共38頁

軟件測試基礎(chǔ)知識

4.2.單元測試

4.2.1.單元測試的主要任務(wù)

又稱模塊測試,是針對軟件設(shè)計(jì)的最小單位-程序模塊,進(jìn)行正確性檢驗(yàn)的測試工作。其目

的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯。主要解決5個方面的問題:模塊接口、局部數(shù)

據(jù)結(jié)構(gòu)、邊界條件、獨(dú)立的路徑和錯誤處理;

1)模塊接口:

>調(diào)用被測模塊的輸入?yún)?shù)與模塊的形式參數(shù)在個數(shù)、屬性、順序上是否匹配。

>被測模塊調(diào)用子模塊時(shí),它輸入給子模塊的參數(shù)與子模塊中的形式參數(shù)在個數(shù)、屬

性、順序上是否匹配。

>是否修改了只做輸入用的形式參數(shù)。

>輸出給標(biāo)準(zhǔn)函數(shù)的參數(shù)在個數(shù)、屬性、順序上是否正確。

>全局變量的定義在各模塊中是否一致。

>限制是否通過形式參數(shù)來傳送。

2)局部數(shù)據(jù)結(jié)構(gòu):

>不正確或不一致的數(shù)據(jù)類型說明

>使用尚未賦值或尚未初始化的變量

>錯誤的初始值或錯誤的缺省值

>變量名拼寫錯或書寫錯

>不一致的數(shù)據(jù)類型

>全局?jǐn)?shù)據(jù)對模塊的影響

3)路徑測試

>選擇適當(dāng)?shù)臏y試用例,對模塊中重要的執(zhí)行路徑進(jìn)行測試。

>應(yīng)當(dāng)設(shè)計(jì)測試用例查找由于錯誤的計(jì)算、不正確的比較或不正常的控制流而導(dǎo)致的

錯誤。對基本執(zhí)行路徑和循環(huán)進(jìn)行測試可以發(fā)現(xiàn)大量的路徑錯誤。

4)邊界條件

>注意數(shù)據(jù)流、控制流中剛好等于、大于或小于確定的比較值時(shí)出錯的可能性。對這

些地方要仔細(xì)地選擇測試用例,認(rèn)真加以測試。

>如果對模塊運(yùn)行時(shí)間有要求的話,還要專門進(jìn)行關(guān)鍵路徑測試,以確定最壞情況下

第16頁共38頁

軟件測試基礎(chǔ)知識

和平均意義下影響模塊運(yùn)行時(shí)間的因素。

5)出錯處理

>錯的描述是否難以理解

>出錯的描述是否能夠?qū)﹀e誤定位

>顯示的錯誤與實(shí)際的錯誤是否相符

>對錯誤條件的處理正確與否

>在對錯誤進(jìn)行處理之前,錯誤條件是否已經(jīng)引起系統(tǒng)的干預(yù)等

4.2.2.單元測試的執(zhí)行過程

1)測試時(shí)間:一般和代碼編寫工作同時(shí)進(jìn)行,完成程序編寫、復(fù)查和語法正確性,進(jìn)行單

元測試用例設(shè)計(jì);

2)執(zhí)行人員:一般由編寫代碼的開發(fā)人員進(jìn)行單元測試;

3)考慮測試模塊時(shí),同時(shí)要考慮它和外界的聯(lián)系,用一些輔助模塊去模擬與被測模塊相聯(lián)

系的其它模塊。輔助模塊:驅(qū)動模塊(driver)和樁模塊(stub)

>驅(qū)動模塊:用以模擬被測模塊的上級模塊,相當(dāng)于輸入;

>樁模塊:用以模塊被測模塊工作過程中所調(diào)用的模塊,相當(dāng)于輸出;

4.3.集成測試

1)在單元測試的基礎(chǔ)上,需要將所有模塊按照設(shè)計(jì)時(shí)結(jié)構(gòu)圖,把它們連接起來進(jìn)行集成測

試,測試內(nèi)容:

>在把各個模塊連接起來的時(shí)候,穿越模塊接口的數(shù)據(jù)是否會丟失;

>一個模塊的功能是否會對另一個模塊的功能產(chǎn)生不利的影響;

>各個子功能組合起來,能否達(dá)到預(yù)期要求的父功能;

第17頁共38頁

軟件測試基礎(chǔ)知識

>全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問題:

>單個模塊的誤差累積起來,是否會放大,從而達(dá)到不能接受的程度。

在單元測試的同時(shí)可進(jìn)行組裝測試,發(fā)現(xiàn)并排除在模塊連接中可能出現(xiàn)的問題,最終構(gòu)

成要求的軟件系統(tǒng)。

2)一般使用兩種集成測試方法:非增式測試方法與增式測試方法;

4.3.1.非增式測試方法

1)在配備輔助模塊的條件下,對所有模塊進(jìn)行個別的單元測試。然后按照程序結(jié)構(gòu)圖把各

個模塊聯(lián)結(jié)起來,把連接后的程序當(dāng)作一個整體進(jìn)行測試。如下圖:

13口叵

由固F

(b)

4.3.2.增式測試方法

1)自頂向下增式測試:逐步集成和逐步測試,是按結(jié)構(gòu)自上而下進(jìn)行的,即首先對主模塊,

然后按照控制層次結(jié)構(gòu)向下進(jìn)行集成。從屬于主控模塊的模塊可按廣度優(yōu)先方式集成到

結(jié)構(gòu)中去。如下圖,按深度組裝進(jìn)行測試:

按深度方向組裝的例子

第18頁共38頁

軟件測試基礎(chǔ)知識

2)自底向上增式測試:首先測試最底層模塊,然后增加上一級模塊,最后增加主模塊。如

下圖:

0

-A

0

4.3.3.不同集成測試方法的比較

方法特點(diǎn)

非增式測試方法先分散,再集中,如果在模塊接口處存在錯誤,只會在最后的集成測試時(shí)暴露出來

可做到逐步求精,也能讓測試者看到系統(tǒng)的框架,但需要提供樁模塊,并且在輸入/輸

自頂向下測試方法

出模塊接入系統(tǒng)前,在樁模塊中表示數(shù)據(jù)有一定困難

驅(qū)動模塊模擬了所有調(diào)用參數(shù),生成測試數(shù)據(jù)沒有困難,但直到最后一個模塊被加進(jìn)

自底向上測試方法

去之后才能看到整個程序的框架

4.4.確認(rèn)測試

又稱有效性測試。任務(wù)是驗(yàn)證軟件的功能和性能及其它特性是否與用戶的要求一致。

4.4.1.確認(rèn)測試的準(zhǔn)則

1)測試結(jié)果與預(yù)期的結(jié)果相符。這說明軟件的這部分功能或性能特征與需求規(guī)格說明書相

符合,從而這部分程序被接受。

2)測試結(jié)果與預(yù)期的結(jié)果不符。這說明軟件的這部分功能或性能特征與需求規(guī)格說明不一

致,因此要為它提交-一份問題報(bào)告。

4.4.2.配置審查的內(nèi)容

1)軟件配置復(fù)查的目的是保證:

>軟件配置的所有成分都齊全;

>各方面的質(zhì)量都符合要求;

>具有維護(hù)階段所必需的細(xì)節(jié);

>而且已經(jīng)編排好分類的目錄。

第19頁共38頁

軟件測試基礎(chǔ)知識

2)應(yīng)當(dāng)嚴(yán)格遵守用戶手冊和操作手冊中規(guī)定的使用步驟,以便檢查這些文檔資料的完整性

和正確性。

4.5.系統(tǒng)測試

4.5.1.恢復(fù)測試

>恢復(fù)測試主要檢查系統(tǒng)的容錯能力。當(dāng)系統(tǒng)出錯時(shí),能否在指定時(shí)間間隔內(nèi)修正錯誤并

重新啟動系統(tǒng)。恢復(fù)測試首先要采用各種辦法強(qiáng)迫系統(tǒng)失敗,然后驗(yàn)證系統(tǒng)是否能盡快

恢復(fù)。對于自動恢復(fù)需驗(yàn)證重新初始化(reinitialization)、檢查點(diǎn)(checkpointing

mechanisms)>數(shù)據(jù)恢復(fù)(datarecovery)和重新啟動(restart)等機(jī)制的正確性;對于

人工干預(yù)的恢復(fù)系統(tǒng),還需估測平均修復(fù)時(shí)間,確定其是否在可接受的范圍內(nèi)。

4.5.2.安全測試

>安全測試驗(yàn)證安裝在系統(tǒng)內(nèi)的保護(hù)機(jī)制能否在實(shí)際中保護(hù)系統(tǒng)且不受非法侵入,不受各

種非法的干擾,即檢查系統(tǒng)對非法侵入的防范能力;

4.5.3.強(qiáng)度測試

>強(qiáng)度測試檢查程序?qū)Ξ惓G闆r的抵抗能力。強(qiáng)度測試總是迫使系統(tǒng)在異常的資源配置下

運(yùn)行。例如,①當(dāng)中斷的正常頻率為每秒一至兩個時(shí),運(yùn)行每秒產(chǎn)生十個中斷的測試用

例;②定量地增長數(shù)據(jù)輸入率,檢查輸入子功能的反映能力;③運(yùn)行需要最大存儲空間

(或其他資源)的測試用例;④運(yùn)行可能導(dǎo)致虛存操作系統(tǒng)崩潰或磁盤數(shù)據(jù)劇烈抖動的

測試用例,等等。

4.5.4.性能測試

>測試軟件在集成系統(tǒng)中的運(yùn)行性能。特別是對于那些實(shí)時(shí)和嵌入式系統(tǒng),軟件部分即使

滿足功能要求,也未必能夠滿足性能要求,雖然從單元測試起,每一測試步驟都包含性

能測試,但只有當(dāng)系統(tǒng)真正集成之后,在真實(shí)環(huán)境中才能全面、可靠地測試運(yùn)行性能系

統(tǒng)性能測試是為了完成這一任務(wù)。性能測試有時(shí)與強(qiáng)度測試相結(jié)合,經(jīng)常需要其他軟硬

件的配套支持

第20頁共38頁

軟件測試基礎(chǔ)知識

4.6.驗(yàn)收測試

4.6.1.驗(yàn)收測試定義

1)通過綜合測試之后,軟件已完全組裝起來,接口方面的錯誤也已排除,軟件測試的最后

一步——驗(yàn)收測試即可開始。驗(yàn)收測試應(yīng)檢查軟件能否按合同要求進(jìn)行工作,即是否滿

足軟件需求說明書中的確認(rèn)標(biāo)準(zhǔn)。

4.6.2.驗(yàn)收的結(jié)果:

1)驗(yàn)收測試的結(jié)果有兩種可能?種是功能和性能指標(biāo)滿足軟件需求說明的要求,用戶可以

接受;另一種是軟件不滿足軟件需求說明的要求,用戶無法接受。項(xiàng)目進(jìn)行到這個階段

才發(fā)現(xiàn)嚴(yán)重錯誤和偏差一般很難在預(yù)定的工期內(nèi)改正,因此必須與用戶協(xié)商,尋求一個

妥善解決問題的方法。

4.6.3.三種驗(yàn)收方法:

1)正式驗(yàn)收測試

>正式驗(yàn)收測試是一項(xiàng)管理嚴(yán)格的過程,它通常是系統(tǒng)測試的延續(xù)。計(jì)劃和設(shè)計(jì)這些

測試的周密和詳細(xì)程度不亞于系統(tǒng)測試。選擇的測試用例應(yīng)該是系統(tǒng)測試中所執(zhí)行

測試用例的子集。

>要測試的功能、特性、細(xì)節(jié)為已知,可對測試過程進(jìn)行評測和監(jiān)測。但要求大量的

資源和計(jì)劃。

2)Alpha測試

>由用戶在開發(fā)者的場所進(jìn)行,并且在開發(fā)者對用戶的“指導(dǎo)”下進(jìn)行測試。

>特點(diǎn)是:山開發(fā)員在現(xiàn)場,在開發(fā)環(huán)境或模擬實(shí)際操作環(huán)境下測試(受控制),Alpha

測試發(fā)現(xiàn)的錯誤,可以在測試現(xiàn)場立刻反饋給開發(fā)人員,由開發(fā)人員及時(shí)分析和處

理。

3)Beta測試

>最終用戶在一個或多個用戶的實(shí)際使用環(huán)境下進(jìn)行的測試。在Beta測試中,由用

戶記下遇到的所有問題,包括真實(shí)的以及主管認(rèn)定的,定期向開發(fā)者報(bào)告,開發(fā)者

在綜合用戶的報(bào)告后,做出修改,最后將軟件產(chǎn)品交付給全體用戶使用。

第21頁共38頁

軟件測試基礎(chǔ)知識

>開發(fā)者通常不在測試現(xiàn)場,因而,Beta測試是在開發(fā)者無法控制的環(huán)境下進(jìn)行的

軟件現(xiàn)場應(yīng)用,只有當(dāng)Alpha測試達(dá)到一定的可靠程度后,才能開始Beta測試.

4.6.4.軟件配置審核和文檔資料

1.可執(zhí)行程序、源程序、配置腳木、測試程序或腳本。

2.主要的開發(fā)類文檔:《需求分析說明書》、《概要設(shè)計(jì)說明書》、《詳細(xì)設(shè)計(jì)說明書》、《數(shù)

據(jù)庫設(shè)計(jì)說明書》、《測試計(jì)劃》、《測試報(bào)告》、《程序維護(hù)手冊》、《程序員開發(fā)手冊》、

《用戶操作手冊》、《項(xiàng)目總結(jié)報(bào)告》

3.主要的管理類文檔:《項(xiàng)目計(jì)劃書》、《質(zhì)量控制計(jì)劃》、《配置管理計(jì)劃》、《用戶培訓(xùn)計(jì)

劃》、《質(zhì)量總結(jié)報(bào)告》、《評審報(bào)告》、《會議記錄》、《開發(fā)進(jìn)度月報(bào)》。

5.軟件測試用例設(shè)計(jì)

5.1.黑盒測試方法

5.1.1.邊界值分析法

1)定義:邊界值分析法就是對輸入或輸出的邊界值進(jìn)行測試的一種黑盒測試方法。通常作

為對等價(jià)類劃分法的補(bǔ)充;選取正好等于,剛剛大于或剛剛小于邊界的值作為測試數(shù)據(jù);

2)常見的邊界值

>對16-bit的整數(shù)而言32767和-32768是邊界

>屏幕上光標(biāo)在最左上、最右下位置

>報(bào)表的第一行和最后一行

>數(shù)組元素的第一個和最后一個

>循環(huán)的第0次、第1次

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論