

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、軟件測(cè)試技術(shù),第 1 章 軟件工程與軟件測(cè)試,1.1 軟 件 工 程1.2 軟 件 質(zhì) 量1.3 軟 件 測(cè) 試 1.4 軟件測(cè)試人員的基本素質(zhì),嚴(yán)格地說(shuō),軟件工程是應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理開(kāi)發(fā)軟件的工程。通俗地說(shuō),軟件工程是實(shí)現(xiàn)一個(gè)大型程序的一套原則方法,即按工程化的原則和方法組織軟件開(kāi)發(fā)工作。 軟件測(cè)試是軟件工程的一個(gè)重要環(huán)節(jié),相當(dāng)于工程領(lǐng)域中的質(zhì)量檢驗(yàn)部分,是確保軟件工程質(zhì)量的重要手段
2、。,1.1 軟 件 工 程,1.1.1 軟件工程的目標(biāo)及其一般開(kāi)發(fā)過(guò)程 一個(gè)軟件產(chǎn)品從形成概念開(kāi)始,經(jīng)過(guò)開(kāi)發(fā)、使用和維護(hù),直到最后退出使用的全過(guò)程稱為軟件生存周期。軟件生存周期根據(jù)軟件所處的狀態(tài),以及軟件開(kāi)發(fā)活動(dòng)的目的和任務(wù),可劃分為若干個(gè)階段。一般軟件生存周期包括軟件定義、軟件開(kāi)發(fā)以及軟件使用與維護(hù)3個(gè)部分。,1.軟件定義 可行性分析的任務(wù)是了解用戶的要求及實(shí)現(xiàn)環(huán)境,從技術(shù)、經(jīng)濟(jì)和社會(huì)等幾個(gè)方面研究并論證
3、軟件系統(tǒng)的可行性。 需求分析的任務(wù)是確定所要開(kāi)發(fā)軟件的功能需求、性能需求和運(yùn)行環(huán)境約束,編制軟件需求規(guī)格說(shuō)明、軟件系統(tǒng)的確認(rèn)測(cè)試準(zhǔn)則。軟件的性能需求包括軟件的適應(yīng)性、安全性、可靠性、可維護(hù)性錯(cuò)誤處理等。,2.軟件開(kāi)發(fā)軟件開(kāi)發(fā)是按照需求規(guī)格說(shuō)明的要求,由抽象到具體,逐步生成軟件的過(guò)程。軟件開(kāi)發(fā)一般由設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試等階段組成。,3.軟件使用和維護(hù) 軟件的使用是在軟件通過(guò)測(cè)試后,將軟件安裝在用戶確定的運(yùn)行
4、環(huán)境中移交給用戶使用。軟件的維護(hù)是對(duì)軟件系統(tǒng)進(jìn)行修改或?qū)浖枨笞兓龀龇磻?yīng)的過(guò)程。,1.1.2 軟件過(guò)程模型 軟件開(kāi)發(fā)過(guò)程中存在各種復(fù)雜因素,為了解決由此而帶來(lái)的種種問(wèn)題,軟件開(kāi)發(fā)者們經(jīng)過(guò)多年的摸索,給出了多種實(shí)現(xiàn)軟件工程的方式——軟件過(guò)程模型,如瀑布過(guò)程模型、螺旋過(guò)程模型和增量過(guò)程模型等。,1.瀑布過(guò)程模型 瀑布過(guò)程模型反映了人們?cè)缙趯?duì)軟件工程的認(rèn)識(shí)水平,是人們所熟悉的一種線性思維的體現(xiàn)。
5、 瀑布過(guò)程模型強(qiáng)調(diào)階段的劃分及其順序性、各階段工作及其文檔的完備性,是一種嚴(yán)格線性的、按階段順序的、逐步細(xì)化的開(kāi)發(fā)模式,如圖1-1所示。,,圖1-1 瀑布過(guò)程模型,2.螺旋過(guò)程模型 螺旋過(guò)程模型的基本思路是,依據(jù)前一個(gè)版本的結(jié)果構(gòu)造新的版本,這個(gè)不斷重復(fù)迭代的過(guò)程形成了一個(gè)螺旋上升的路徑,如圖1-2所示。,,圖1-2 螺旋過(guò)程模型,3.增量過(guò)程模型 有些時(shí)候可能會(huì)用一種幾乎連續(xù)的過(guò)程小幅度地推進(jìn)項(xiàng)目
6、,這就是增量過(guò)程模型,如圖1-3所示。,,圖1-3 增量過(guò)程模型,1.2 軟 件 質(zhì) 量,軟件質(zhì)量是軟件的生命,它直接影響軟件的使用與維護(hù)。 通常軟件質(zhì)量由以下幾方面進(jìn)行評(píng)價(jià)。,① 軟件需求是衡量軟件質(zhì)量的基礎(chǔ),不符合需求的軟件就不具備質(zhì)量。設(shè)計(jì)的軟件應(yīng)在功能、性能等方面都符合要求,并能可靠地運(yùn)行。 ② 軟件結(jié)構(gòu)良好,易讀、易于理解,并易于修改、維護(hù)。 ③ 軟件系統(tǒng)具有友好的用戶界面,便于用戶使用。
7、 ④ 軟件生存周期中各階段文檔齊全、規(guī)范,便于配置、管理。,1.2.1 質(zhì)量與質(zhì)量模型 軟件的質(zhì)量因素很多,如正確性、精確性、可靠性、容錯(cuò)性、性能、效率、易用性、可理解性、簡(jiǎn)潔性、可復(fù)用性、可擴(kuò)充性、兼容性等。 軟件質(zhì)量因素也稱為軟件質(zhì)量特性,反映了質(zhì)量的本質(zhì)。討論一個(gè)軟件的質(zhì)量,問(wèn)題最終要?dú)w結(jié)到定義軟件的質(zhì)量特性。,面對(duì)眾多的質(zhì)量因素如何取折衷,這實(shí)際上就是區(qū)分質(zhì)量因素對(duì)軟件質(zhì)量影響程度輕重的問(wèn)題,這個(gè)問(wèn)題
8、已經(jīng)有了解決方案,即軟件質(zhì)量模型。 圖1-4所示為ISO/IEC 9126-1991標(biāo)準(zhǔn)規(guī)定的軟件質(zhì)量度量模型。它由3層組成,其中第1層稱為質(zhì)量特性,第2層稱為質(zhì)量子特性,第3層稱為度量。,,圖1-4 ISO軟件質(zhì)量度量模型,軟件質(zhì)量評(píng)價(jià)的目的是為了直接支持開(kāi)發(fā)并獲得能滿足用戶要求的軟件。最終目標(biāo)是保證產(chǎn)品能提供所要求的質(zhì)量,即滿足用戶明確的和隱含的要求。軟件產(chǎn)品的一般評(píng)價(jià)過(guò)程是,確定評(píng)價(jià)需求,然后規(guī)定、設(shè)計(jì)和執(zhí)行評(píng)價(jià),如
9、圖1-5所示。,,圖1-5 軟件評(píng)價(jià)過(guò)程,1.2.2 軟件質(zhì)量保證 為了在軟件開(kāi)發(fā)過(guò)程中保證軟件的質(zhì)量,軟件的質(zhì)量保證活動(dòng)應(yīng)貫穿整個(gè)軟件生存周期的每一個(gè)階段。軟件的質(zhì)量保證的措施主要有檢查、評(píng)審和測(cè)試。 如圖1-6所示,軟件質(zhì)量保證的工作從項(xiàng)目一開(kāi)始就應(yīng)介入。,,圖1-6 質(zhì)量保證活動(dòng),1.3 軟 件 測(cè) 試,1.3.1 軟件測(cè)試的定義及目的 簡(jiǎn)單地說(shuō),軟件測(cè)試就是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程
10、。,在IEEE提出的軟件工程標(biāo)準(zhǔn)術(shù)語(yǔ)中,軟件測(cè)試被定義為:“使用人工和自動(dòng)手段來(lái)運(yùn)行或測(cè)試某個(gè)系統(tǒng)的過(guò)程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或弄清楚預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別。” 軟件測(cè)試是與軟件質(zhì)量密切聯(lián)系在一起的,歸根結(jié)底,軟件測(cè)試是為了保證軟件質(zhì)量。,軟件測(cè)試是一個(gè)找錯(cuò)的過(guò)程。軟件測(cè)試的過(guò)程亦是程序運(yùn)行的過(guò)程。程序運(yùn)行需要數(shù)據(jù),為測(cè)試設(shè)計(jì)的數(shù)據(jù)稱為測(cè)試用例。測(cè)試用例的設(shè)計(jì)原則是盡可能暴露程序中的錯(cuò)誤。,軟件是由人來(lái)完成的,所有由
11、人做的工作都不會(huì)是完美無(wú)缺的。軟件開(kāi)發(fā)是個(gè)很復(fù)雜的過(guò)程,期間很容易產(chǎn)生錯(cuò)誤。無(wú)論是軟件從業(yè)人員、專家和學(xué)者做了多大的努力,軟件錯(cuò)誤仍然存在。因而大家也得到了一種共識(shí):軟件中殘存著錯(cuò)誤,這是軟件的一種屬性,是無(wú)法改變的。所以通常說(shuō)軟件測(cè)試的目的就是為了發(fā)現(xiàn)盡可能多的缺陷,并期望通過(guò)改錯(cuò)來(lái)把缺陷統(tǒng)統(tǒng)消滅,以期提高軟件的質(zhì)量。一個(gè)成功的測(cè)試用例在于發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的缺陷。,軟件測(cè)試的目的是以最少的人力、物力和時(shí)間找出軟件中潛在的各種錯(cuò)誤和缺
12、陷,通過(guò)修正各種錯(cuò)誤和缺陷提高軟件質(zhì)量,回避軟件發(fā)布后由于潛在的軟件缺陷和錯(cuò)誤造成的隱患所帶來(lái)的商業(yè)風(fēng)險(xiǎn)。,1.3.2 軟件測(cè)試信息流為進(jìn)一步說(shuō)明軟件測(cè)試的過(guò)程,這里給出軟件測(cè)試的信息流示意圖,如圖1-8所示。,,圖1-8 軟件測(cè)試信息流,1.3.3 軟件測(cè)試與軟件開(kāi)發(fā)過(guò)程的關(guān)系 對(duì)于軟件測(cè)試與軟件開(kāi)發(fā)過(guò)程之間的關(guān)系,套用固定的模型不是聰明之舉。比如“程序設(shè)計(jì)”與“測(cè)試”之間的關(guān)系,習(xí)慣上總以為程序設(shè)計(jì)在先,測(cè)試在后
13、,如圖1-9(a)所示。而對(duì)于一些復(fù)雜的程序,將測(cè)試分為同步測(cè)試與總測(cè)試更有效,如圖1-9(b)所示。,,圖1-9 程序設(shè)計(jì)與測(cè)試的關(guān)系,現(xiàn)在還有一種全新的軟件開(kāi)發(fā)模式——以測(cè)試驅(qū)動(dòng)軟件開(kāi)發(fā),總的思想是:軟件測(cè)試是貫穿于軟件開(kāi)發(fā)過(guò)程的。軟件生存周期的各個(gè)階段中都少不了相應(yīng)的測(cè)試,軟件生存周期各個(gè)階段的測(cè)試分別對(duì)應(yīng)于軟件測(cè)試過(guò)程中的單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試和確認(rèn)測(cè)試,如圖1-10所示。這種對(duì)應(yīng)關(guān)系有利于軟件開(kāi)發(fā)過(guò)程的管理和軟件質(zhì)量的
14、控制。,,圖1-10 軟件測(cè)試與軟件開(kāi)發(fā)的關(guān)系,1.3.4 軟件測(cè)試與質(zhì)量保證的區(qū)別1.質(zhì)量保證 質(zhì)量保證(QA)工作通過(guò)預(yù)防、檢查與改進(jìn)來(lái)保證軟件質(zhì)量。QA采用“全面質(zhì)量管理”和“過(guò)程改進(jìn)”的原理開(kāi)展質(zhì)量保證工作。,2.軟件測(cè)試 測(cè)試雖然也與開(kāi)發(fā)過(guò)程緊密相關(guān),但關(guān)心的不是過(guò)程的活動(dòng),而是對(duì)過(guò)程的產(chǎn)物以及開(kāi)發(fā)出的軟件進(jìn)行剖析。測(cè)試人員要“執(zhí)行”軟件,對(duì)過(guò)程中的產(chǎn)物——開(kāi)發(fā)文檔和源代碼進(jìn)行走查,運(yùn)行軟件,
15、以找出問(wèn)題,報(bào)告質(zhì)量。測(cè)試人員必須假設(shè)軟件存在潛在的問(wèn)題,測(cè)試中所做的操作是為了找出更多的問(wèn)題,而不僅僅是為了驗(yàn)證每一件事是正確的。,對(duì)測(cè)試中發(fā)現(xiàn)的問(wèn)題的分析、追蹤與回歸測(cè)試也是軟件測(cè)試中的重要工作,因此軟件測(cè)試是保證軟件質(zhì)量的一個(gè)重要環(huán)節(jié)。 軟件質(zhì)量保證活動(dòng)與軟件測(cè)試的關(guān)系可用圖1-11說(shuō)明。,,圖1-11 軟件質(zhì)量保證活動(dòng)與測(cè)試的關(guān)系,1.3.5 軟件測(cè)試的發(fā)展歷程及趨勢(shì) 軟件測(cè)試是伴隨著軟件的產(chǎn)生
16、而產(chǎn)生的,有了軟件的生成和運(yùn)行就必然有軟件測(cè)試。在早期的軟件開(kāi)發(fā)過(guò)程中,測(cè)試的含義比較窄,將測(cè)試等同于“調(diào)試”,目的是糾正軟件中已經(jīng)知道的故障,常常由軟件開(kāi)發(fā)人員自己完成這部分工作。對(duì)測(cè)試的投入極少,測(cè)試介入得也晚,常常是等到形成代碼,產(chǎn)品已經(jīng)基本完成時(shí)才進(jìn)行測(cè)試。,直到1957年,軟件測(cè)試才開(kāi)始與調(diào)試區(qū)別開(kāi)來(lái),成為一種發(fā)現(xiàn)軟件缺陷的活動(dòng)。 直到20世紀(jì)80年代早期,“質(zhì)量”的號(hào)角才開(kāi)始吹響。軟件測(cè)試的定義發(fā)生了改變,
17、測(cè)試不單純是一個(gè)發(fā)現(xiàn)錯(cuò)誤的過(guò)程,而且包含軟件質(zhì)量評(píng)價(jià)的內(nèi)容。軟件開(kāi)發(fā)人員和測(cè)試人員開(kāi)始坐在一起探討軟件工程和測(cè)試問(wèn)題。制定了各類標(biāo)準(zhǔn),包括IEEE標(biāo)準(zhǔn)、美國(guó)ANSI標(biāo)準(zhǔn)和ISO國(guó)際標(biāo)準(zhǔn)。,20世紀(jì)90年代,測(cè)試工具終于盛行起來(lái)。到了2002年,Rich和Stefan在《系統(tǒng)的軟件測(cè)試》一書(shū)中對(duì)軟件測(cè)試做了進(jìn)一步定義:“測(cè)試是為了度量和提高被測(cè)軟件的質(zhì)量,對(duì)測(cè)試軟件進(jìn)行工程設(shè)計(jì)、實(shí)施和維護(hù)的整個(gè)生命周期過(guò)程”。這些經(jīng)典論著對(duì)軟件測(cè)試研究的
18、理論化和體系化產(chǎn)生了巨大的影響。,近20年來(lái),隨著計(jì)算機(jī)和軟件技術(shù)的飛速發(fā)展,軟件測(cè)試技術(shù)的研究也取得了很大的突破,測(cè)試專家總結(jié)了很好的測(cè)試模型,如著名的V模型,在單元測(cè)試、自動(dòng)化測(cè)試等方面涌現(xiàn)了大量?jī)?yōu)秀的軟件測(cè)試工具。,雖然軟件測(cè)試技術(shù)的發(fā)展很快,但是其發(fā)展速度仍落后于軟件開(kāi)發(fā)技術(shù)的發(fā)展速度,使得軟件測(cè)試在今天面臨著很大的挑戰(zhàn),主要體現(xiàn)在以下幾個(gè)方面。 ① 軟件在國(guó)防現(xiàn)代化、社會(huì)信息化和國(guó)民經(jīng)濟(jì)信息化領(lǐng)域中的作用越來(lái)越重
19、要,由此產(chǎn)生的測(cè)試任務(wù)越來(lái)越繁重。 ② 軟件規(guī)模越來(lái)越大,功能越來(lái)越復(fù)雜,如何進(jìn)行充分而有效的測(cè)試成為難題。,③ 面向?qū)ο蟮拈_(kāi)發(fā)技術(shù)越來(lái)越普及,但是面向?qū)ο蟮臏y(cè)試技術(shù)卻剛剛起步。 ④ 對(duì)分布式系統(tǒng)的整體性能還不能進(jìn)行很好的測(cè)試。 ⑤ 對(duì)實(shí)時(shí)系統(tǒng)缺乏有效的測(cè)試手段。 ⑥ 隨著安全問(wèn)題的日益突出,對(duì)信息系統(tǒng)的安全性如何進(jìn)行有效的測(cè)試與評(píng)估,成為世界性難題。,根據(jù)國(guó)內(nèi)外軟件測(cè)試的發(fā)展現(xiàn)狀,可以看
20、到軟件測(cè)試有以下的發(fā)展趨勢(shì)。 ① 測(cè)試工作將進(jìn)一步前移。 ② 軟件架構(gòu)師、開(kāi)發(fā)工程師、QA人員、測(cè)試工程師將進(jìn)行更好的融合。 ③ 測(cè)試職業(yè)將得到充分的尊重。,④ 設(shè)置獨(dú)立的軟件測(cè)試部門(mén)將成為越來(lái)越多的軟件公司的共識(shí)。軟件測(cè)試部門(mén)將和開(kāi)發(fā)部、質(zhì)量保證部一樣作為一個(gè)重要的獨(dú)立部門(mén)存在。 ⑤ 測(cè)試外包服務(wù)將快速增長(zhǎng)。和軟件開(kāi)發(fā)外包一樣,軟件測(cè)試外包將成為全球化的一種趨勢(shì)。可以利用職業(yè)測(cè)
21、試專家隊(duì)伍與機(jī)構(gòu)為自己的產(chǎn)品進(jìn)行測(cè)試,而且可以節(jié)省測(cè)試費(fèi)用。,1.4 軟件測(cè)試人員的基本素質(zhì),軟件測(cè)試人員應(yīng)具備下列基本素質(zhì)。1.具有良好的計(jì)算機(jī)編程基礎(chǔ)2.具有創(chuàng)新精神和超前意識(shí)3.不懈努力,追求完美4.具有整體觀念,對(duì)細(xì)節(jié)敏感5.團(tuán)隊(duì)合作精神,第 2 章 軟件測(cè)試的基本知識(shí),2.1 軟件測(cè)試貫穿于整個(gè)的軟件開(kāi)發(fā)生命周期2.2 測(cè) 試 模 型2.3 軟件測(cè)試的分類2.4 軟件測(cè)試的原則2.5 軟 件 測(cè)
22、 試 策 略2.6 軟 件 測(cè) 試 流 程2.7 測(cè)試的成功經(jīng)驗(yàn),2.1 軟件測(cè)試貫穿于整個(gè)的軟件開(kāi)發(fā)生命周期,2.1.1 軟件測(cè)試中使用的各種術(shù)語(yǔ) ① 軟件錯(cuò)誤 ② 軟件缺陷 ③ 軟件故障 ④ 軟件失效,2.1.2 軟件測(cè)試貫穿于整個(gè)的軟件開(kāi)發(fā)生命周期 20世紀(jì)70年代中期以來(lái),形成了軟件開(kāi)發(fā)生命周期的
23、概念。 測(cè)試工作應(yīng)該著眼于整個(gè)軟件開(kāi)發(fā)生命周期,特別是著眼于編碼以前各開(kāi)發(fā)階段的工作來(lái)保證軟件的質(zhì)量。也就是說(shuō),測(cè)試應(yīng)該從軟件開(kāi)發(fā)生命周期的第一個(gè)階段開(kāi)始,并貫穿于整個(gè)的軟件開(kāi)發(fā)生命周期。,談到測(cè)試,首先是為什么要進(jìn)行測(cè)試的問(wèn)題。所有的測(cè)試都是為了發(fā)現(xiàn)和消除軟件的缺陷。 明確為什么要進(jìn)行軟件測(cè)試的問(wèn)題之后,就需要明確測(cè)試什么的問(wèn)題。,軟件的開(kāi)發(fā)有其自己的生命周期,在整個(gè)軟件生命周期中,軟件都有各自的相對(duì)于
24、各生命周期的階段性的輸出結(jié)果,其中也包括需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)及程序編碼等各階段所產(chǎn)生的文檔,包括需求規(guī)格說(shuō)明、概要設(shè)計(jì)規(guī)格說(shuō)明、詳細(xì)設(shè)計(jì)規(guī)格說(shuō)明以及源程序,而所有這些輸出結(jié)果都應(yīng)成為被測(cè)試的對(duì)象。,隨著人們對(duì)軟件工程化的重視以及軟件規(guī)模的日益擴(kuò)大,軟件分析、設(shè)計(jì)的作用越來(lái)越突出,而且有資料表明,60%以上的軟件錯(cuò)誤并不是程序錯(cuò)誤,而是分析和設(shè)計(jì)錯(cuò)誤。因此,做好軟件需求和設(shè)計(jì)階段的測(cè)試工作就顯得非常重要。這就是傳統(tǒng)的測(cè)試概念的擴(kuò)大
25、化,從而提出了軟件全生命周期測(cè)試的概念。,測(cè)試過(guò)程包括了軟件開(kāi)發(fā)生命周期的每個(gè)階段。在需求階段,重點(diǎn)要確認(rèn)需求定義是否符合用戶的需要;在設(shè)計(jì)和編程階段,重點(diǎn)要確定設(shè)計(jì)和編程是否符合需求定義;在測(cè)試和安裝階段,重點(diǎn)是審查系統(tǒng)執(zhí)行是否符合系統(tǒng)規(guī)格說(shuō)明;在維護(hù)階段,要重新測(cè)試系統(tǒng),以確定更改的部分和沒(méi)有更改的部分是否都正常工作。,2.1.3 軟件測(cè)試的手段1.驗(yàn)證和確認(rèn) 通常在測(cè)試中,使用驗(yàn)證來(lái)檢查中間可交付的結(jié)果,使用確認(rèn)來(lái)
26、評(píng)估可執(zhí)行代碼的性能。一般來(lái)說(shuō),驗(yàn)證回答這樣的問(wèn)題:“是否建立了正確的系統(tǒng)?”,而確認(rèn)回答的問(wèn)題是:“建立的系統(tǒng)是否正確?”。,所謂驗(yàn)證,是指如何決定軟件開(kāi)發(fā)的每個(gè)階段、每個(gè)步驟的產(chǎn)品是否正確無(wú)誤,并與其前面的開(kāi)發(fā)階段和開(kāi)發(fā)步驟的產(chǎn)品相一致。驗(yàn)證工作意味著在軟件開(kāi)發(fā)過(guò)程中開(kāi)展一系列活動(dòng),旨在確保軟件能夠正確無(wú)誤地實(shí)現(xiàn)軟件的需求。 所謂確認(rèn),是指如何決定最后的軟件產(chǎn)品是否正確無(wú)誤。,2.功能和結(jié)構(gòu)測(cè)試 當(dāng)
27、測(cè)試人員測(cè)試項(xiàng)目小組的解決方案時(shí),將利用驗(yàn)證和確認(rèn)技術(shù)完成功能和結(jié)構(gòu)測(cè)試。功能測(cè)試通常也被稱為黑盒測(cè)試,因?yàn)闇y(cè)試案例中都不涉及系統(tǒng)的內(nèi)部邏輯。,相反,結(jié)構(gòu)測(cè)試通常被稱為白盒測(cè)試,因?yàn)橄到y(tǒng)的內(nèi)部邏輯常被用于假想的測(cè)試案例。結(jié)構(gòu)測(cè)試主要使用驗(yàn)證技術(shù)。 如上所述,測(cè)試人員用驗(yàn)證技術(shù),通過(guò)評(píng)審系統(tǒng)的結(jié)構(gòu)和邏輯來(lái)確認(rèn)系統(tǒng)的合理性。而確認(rèn)要嚴(yán)格應(yīng)用于物理測(cè)試,來(lái)確定是否產(chǎn)生了預(yù)期的結(jié)果。執(zhí)行結(jié)構(gòu)測(cè)試將主要使用驗(yàn)證技術(shù),而執(zhí)行功能測(cè)
28、試則主要使用確認(rèn)技術(shù)。,2.2 測(cè) 試 模 型,就像軟件開(kāi)發(fā)有過(guò)程模型一樣,測(cè)試也有測(cè)試模型。 描述以上測(cè)試過(guò)程的就是測(cè)試模型。 最具有代表意義的測(cè)試模型稱為V模型。V模型如圖2-1所示。,,圖2-1 V模型示意圖,在開(kāi)發(fā)過(guò)程中,從需求階段到編碼階段,主要是采用驗(yàn)證手段進(jìn)行測(cè)試,如需求評(píng)審、設(shè)計(jì)評(píng)審、代碼走查以及代碼審查等,從而完成對(duì)開(kāi)發(fā)的中間結(jié)果的正確性的評(píng)估。編碼完成并經(jīng)過(guò)代碼審查等測(cè)試之后,此時(shí)的測(cè)試主
29、要在軟件的可執(zhí)行模式下進(jìn)行,即利用確認(rèn)手段進(jìn)行測(cè)試,確認(rèn)測(cè)試包括單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試以及用戶驗(yàn)收測(cè)試等,其相應(yīng)的關(guān)系如圖2-2所示。,,圖2-2 V模型中的測(cè)試,2.3 軟件測(cè)試的分類,按照不同的分類方法,軟件測(cè)試可分為以下幾種類型。1.按照開(kāi)發(fā)階段劃分按照開(kāi)發(fā)階段劃分,軟件測(cè)試可分為單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試和驗(yàn)收測(cè)試。,2.按照測(cè)試實(shí)施組織劃分 按照測(cè)試實(shí)施組織劃分,軟件測(cè)試可分為開(kāi)發(fā)方測(cè)試、用戶測(cè)試(
30、β測(cè)試)和第三方測(cè)試。,3.按照測(cè)試技術(shù)劃分 按照測(cè)試技術(shù)劃分,軟件測(cè)試可分為白盒測(cè)試和黑盒測(cè)試,也可分為靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試。,2.4 軟件測(cè)試的原則,軟件測(cè)試的原則尚沒(méi)有標(biāo)準(zhǔn)的說(shuō)法,大多是經(jīng)驗(yàn)之談,一般有下面幾條可作為測(cè)試的基本原則。(1)所有的測(cè)試都應(yīng)追溯到用戶需求。(2)應(yīng)當(dāng)把“盡早地和不斷地進(jìn)行軟件測(cè)試”作為軟件測(cè)試者的座右銘。,,(3)設(shè)計(jì)時(shí)應(yīng)完成測(cè)試計(jì)劃,詳細(xì)的測(cè)試用例定義可在設(shè)計(jì)模型確定后開(kāi)始,測(cè)試可
31、在代碼產(chǎn)生之前進(jìn)行計(jì)劃和設(shè)計(jì)。(4)pareto原則:測(cè)試發(fā)現(xiàn)的錯(cuò)誤中80%很可能起源于20%的模塊中。應(yīng)孤立這些疑點(diǎn)模塊,進(jìn)行重點(diǎn)測(cè)試。(5)完全測(cè)試是不可能的,測(cè)試需要終止。,(6)應(yīng)由獨(dú)立的第三方來(lái)構(gòu)造測(cè)試。(7)充分注意測(cè)試中的群集現(xiàn)象。(8)要盡量避免測(cè)試的隨意性。(9)兼顧合理的輸入和不合理的輸入數(shù)據(jù)。(10)程序修改后要回歸測(cè)試(11)應(yīng)長(zhǎng)期保留測(cè)試用例,直至系統(tǒng)廢棄。,2.5 軟 件 測(cè) 試 策 略,軟件
32、測(cè)試策略描述軟件測(cè)試活動(dòng)的總體方法和目標(biāo)。 為了檢驗(yàn)開(kāi)發(fā)的軟件能否符合規(guī)格說(shuō)明書(shū)的要求,測(cè)試活動(dòng)可以采用各種不同的策略。這些策略的區(qū)別在于它們表明了不同的出發(fā)點(diǎn)、不同的思路以及采用不同的手段和方法。具體地說(shuō),包括要使用的測(cè)試技術(shù)和工具;測(cè)試完成標(biāo)準(zhǔn);影響資源分配的特殊考慮等。,通常,制定軟件測(cè)試策略要考慮如下的內(nèi)容。(1)要使用的測(cè)試方法。(2)確定質(zhì)量風(fēng)險(xiǎn)。(3)測(cè)試完成和測(cè)試成功所采用的評(píng)價(jià)標(biāo)準(zhǔn)。(4)有關(guān)資源要求
33、或涉及進(jìn)度的特殊考慮。(5)測(cè)試類型、評(píng)估標(biāo)準(zhǔn)以及測(cè)試方法。(6)確定資源。,在軟件測(cè)試策略所包含的內(nèi)容中最主要的部分有兩個(gè),一是要進(jìn)行的測(cè)試過(guò)程,另外一個(gè)就是要執(zhí)行的測(cè)試類型。1.測(cè)試過(guò)程 共分為以下4個(gè)過(guò)程。 ① 單元測(cè)試 ② 集成測(cè)試 ③ 系統(tǒng)測(cè)試 ④ 驗(yàn)收測(cè)試,2.測(cè)試類型 對(duì)于測(cè)試類型的說(shuō)法多種多樣,最多的能有30多種測(cè)試類型。而實(shí)際
34、工作中很多測(cè)試是互相包含的。按照企業(yè)中實(shí)際工作需要,測(cè)試主要包含下面的類型。① 功能測(cè)試② 健壯性測(cè)試③ 接口測(cè)試,④ 強(qiáng)度測(cè)試⑤ 壓力測(cè)試⑥ 性能測(cè)試⑦ 用戶界面測(cè)試⑧ 安全測(cè)試⑨ 可靠性測(cè)試⑩ 安裝/反安裝測(cè)試,11.文檔測(cè)試12.恢復(fù)測(cè)試13.兼容性測(cè)試14.α測(cè)試15.β測(cè)試,2.6 軟 件 測(cè) 試 流 程,軟件測(cè)試工作必須要通過(guò)制定測(cè)試計(jì)劃、設(shè)計(jì)測(cè)試、實(shí)施測(cè)試、執(zhí)行測(cè)試、評(píng)估測(cè)試幾個(gè)階段來(lái)完成。其流
35、程如圖2-4所示。,,圖2-4 軟件測(cè)試流程,2.6.1 制定測(cè)試計(jì)劃 測(cè)試計(jì)劃是對(duì)每個(gè)產(chǎn)品,或是對(duì)各個(gè)開(kāi)發(fā)階段的產(chǎn)品開(kāi)展測(cè)試的策略。,計(jì)劃的目的是用來(lái)識(shí)別任務(wù)、分析風(fēng)險(xiǎn)、規(guī)劃資源和確定進(jìn)度。計(jì)劃并不是一張時(shí)間進(jìn)度表,而是一個(gè)動(dòng)態(tài)的過(guò)程,最終以系列文檔的形式確定下來(lái)。擬定軟件測(cè)試計(jì)劃需要測(cè)試項(xiàng)目管理人員的積極參與,這是因?yàn)橹黜?xiàng)目計(jì)劃已經(jīng)確定了整體項(xiàng)目的一個(gè)時(shí)間框架,軟件測(cè)試作為階段工作必須服從計(jì)劃和資源上的約定。,一
36、般來(lái)說(shuō),一個(gè)完整的測(cè)試計(jì)劃應(yīng)該包含以下幾個(gè)方面。(1)對(duì)測(cè)試范圍(即測(cè)試活動(dòng)需要覆蓋的范圍)的界定(2)風(fēng)險(xiǎn)的確定(3)資源的規(guī)劃(4)時(shí)間表的制定,2.6.2 設(shè)計(jì)測(cè)試 設(shè)計(jì)測(cè)試階段要設(shè)計(jì)測(cè)試用例和測(cè)試過(guò)程,要保證測(cè)試用例完全覆蓋測(cè)試需求。設(shè)計(jì)測(cè)試階段最重要的是如何將測(cè)試需求分解,如何設(shè)計(jì)測(cè)試用例。,1.如何對(duì)測(cè)試需求進(jìn)行分解 對(duì)測(cè)試需求進(jìn)行分解需要反復(fù)檢查并理解各種信息,和用戶交流,理解他們的要求???/p>
37、以按照以下步驟執(zhí)行。(1)確定軟件提供的主要任務(wù)。(2)對(duì)每個(gè)任務(wù),確定完成該任務(wù)所要進(jìn)行的工作。(3)確定從數(shù)據(jù)庫(kù)信息引出的計(jì)算結(jié)果。,(4)對(duì)于對(duì)時(shí)間有要求的交易,確定所要的時(shí)間和條件。 (5)確定會(huì)產(chǎn)生重大意外的壓力測(cè)試,包括內(nèi)存、硬盤(pán)空間、高的交易率。 (6)確定應(yīng)用需要處理的數(shù)據(jù)量。 (7)確定需要的軟件和硬件配置。,(8)確定其他與應(yīng)用軟件沒(méi)有直接關(guān)系的商業(yè)交易。 (9)確定安
38、裝過(guò)程。 (10)確定沒(méi)有隱含在功能測(cè)試中的用戶界面要求。,2.如何設(shè)計(jì)測(cè)試用例 測(cè)試用例一般指對(duì)一項(xiàng)特定的軟件產(chǎn)品進(jìn)行測(cè)試任務(wù)的描述,體現(xiàn)測(cè)試方案、方法、技術(shù)和策略。值得提出的是,測(cè)試數(shù)據(jù)都是從數(shù)量極大的可用測(cè)試數(shù)據(jù)中精心挑選出具有代表性或特殊性的。測(cè)試用例是軟件測(cè)試系統(tǒng)化、工程化的產(chǎn)物,而測(cè)試用例的設(shè)計(jì)一直是軟件測(cè)試工作的重點(diǎn)和難點(diǎn)。,設(shè)計(jì)測(cè)試用例即設(shè)計(jì)針對(duì)特定功能或組合功能的測(cè)試方案,并編寫(xiě)成文檔。測(cè)試用例應(yīng)
39、該體現(xiàn)軟件工程的思想和原則。,傳統(tǒng)的測(cè)試用例文檔編寫(xiě)有兩種方式。 一種是填寫(xiě)操作步驟列表:將在軟件上進(jìn)行的操作步驟一步一步詳細(xì)記錄下來(lái),包括所有被操作的項(xiàng)目和相應(yīng)的值。 另一種是填寫(xiě)測(cè)試矩陣:將被操作項(xiàng)作為矩陣中的一個(gè)字段,而矩陣中的一條條記錄,則是這些字段的值。,評(píng)價(jià)測(cè)試用例的好壞有以下兩個(gè)標(biāo)準(zhǔn)。① 是否可以發(fā)現(xiàn)尚未發(fā)現(xiàn)的軟件缺陷?② 是否可以覆蓋全部的測(cè)試需求?,2.6.3 實(shí)施測(cè)試 實(shí)施
40、測(cè)試是指準(zhǔn)備測(cè)試環(huán)境、獲得測(cè)試數(shù)據(jù)、開(kāi)發(fā)測(cè)試規(guī)程,以及為該過(guò)程挑選和準(zhǔn)備輔助測(cè)試工具的過(guò)程。1.準(zhǔn)備測(cè)試環(huán)境(1)測(cè)試技術(shù)準(zhǔn)備(2)配置軟件、硬件環(huán)境(3)人員,2.獲得測(cè)試數(shù)據(jù) 需要測(cè)試的常見(jiàn)情形如下。(1)正常事務(wù)的測(cè)試 (2)使用無(wú)效數(shù)據(jù)的測(cè)試,創(chuàng)建測(cè)試數(shù)據(jù)時(shí)主要考慮如下步驟。 ① 識(shí)別測(cè)試資源 ② 識(shí)別測(cè)試情形 ③ 排序測(cè)試情形 ④ 確定正確的處
41、理結(jié)果 ⑤ 創(chuàng)建測(cè)試事務(wù),確定實(shí)際的測(cè)試數(shù)據(jù)時(shí),必須說(shuō)明處理測(cè)試數(shù)據(jù)的以下4個(gè)屬性。 (1)深度 (2)寬度 (3)范圍 (4)結(jié)構(gòu),3.測(cè)試腳本概要 所謂腳本,是完整的一系列相關(guān)終端的活動(dòng)。一般測(cè)試腳本有5個(gè)級(jí)別,分別是:?jiǎn)卧_本,用于測(cè)試特定單元/模塊的腳本;并發(fā)腳本,用于當(dāng)兩個(gè)或多個(gè)用戶同時(shí)訪問(wèn)同一文件時(shí)測(cè)試的腳本;集成腳本,用于確定各模塊
42、是否可以前當(dāng)連接;回歸腳本,用于確定系統(tǒng)未改變的部分在系統(tǒng)改變時(shí)是否改變;強(qiáng)度/性能腳本,用于驗(yàn)證系統(tǒng)在被施加大量事務(wù)時(shí)的性能。,(1)測(cè)試腳本的結(jié)構(gòu) 為了提高測(cè)試腳本的可維護(hù)性和可復(fù)用性,必須在執(zhí)行測(cè)試腳本之前對(duì)它們進(jìn)行構(gòu)建。(2)記錄技術(shù) 為使測(cè)試腳本獲得更高的可維護(hù)性,應(yīng)該以最不易受測(cè)試對(duì)象變化影響的方式來(lái)記錄測(cè)試腳本。,(3)數(shù)據(jù)驅(qū)動(dòng)的測(cè)試 許多測(cè)試過(guò)程包括在給定的數(shù)據(jù)輸入屏幕
43、內(nèi)輸入幾組字段數(shù)據(jù),檢查字段確認(rèn)功能、錯(cuò)誤處理等。 (4)測(cè)試腳本同步和時(shí)間安排 當(dāng)進(jìn)行重點(diǎn)測(cè)試時(shí),通常需要同步測(cè)試腳本以便它們?cè)陬A(yù)先確定的時(shí)間啟動(dòng)。,(5)測(cè)試和調(diào)試測(cè)試腳本 在記錄測(cè)試腳本的同一測(cè)試軟件上執(zhí)行這些最近記錄的測(cè)試腳本時(shí),不應(yīng)該發(fā)生任何錯(cuò)誤。,4.輔助測(cè)試工具 為了實(shí)施高效的測(cè)試工作,還需要有高效、好用的輔助工具,做軟件測(cè)試通常需要以下一些基本工具。,① 優(yōu)秀的辦公處理軟件
44、② 秒表③ 錯(cuò)誤跟蹤系統(tǒng)④ 自動(dòng)測(cè)試工具⑤ 軟件分析工具⑥ 好的操作系統(tǒng)⑦ 多樣化平臺(tái),2.6.4 執(zhí)行測(cè)試 執(zhí)行測(cè)試是執(zhí)行所有的或選定的一些測(cè)試用例,并觀察其測(cè)試結(jié)果的過(guò)程。盡管為執(zhí)行測(cè)試所做的準(zhǔn)備和計(jì)劃工作會(huì)貫穿于軟件開(kāi)發(fā)生命周期之中,但是執(zhí)行測(cè)試往往都會(huì)在軟件開(kāi)發(fā)生命周期的末期,或者接近末期進(jìn)行,即在編碼完成之后進(jìn)行。由于測(cè)試過(guò)程一般分成代碼審查、單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試和驗(yàn)收測(cè)試幾個(gè)階段,盡管這些階段
45、在實(shí)現(xiàn)細(xì)節(jié)方面都不相同,但其工作流程方面卻是一致的。,執(zhí)行測(cè)試的過(guò)程由以下4個(gè)部分組成。 ① 輸入。要完成工作所必須的入口標(biāo)準(zhǔn)或可交付的結(jié)果。 ② 執(zhí)行過(guò)程。從輸入到輸出的過(guò)程或工作任務(wù)。 ③ 檢查過(guò)程。確定輸出是否滿足標(biāo)準(zhǔn)的處理過(guò)程。 ④ 輸出。推出標(biāo)準(zhǔn)或工作流程產(chǎn)生的可交付的結(jié)果。 執(zhí)行測(cè)試過(guò)程如圖2-5所示。,,圖2-5 執(zhí)行測(cè)試過(guò)程,2.6.5 評(píng)估測(cè)試
46、 軟件測(cè)試的主要評(píng)測(cè)方法包括測(cè)試覆蓋和質(zhì)量評(píng)測(cè)。測(cè)試覆蓋是對(duì)測(cè)試完全程度的評(píng)測(cè),它是由測(cè)試需求和測(cè)試用例的覆蓋或已執(zhí)行代碼的覆蓋表示的。質(zhì)量評(píng)測(cè)是對(duì)測(cè)試對(duì)象(系統(tǒng)或測(cè)試的應(yīng)用程序)的可靠性、穩(wěn)定性以及性能的評(píng)測(cè),它建立在對(duì)測(cè)試結(jié)果的評(píng)估和對(duì)測(cè)試過(guò)程中確定的變更請(qǐng)求(缺陷)分析的基礎(chǔ)上。,1.覆蓋評(píng)測(cè) 覆蓋指標(biāo)提供了“測(cè)試的完全程度如何”這一問(wèn)題的答案。最常用的覆蓋評(píng)測(cè)是基于需求的測(cè)試覆蓋和基于代碼的測(cè)試覆蓋。簡(jiǎn)而言之,測(cè)試覆
47、蓋是就需求(基于需求的)或代碼的設(shè)計(jì)/實(shí)施標(biāo)準(zhǔn)(基于代碼的)而言的完全程度的任意評(píng)測(cè),如用例的核實(shí)(基于需求的)或所有代碼行的執(zhí)行(基于代碼的)。,2.質(zhì)量評(píng)測(cè) 測(cè)試覆蓋的評(píng)估提供對(duì)測(cè)試完全程度的評(píng)測(cè),在測(cè)試過(guò)程中已發(fā)現(xiàn)缺陷的評(píng)估提供了最佳的軟件質(zhì)量指標(biāo)。 3.性能評(píng)測(cè) 評(píng)估測(cè)試對(duì)象的性能行為時(shí),可以使用多種評(píng)測(cè),這些評(píng)測(cè)側(cè)重于獲取與行為相關(guān)的數(shù)據(jù),如響應(yīng)時(shí)間、計(jì)時(shí)配置文件、執(zhí)行流、操作可靠性和限制。,
48、2.7 測(cè)試的成功經(jīng)驗(yàn),為了減少系統(tǒng)的開(kāi)發(fā)費(fèi)用,越早測(cè)試越好,這是多年來(lái)軟件行業(yè)的一個(gè)成功經(jīng)驗(yàn),即在整個(gè)軟件開(kāi)發(fā)生命周期中通過(guò)各種軟件工程技術(shù)盡量早地完成各種軟件測(cè)試任務(wù)。 首先,軟件的整個(gè)測(cè)試生命周期是與軟件的開(kāi)發(fā)生命周期基本平齊的過(guò)程,在軟件開(kāi)發(fā)生命周期中,軟件是通過(guò)迭代來(lái)不斷加以完善的。在這種環(huán)境中,對(duì)于每個(gè)作為測(cè)試目標(biāo)的工作版本,測(cè)試的生命周期還都必須具有一種迭代方法。對(duì)于針對(duì)每個(gè)工作版本執(zhí)行的測(cè)試,都做出了增
49、補(bǔ)和改進(jìn),并累積為一個(gè)測(cè)試體,用于后續(xù)階段的回歸測(cè)試。,通過(guò)迭代是軟件開(kāi)發(fā)把原來(lái)的整個(gè)軟件開(kāi)發(fā)生命周期分成多個(gè)迭代周期,在每個(gè)迭代周期都進(jìn)行測(cè)試,這樣在很大程度上提前了軟件系統(tǒng)測(cè)試發(fā)生的時(shí)間,這可以在很大程度上降低項(xiàng)目風(fēng)險(xiǎn)和項(xiàng)目開(kāi)發(fā)成本。,第 3 章 軟件測(cè)試的方法和技術(shù),3.1 軟件測(cè)試方法概述3.2 白 盒 測(cè) 試3.3 黑 盒 測(cè) 試3.4 測(cè) 試 用 例 設(shè) 計(jì),3.1 軟件測(cè)試方法概述,軟件測(cè)試的種類大致可分
50、為人工測(cè)試和基于計(jì)算機(jī)的測(cè)試。而基于計(jì)算機(jī)的測(cè)試又可分為黑盒測(cè)試和白盒測(cè)試。1.黑盒測(cè)試 黑盒測(cè)試是根據(jù)軟件產(chǎn)品的功能設(shè)計(jì)規(guī)格,在計(jì)算機(jī)上進(jìn)行測(cè)試,以證實(shí)每個(gè)已經(jīng)實(shí)現(xiàn)的功能是否符合要求。黑盒測(cè)試意味著測(cè)試要在軟件的接口處進(jìn)行。,2.白盒測(cè)試 白盒測(cè)試是根據(jù)軟件產(chǎn)品的內(nèi)部工作過(guò)程,在計(jì)算機(jī)上進(jìn)行測(cè)試,以證實(shí)每種內(nèi)部操作是否符合設(shè)計(jì)規(guī)格要求,所有內(nèi)部成分是否已經(jīng)過(guò)檢查。白盒測(cè)試把測(cè)試對(duì)象看做一個(gè)打開(kāi)的盒子,
51、允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序所有邏輯路徑進(jìn)行測(cè)試。通過(guò)在不同點(diǎn)檢查程序的狀態(tài),確定實(shí)際的狀態(tài)是否與預(yù)期的狀態(tài)一致。,3.2 白 盒 測(cè) 試,白盒測(cè)試也稱為結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,前提是知道產(chǎn)品內(nèi)部工作過(guò)程,可通過(guò)測(cè)試來(lái)檢測(cè)產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說(shuō)明書(shū)的規(guī)定正常進(jìn)行,按照程序內(nèi)部的結(jié)構(gòu)測(cè)試程序,檢驗(yàn)程序中的每條通路是否都能夠按預(yù)定要求正確工作,而不管產(chǎn)品的功能,主要用于軟件驗(yàn)證。,白盒測(cè)試方
52、法又可分為靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試。靜態(tài)測(cè)試是一種不通過(guò)執(zhí)行程序而進(jìn)行測(cè)試的技術(shù),其關(guān)鍵功能是檢查軟件的表示和描述是否一致,沒(méi)有沖突或者沒(méi)有歧義。它瞄準(zhǔn)的是糾正軟件系統(tǒng)在描述、表示和規(guī)格上的錯(cuò)誤,是任何進(jìn)一步測(cè)試的前提。而動(dòng)態(tài)測(cè)試需要軟件的執(zhí)行,當(dāng)軟件系統(tǒng)在模擬的或真實(shí)的環(huán)境中執(zhí)行之前、之中和之后,對(duì)軟件系統(tǒng)行為的分析是動(dòng)態(tài)測(cè)試的主要特點(diǎn)。它顯示了一個(gè)系統(tǒng)在檢查狀態(tài)下是正確還是不正確。,白盒測(cè)試的動(dòng)態(tài)測(cè)試要根據(jù)程序的控制結(jié)構(gòu)設(shè)計(jì)測(cè)試用例,其原
53、則是:(1)保證一個(gè)模塊中的所有獨(dú)立路徑至少被使用一次;(2)對(duì)所有邏輯值均需測(cè)試true和false;(3)在上下邊界及可操作范圍內(nèi)運(yùn)行所有循環(huán);(4)檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)以確保其有效性。,下面將介紹幾種實(shí)用的白盒測(cè)試用例設(shè)計(jì)方法,包括程序插樁、邏輯覆蓋、基本路徑測(cè)試等。3.2.1 程序插樁 在軟件動(dòng)態(tài)測(cè)試中,程序插樁是一種基本的測(cè)試手段,有著廣泛的應(yīng)用。1.方法簡(jiǎn)介 程序插樁方法是借助往被測(cè)程序中插入
54、操作,來(lái)實(shí)現(xiàn)測(cè)試目的的方法。,如果我們想要了解一個(gè)程序在某次運(yùn)行中所有可執(zhí)行語(yǔ)句被覆蓋的情況,或是每個(gè)語(yǔ)句的實(shí)際執(zhí)行次數(shù),最好的辦法是利用插樁技術(shù)。這里僅以計(jì)算整數(shù)X和整數(shù)Y的最大公約數(shù)程序?yàn)槔?,說(shuō)明插樁方法的要點(diǎn)。圖3-3給出了這一程序的流程圖。,,圖3-3 插樁后求最大公約數(shù)程序的流程圖,設(shè)計(jì)插樁程序時(shí)需要考慮的問(wèn)題包括:① 探測(cè)哪些信息;② 在程序的什么部位設(shè)置探測(cè)點(diǎn);③ 需要設(shè)置多少個(gè)探測(cè)點(diǎn)。,2.?dāng)嘌哉Z(yǔ)句 在
55、程序中特定部位插入某些用以判斷變量特性的語(yǔ)句,使得程序執(zhí)行中這些語(yǔ)句得以證實(shí),從而使程序的運(yùn)行特性得到證實(shí)。我們把插入的這些語(yǔ)句稱為斷言。這一做法是程序正確性證明的基本步驟,盡管算不上嚴(yán)格的證明,但方法本身仍然是很實(shí)用的。下面以求兩個(gè)非負(fù)數(shù)NUM和DEN之商的Wensley迭代算法為例,對(duì)斷言語(yǔ)句的作用做一簡(jiǎn)要說(shuō)明。,,圖3-5 計(jì)算非負(fù)數(shù)之商的迭代程序,,圖3-6 插入斷言后的迭代程序,3.2.2 邏輯覆蓋 邏
56、輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計(jì)測(cè)試用例的技術(shù),是通過(guò)對(duì)程序邏輯結(jié)構(gòu)的遍歷實(shí)現(xiàn)程序的覆蓋,它是一系列測(cè)試過(guò)程的總稱,這組測(cè)試過(guò)程逐漸進(jìn)行越來(lái)越完整的通路測(cè)試。這一方法要求測(cè)試人員對(duì)程序的邏輯結(jié)構(gòu)有清楚的了解,甚至要能掌握源程序的所有細(xì)節(jié)。它屬于動(dòng)態(tài)測(cè)試。,從覆蓋源程序語(yǔ)句的詳細(xì)程度分析,邏輯覆蓋標(biāo)準(zhǔn)有語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、條件判定組合覆蓋、多條件覆蓋和修正條件判定覆蓋。 為便于理解,使用如下所示的程序,圖
57、3-7所示的是其流程圖。,圖3-7 參考例子流程圖,int function1(bool a,bool b,bool c){ int x; x=0;if(a&&(b||c)) x=1; return x;},1.語(yǔ)句覆蓋 為了暴露程序中的錯(cuò)誤,程序中的每條語(yǔ)句至少應(yīng)該執(zhí)行一次。所以,語(yǔ)句覆蓋的含義是:選擇足夠多的測(cè)試數(shù)據(jù),使被測(cè)程序中每條語(yǔ)句至少執(zhí)行一次。,2.判定覆蓋
58、 比語(yǔ)句覆蓋稍強(qiáng)的覆蓋標(biāo)準(zhǔn)是判定覆蓋。按判定覆蓋準(zhǔn)則進(jìn)行測(cè)試是指,設(shè)計(jì)若干測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次,即判斷的真假值均曾被滿足。判定覆蓋又稱為分支覆蓋。,3.條件覆蓋 在設(shè)計(jì)程序中,一個(gè)判定語(yǔ)句是由多個(gè)條件組合而成的復(fù)合判定。 條件覆蓋的含義是:構(gòu)造一組測(cè)試用例,使得每一判定語(yǔ)句中每個(gè)邏輯條件的可能值至少滿足一次。,4.條件判定組合覆蓋 條件判定組合覆蓋的含
59、義是:設(shè)計(jì)足夠的測(cè)試用例,使得判定中每個(gè)條件的所有可能(真/假)至少出現(xiàn)一次,并且每個(gè)判定本身的判定結(jié)果(真/假)也至少出現(xiàn)一次。,5.多條件覆蓋 多條件覆蓋也稱為條件組合覆蓋,它的含義是:設(shè)計(jì)足夠的測(cè)試用例,使得每個(gè)判定中條件的各種可能組合都至少出現(xiàn)一次。顯然滿足多條件覆蓋的測(cè)試用例是一定滿足判定覆蓋、條件覆蓋和條件判定組合覆蓋的。,6.修正條件判定覆蓋 它要求滿足兩個(gè)條件:首先,每一個(gè)程序模塊的入口和出口點(diǎn)都要
60、考慮至少被調(diào)用一次,每個(gè)程序的判定到所有可能的結(jié)果值要至少轉(zhuǎn)換一次;其次,程序的判定被分解為通過(guò)邏輯操作符(and、or)連接的bool條件,每個(gè)條件對(duì)于判定的結(jié)果值是獨(dú)立的。,7.測(cè)試覆蓋準(zhǔn)則(1)Foster的ESTCA覆蓋準(zhǔn)則 前面所介紹的邏輯覆蓋其出發(fā)點(diǎn)似乎是合理的。所謂“覆蓋”,就是想要做到全面而無(wú)遺漏。但是,事實(shí)表明,它并不能真的做到無(wú)遺漏。 K.A.Foster從測(cè)試工作實(shí)踐的教訓(xùn)出發(fā)
61、,吸收了計(jì)算機(jī)硬件的測(cè)試原理,提出了一種經(jīng)驗(yàn)型的測(cè)試覆蓋準(zhǔn)則。,(2)Woodward等人的層次LCSAJ覆蓋準(zhǔn)則 Woodward等人曾經(jīng)指出結(jié)構(gòu)覆蓋的一些準(zhǔn)則,如分支覆蓋或路徑覆蓋,都不足以保證測(cè)試數(shù)據(jù)的有效性。為此,他們提出了一種層次LCSAJ覆蓋準(zhǔn)則。,3.2.3 基本路徑測(cè)試 上節(jié)的例子是個(gè)比較簡(jiǎn)單的程序段,只有兩條路徑。但在實(shí)際問(wèn)題中,即使一個(gè)不太復(fù)雜的程序,其路徑的組合都是一個(gè)龐大的數(shù)字。
62、 如果把覆蓋的路徑數(shù)壓縮到一定限度內(nèi),例如,程序中的循環(huán)體只執(zhí)行零次和一次,就成為基本路徑測(cè)試。 設(shè)計(jì)出的測(cè)試用例要保證在測(cè)試中程序的每一條可執(zhí)行語(yǔ)句至少執(zhí)行一次。,1.程序的控制流圖 控制流圖是描述程序控制流的一種圖示方式。其中基本的控制結(jié)構(gòu)對(duì)應(yīng)的圖形符號(hào)如圖3-8所示。在圖3-8所示的圖形符號(hào)中,圓圈稱為控制流圖的一個(gè)結(jié)點(diǎn),它表示一個(gè)或多個(gè)無(wú)分支的語(yǔ)句或源程序語(yǔ)句。,,圖3-8 控制流圖的
63、圖形符號(hào),圖3-9(a)所示的是一個(gè)程序的流程圖,它可以映射成圖(b)所示的控制流圖。,,圖3-9 程序流程圖和對(duì)應(yīng)的控制流圖,2.計(jì)算程序環(huán)路復(fù)雜性 進(jìn)行程序的基本路徑測(cè)試時(shí),程序的環(huán)路復(fù)雜性給出了程序基本路徑集合中的獨(dú)立路徑條數(shù),這是確保程序中每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次所必須的測(cè)試用例數(shù)目的上界。 所謂獨(dú)立路徑,是指包括若干未曾處理的語(yǔ)句或條件的一條路徑。,基本路徑集不是惟一的,對(duì)于給定的控制流圖,可
64、以得到不同的基本路徑集。 通常環(huán)路復(fù)雜性可用以下3種方法求得。 ① 將環(huán)路復(fù)雜性定義為控制流圖中的區(qū)域數(shù)。 ② 設(shè)E為控制流圖的邊數(shù),N為圖的結(jié)點(diǎn)數(shù),則定義環(huán)路的復(fù)雜性為V(G)=E?N+2。 ③ 若設(shè)P為控制流圖中的判定結(jié)點(diǎn)數(shù),則有V(G)=P+1。,3.基本路徑測(cè)試法步驟 基本路徑測(cè)試法適用于模塊的詳細(xì)設(shè)計(jì)及源程序,其主要步驟如下。 ① 以詳細(xì)設(shè)計(jì)或源代碼作為基
65、礎(chǔ),導(dǎo)出程序的控制流圖。 ② 計(jì)算得到的控制流圖G的環(huán)路復(fù)雜性V(G)。 ③ 確定線性無(wú)關(guān)的路徑的基本集。 ④ 生成測(cè)試用例,確?;韭窂郊忻織l路徑的執(zhí)行。,3.2.4 程序的靜態(tài)測(cè)試1.源程序靜態(tài)分析 在靜態(tài)結(jié)構(gòu)分析中,測(cè)試者通過(guò)使用測(cè)試工具分析程序源代碼的系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)接口、內(nèi)部控制邏輯等內(nèi)部結(jié)構(gòu),生成函數(shù)調(diào)用關(guān)系圖、模塊控制流圖、內(nèi)部文件調(diào)用關(guān)系圖、子程序表、宏
66、和函數(shù)參數(shù)表等各類圖形圖表,可以清晰地標(biāo)識(shí)整個(gè)軟件系統(tǒng)的組成結(jié)構(gòu),使其便于閱讀與理解,然后可以通過(guò)分析這些圖表,檢查軟件有沒(méi)有存在缺陷或錯(cuò)誤。,通常采用以下一些方法進(jìn)行源程序的靜態(tài)分析。(1)生成各種引用表 ① 標(biāo)號(hào)交叉引用表 ② 變量交叉引用表 ③ 子程序(宏、函數(shù))引用表 ④ 等價(jià)表 ⑤ 常數(shù)表,(2)錯(cuò)誤靜態(tài)分析 錯(cuò)誤靜態(tài)分析主要用于確定在源程序中是否有某類
67、錯(cuò)誤或“危險(xiǎn)”結(jié)構(gòu)。 ① 類型和單位分析 ② 引用分析 ③ 表達(dá)式分析 ④ 接口分析,2.人工測(cè)試 靜態(tài)分析中進(jìn)行人工測(cè)試的主要方法有桌前檢查、代碼審查和走查。經(jīng)驗(yàn)表明,使用這種方法能夠有效地發(fā)現(xiàn)30%~70%的邏輯設(shè)計(jì)和編碼錯(cuò)誤。,(1)桌前檢查 由程序員自己檢查自己編寫(xiě)的程序。程序員在程序通過(guò)編譯之后,進(jìn)行單元測(cè)試設(shè)計(jì)之前,對(duì)源程序代碼進(jìn)行分
68、析、檢驗(yàn),并補(bǔ)充相關(guān)的文檔,目的是發(fā)現(xiàn)程序中的錯(cuò)誤。,(2)代碼審查 代碼審查是由若干程序員和測(cè)試員組成一個(gè)審查小組,通過(guò)閱讀、討論和爭(zhēng)議,對(duì)程序進(jìn)行靜態(tài)分析的過(guò)程。 代碼審查分兩步。第一步,小組負(fù)責(zé)人提前把設(shè)計(jì)規(guī)格說(shuō)明書(shū)、控制流程圖、程序文本及有關(guān)要求、規(guī)范等分發(fā)給小組成員,作為審查的依據(jù)。小組成員在充分閱讀這些材料后,進(jìn)入審查的第二步,召開(kāi)程序?qū)彶闀?huì)。,(3)走查 走查與代碼審查基本相同,其過(guò)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件工程第4章
- 軟件工程_第6章編碼-
- 軟件工程_軟件測(cè)試文檔
- 軟件工程 ( 第1次 ).doc
- [教育]趙良軟件工程軟件測(cè)試
- 軟件工程第3章習(xí)題解答
- 軟件工程(第10版)讀書(shū)筆記——軟件工程導(dǎo)論
- 軟件工程倉(cāng)庫(kù)管理系統(tǒng)軟件測(cè)試
- 軟件工程測(cè)試計(jì)劃模板
- 軟件工程方法與實(shí)踐習(xí)題答案——第5、8章
- 軟件工程(第3版)
- 軟件工程論文 (1)
- 軟件工程第在線作業(yè)
- 軟件工程第2階段測(cè)試題
- 軟件工程第3階段測(cè)試題
- 軟件工程與軟件文檔寫(xiě)作
- 2016年軟件工程(第1次)作業(yè)
- 軟件工程習(xí)題解4章
- 軟件工程中軟件測(cè)試的應(yīng)用研究
- 第3章 軟件測(cè)試
評(píng)論
0/150
提交評(píng)論