版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGEPAGE6第1章軟件測(cè)試概述隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,人們對(duì)計(jì)算機(jī)的需求和依賴(lài)與日俱增。隨之而來(lái)的是計(jì)算機(jī)系統(tǒng)的規(guī)模和復(fù)雜性急劇增加,其軟件開(kāi)發(fā)成本以及由于軟件故障而造成的經(jīng)濟(jì)損失也正在增加,軟件質(zhì)量問(wèn)題已成為人們共同關(guān)注的焦點(diǎn)。因此,許多科學(xué)家在展望21世紀(jì)計(jì)算機(jī)科學(xué)發(fā)展方向和策略時(shí),把軟件質(zhì)量放在優(yōu)先于提高軟件功能和性能的地位。軟件測(cè)試是對(duì)軟件需求分析、設(shè)計(jì)規(guī)格說(shuō)明和編碼的最終復(fù)審,是軟件質(zhì)量保證的關(guān)鍵步驟。隨著軟件系統(tǒng)規(guī)模和復(fù)雜性的增加,進(jìn)行專(zhuān)業(yè)化高效軟件測(cè)試的要求越來(lái)越嚴(yán)格,軟件測(cè)試職業(yè)的價(jià)值逐步得到了認(rèn)可,軟件測(cè)試從業(yè)人員急劇增加,軟件測(cè)試評(píng)測(cè)中心如雨后春筍般成長(zhǎng)起來(lái)??梢灶A(yù)測(cè),在未來(lái)3~5年內(nèi),軟件測(cè)試技術(shù)將作為一門(mén)新興產(chǎn)業(yè)而快速發(fā)展起來(lái)。1.1計(jì)算機(jī)系統(tǒng)的軟件可靠性問(wèn)題隨著對(duì)計(jì)算機(jī)需求和依賴(lài)的與日俱增,計(jì)算機(jī)系統(tǒng)的規(guī)模和復(fù)雜性急劇增加,使得計(jì)算機(jī)軟件的數(shù)量以驚人的速度急劇膨脹。與此同時(shí),計(jì)算機(jī)出現(xiàn)故障引起系統(tǒng)失效的可能性也逐漸增加。由于計(jì)算機(jī)硬件技術(shù)的進(jìn)步,元器件可靠性的提高,硬件設(shè)計(jì)和驗(yàn)證技術(shù)的成熟,硬件故障相對(duì)顯得次要了,軟件故障正逐漸成為導(dǎo)致計(jì)算機(jī)系統(tǒng)失效和停機(jī)的主要因素。下面介紹幾個(gè)實(shí)例,以說(shuō)明軟件故障可能造成的損失和災(zāi)難,千年蟲(chóng)問(wèn)題千年蟲(chóng)問(wèn)題是一個(gè)眾所周知的軟件故障。上世紀(jì)70年代,所使用的計(jì)算機(jī)存儲(chǔ)空間很小,這就迫使程序員在開(kāi)發(fā)工資系統(tǒng)時(shí)盡量節(jié)省存儲(chǔ)空間,一個(gè)簡(jiǎn)單的方法是在存儲(chǔ)日期時(shí),只存儲(chǔ)2位,如1974存儲(chǔ)為74。工資系統(tǒng)常依賴(lài)于日期的處理,因此他們節(jié)省了大量的存儲(chǔ)空間。他們知道在2000年到來(lái)時(shí),問(wèn)題會(huì)出現(xiàn),比如銀行在計(jì)算利息時(shí),是用現(xiàn)在的日期如“2000年1月1日”減去客戶(hù)當(dāng)時(shí)的存款日期如“1974年1月1日”,如果年利息為3%,那么每100元銀行應(yīng)付給客戶(hù)78元的利息。如果年份存儲(chǔ)問(wèn)題沒(méi)有得到糾正,其存款年數(shù)就變?yōu)椋?4年,客戶(hù)反應(yīng)付給銀行利息了,這顯然是不合理的。但他們認(rèn)為在20多年內(nèi)程序肯定會(huì)更新或升級(jí),而且眼前的任務(wù)比計(jì)劃遙不可及的未來(lái)更加重要。為此,全世界付出了數(shù)億美元的代價(jià)來(lái)更換或升級(jí)類(lèi)似程序以解決千年蟲(chóng)問(wèn)題,特別是金融、保險(xiǎn)、軍事、科學(xué)、商務(wù)等領(lǐng)域,花費(fèi)大量的人力、物力對(duì)現(xiàn)有的各種各樣程序進(jìn)行檢查、修改和更新。2.愛(ài)國(guó)者導(dǎo)彈防御系統(tǒng)1991年,美國(guó)愛(ài)國(guó)者導(dǎo)彈防御系統(tǒng)首次應(yīng)用在海灣戰(zhàn)爭(zhēng)中對(duì)抗伊拉克飛毛腿導(dǎo)彈的防御戰(zhàn)爭(zhēng)中。盡管對(duì)該系統(tǒng)的贊譽(yù)不絕于耳,但是它確實(shí)在幾次對(duì)抗導(dǎo)彈戰(zhàn)役中失利,其中一枚在沙特阿拉伯的多哈擊斃28名美國(guó)士兵。分析專(zhuān)家發(fā)現(xiàn)癥結(jié)在于一個(gè)軟件故障。一個(gè)很小的系統(tǒng)時(shí)鐘錯(cuò)誤積累起來(lái)就可能拖延14小時(shí),造成跟蹤系統(tǒng)失去準(zhǔn)確度。在多哈襲擊戰(zhàn)中,這樣一個(gè)小故障造成系統(tǒng)被拖延100多個(gè)小時(shí)。3.美國(guó)火星登陸事故1999年美國(guó)宇航局火星極地登陸飛船在試圖登陸火星表面時(shí)突然墜毀失蹤。故障評(píng)測(cè)委員會(huì)調(diào)查分析了這一故障,認(rèn)定出現(xiàn)該故障的原因可能是由于某一數(shù)據(jù)位被更改,并認(rèn)為該問(wèn)題在內(nèi)部測(cè)試時(shí)應(yīng)該能夠解決。為什么會(huì)這樣呢?簡(jiǎn)單而言,火星登陸過(guò)程計(jì)劃是:飛船在火星表面降落時(shí),著陸傘自動(dòng)打開(kāi)以減緩飛船的下降速度。當(dāng)飛船距離火星表面1800米時(shí),丟棄著陸傘,點(diǎn)燃登陸推進(jìn)器,緩緩降落到地面。然而,美國(guó)宇航局為了節(jié)省開(kāi)銷(xiāo),簡(jiǎn)化了關(guān)閉著陸推進(jìn)器的裝置,在飛船的支撐腳部安裝了一個(gè)觸點(diǎn)開(kāi)關(guān),在計(jì)算機(jī)中設(shè)置一個(gè)數(shù)據(jù)位來(lái)控制觸點(diǎn),以關(guān)閉飛船燃料。顯然,飛船沒(méi)著陸以前,推進(jìn)器就應(yīng)該一直處于著火工作狀態(tài)。不幸的是,在許多情況下,當(dāng)飛船的支撐腳迅速打開(kāi)準(zhǔn)備著陸時(shí),機(jī)械震動(dòng)也會(huì)觸發(fā)觸點(diǎn)開(kāi)關(guān),導(dǎo)致設(shè)置了錯(cuò)誤的數(shù)據(jù)位,關(guān)閉了登陸推進(jìn)器的燃料,使火星加速下降1800米后撞向地面,撞成碎片。結(jié)果是災(zāi)難性的,但原因很簡(jiǎn)單。事實(shí)上,飛船發(fā)射之前,經(jīng)過(guò)了多個(gè)小組的測(cè)試,其中一個(gè)小組負(fù)責(zé)測(cè)試飛船支撐腳的落地打開(kāi)過(guò)程,另一個(gè)小組負(fù)責(zé)測(cè)試此后的著陸過(guò)程。其前一個(gè)小組沒(méi)有檢測(cè)觸點(diǎn)開(kāi)關(guān)數(shù)據(jù)位,那不是他們的職責(zé);后一個(gè)小組總是在測(cè)試之前重置計(jì)算機(jī),清除數(shù)據(jù)位。兩個(gè)小組工作的都很好,但從未在一起進(jìn)行過(guò)集成/系統(tǒng)測(cè)試,接口錯(cuò)誤沒(méi)有被檢測(cè)出,從而導(dǎo)致了這一災(zāi)難性的事故。4.Intel奔騰芯片缺陷在PC機(jī)的“計(jì)算器”中輸入以下算式:(41958353145727)3145727-4195835如果答案不為0,就說(shuō)明該計(jì)算機(jī)使用的是帶有浮點(diǎn)除法軟件缺陷的老式Intel奔騰處理器。1994年,美國(guó)弗吉利亞州Lynchburg學(xué)院的一位博士在用奔騰PC機(jī)解決一個(gè)除法問(wèn)題時(shí),發(fā)現(xiàn)了這個(gè)問(wèn)題。他將發(fā)現(xiàn)的問(wèn)題放在互聯(lián)網(wǎng)上,引發(fā)了一場(chǎng)風(fēng)暴,成千上萬(wàn)的人發(fā)現(xiàn)了同樣的問(wèn)題,以及其它得出錯(cuò)誤結(jié)果的情形。萬(wàn)幸的是,這種情況很少出現(xiàn),僅在精度要求很高的數(shù)學(xué)、科學(xué)和工程計(jì)算中才會(huì)出現(xiàn)。這個(gè)事件引起人們關(guān)注的原因并不是這個(gè)軟件缺陷,而是Intel公司解決問(wèn)題的態(tài)度。Intel的測(cè)試工程師在芯片分布之前已經(jīng)發(fā)現(xiàn)了這個(gè)問(wèn)題,但管理層認(rèn)為還沒(méi)嚴(yán)重到一定要修正,甚至公開(kāi)的程度。當(dāng)這個(gè)軟件缺陷被發(fā)現(xiàn)時(shí),Intel公司通過(guò)新聞發(fā)布和公開(kāi)聲明試圖弱化問(wèn)題的嚴(yán)重性。當(dāng)壓力增大時(shí),Intel承諾可以更換有問(wèn)題的芯片,但要求用戶(hù)必須證明自己受到缺陷的影響。結(jié)果輿論大嘩?;ヂ?lián)網(wǎng)上充斥著憤怒客戶(hù)要求Intel解決問(wèn)題的呼聲,新聞報(bào)道將Intel公司描繪成不誠(chéng)信者。最后,Intel公司為自己處理軟件缺陷的行為道歉并拿出4億多美元來(lái)支付更換芯片的費(fèi)用。由此可見(jiàn),這個(gè)小小軟件缺陷造成的損失有多大。5.Windows2000安全漏洞微軟曾經(jīng)承認(rèn),Windows2000操作系統(tǒng)遠(yuǎn)程服務(wù)軟件中存在有安全漏洞,這里漏洞可能導(dǎo)致3種不同的安全隱患——拒絕服務(wù)、權(quán)限濫用和信息泄漏,并發(fā)布了相應(yīng)的補(bǔ)丁軟件進(jìn)行修補(bǔ)。拒絕服務(wù)隱患可能導(dǎo)致DOS受到攻擊,使得合法用戶(hù)無(wú)法遠(yuǎn)程登錄系統(tǒng);而權(quán)限濫用和信息泄漏隱患則涉及系統(tǒng)權(quán)限管理,有可能使攻擊者控制Windows2000系統(tǒng),從而在計(jì)算機(jī)上添加用戶(hù),刪除或安裝組件,破壞數(shù)據(jù),或執(zhí)行其它操作。據(jù)美國(guó)軍方證實(shí),一名聯(lián)機(jī)攻擊者則利用微軟網(wǎng)絡(luò)軟件中一個(gè)缺陷控制了其國(guó)防部的一個(gè)服務(wù)器接口。盡管美國(guó)陸軍網(wǎng)絡(luò)技術(shù)事業(yè)部稱(chēng)受到攻擊的軍事網(wǎng)站不屬于軍方,但他們強(qiáng)調(diào)陸軍很認(rèn)真地對(duì)待這事。這個(gè)缺陷也使微軟的安全團(tuán)隊(duì)大吃一驚,因?yàn)闆](méi)有一名安全研究人員發(fā)現(xiàn)這個(gè)問(wèn)題,造成了很壞的影響。巨額的財(cái)產(chǎn)損失和多條生命的代價(jià)讓人們開(kāi)始重視軟件質(zhì)量。類(lèi)似的例子,國(guó)內(nèi)也可舉出很多。大大小小的軟件故障幾乎每天甚至每時(shí)每刻都在發(fā)生,只不過(guò)有些問(wèn)題不那么嚴(yán)重罷了。隨著信息技術(shù)的飛速發(fā)展,軟件產(chǎn)品已應(yīng)用到社會(huì)的各個(gè)領(lǐng)域,軟件質(zhì)量問(wèn)題已成為人們共同關(guān)注的焦點(diǎn)。軟件開(kāi)發(fā)商為了占有市場(chǎng),必須把軟件質(zhì)量作為企業(yè)的重要目標(biāo)之一,以免在激烈的競(jìng)爭(zhēng)中被淘汰出局。用戶(hù)為了保證自己業(yè)務(wù)的順利完成,當(dāng)然希望選用優(yōu)質(zhì)的軟件。質(zhì)量欠佳的軟件產(chǎn)品不僅會(huì)使開(kāi)發(fā)商的維護(hù)費(fèi)用和用戶(hù)的使用成本大幅增加,還可能產(chǎn)生其他的責(zé)任風(fēng)險(xiǎn),造成公司信譽(yù)下降。在一些關(guān)鍵領(lǐng)域的應(yīng)用系統(tǒng),如民航訂票系統(tǒng)、銀行結(jié)算系統(tǒng)、證券交易系統(tǒng)、自動(dòng)飛行控制軟件、軍事防御和核電站安全控制系統(tǒng)中,對(duì)軟件質(zhì)量提出了更高的要求。使用質(zhì)量欠佳的軟件,還可能造成災(zāi)難性的后果。勿庸置疑,提高軟件質(zhì)量,如同如何提高軟件生產(chǎn)率一樣,已成為整個(gè)軟件開(kāi)發(fā)過(guò)程中必須始終關(guān)心和設(shè)法解決的問(wèn)題。1.2軟件測(cè)試的目的和意義由于人的主觀認(rèn)識(shí)常常難以完全符合客觀現(xiàn)實(shí),與工程密切相關(guān)的各類(lèi)人員之間的通信和配合也不可能完美無(wú)缺。因此對(duì)于軟件來(lái)講,不論采用什么樣的技術(shù)和方法,軟件中都會(huì)有故障存在。即使標(biāo)準(zhǔn)商業(yè)軟件里也有故障存在,只是嚴(yán)重程度不同而已。采用新的編程語(yǔ)言、先進(jìn)的開(kāi)發(fā)方式、完善的開(kāi)發(fā)過(guò)程,可以減少故障的引入,但是我們無(wú)法完全杜絕軟件中的故障。這些軟件故障就需要用測(cè)試來(lái)發(fā)現(xiàn),軟件中的故障密度也需要用測(cè)試來(lái)估計(jì)。軟件測(cè)試是對(duì)軟件需求分析、設(shè)計(jì)規(guī)格說(shuō)明和編碼的終審,是軟件質(zhì)量保證的關(guān)鍵步驟。但對(duì)于什么是軟件測(cè)試,一直未達(dá)成共識(shí),根據(jù)側(cè)重點(diǎn)不同,主要有三種描述:定義1:1983年IEEE(國(guó)際電子電氣工程師協(xié)會(huì))提出的軟件工程標(biāo)準(zhǔn)術(shù)語(yǔ)中給軟件測(cè)試下的定義是:“使用人工或自動(dòng)手段來(lái)運(yùn)行或測(cè)定某個(gè)系統(tǒng)的過(guò)程,其目的在于檢驗(yàn)它是否滿(mǎn)足規(guī)定的需求或是弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別”。該定義包含了兩方面的含義:是否滿(mǎn)足規(guī)定的需求。是否有差別。如果有差別,說(shuō)明設(shè)計(jì)或?qū)崿F(xiàn)中存在故障,自然不滿(mǎn)足規(guī)定的需求。因此,這一定義非常明確地提出了軟件測(cè)試以檢驗(yàn)軟件是否滿(mǎn)足需求為目標(biāo)。定義2:軟件測(cè)試是根據(jù)軟件開(kāi)發(fā)各階段的規(guī)格說(shuō)明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試用例,并利用這些測(cè)試用例去執(zhí)行程序,以發(fā)現(xiàn)軟件故障的過(guò)程。該定義強(qiáng)調(diào)尋找故障是測(cè)試的目的。定義3:軟件測(cè)試是一種軟件質(zhì)量保證活動(dòng),其動(dòng)機(jī)是通過(guò)一些經(jīng)濟(jì)有效的方法,發(fā)現(xiàn)軟件中存在的缺陷,從而保證軟件質(zhì)量。上述三種觀點(diǎn)實(shí)際上是從不同角度理解軟件測(cè)試,但不論從哪種觀點(diǎn)出發(fā),都可以認(rèn)為軟件測(cè)試是在一個(gè)可控的環(huán)境中分析或(人工或自動(dòng))執(zhí)行程序的過(guò)程,其根本目的是以盡可能少的時(shí)間和人力發(fā)現(xiàn)并改正軟件中潛在的各種故障及缺陷,提高軟件的質(zhì)量。測(cè)試目的決定了測(cè)試方案的設(shè)計(jì),如果我們的目的是要證明程序中沒(méi)有隱藏的故障存在,那就會(huì)不自覺(jué)地回避可能出現(xiàn)故障的地方,設(shè)計(jì)出一些不易暴露故障的測(cè)試方案,從而使程序的可靠性受到極大的影響。相反,如果測(cè)試的目標(biāo)是要證明程序中有故障存在,那就會(huì)力求設(shè)計(jì)出最能暴露故障的測(cè)試方案。軟件測(cè)試是一項(xiàng)花費(fèi)昂貴的活動(dòng),測(cè)試者希望通過(guò)軟件測(cè)試來(lái)提高軟件的質(zhì)量或可靠性。這就意味著要發(fā)現(xiàn)并改正程序中的錯(cuò)誤。所以,進(jìn)行測(cè)試時(shí)不應(yīng)該為了顯示程序是好的,而應(yīng)該從軟件中含有故障這個(gè)假定出發(fā)去測(cè)試程序,從中發(fā)現(xiàn)盡可能多的軟件故障。因此,“一個(gè)好的測(cè)試用例在于發(fā)現(xiàn)至今尚未被發(fā)現(xiàn)的故障”,“一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未被發(fā)現(xiàn)的故障的測(cè)試”。1.3軟件測(cè)試過(guò)程軟件測(cè)試是軟件開(kāi)發(fā)過(guò)程的一個(gè)重要環(huán)節(jié),是在軟件投入運(yùn)行前,對(duì)軟件需求分析、設(shè)計(jì)規(guī)格說(shuō)明和編碼實(shí)現(xiàn)的最終審定,貫穿于軟件定義與開(kāi)發(fā)的整個(gè)期間。軟件項(xiàng)目一開(kāi)始,軟件測(cè)試隨之開(kāi)始。從軟件需求分析到最終的驗(yàn)收測(cè)試,其整個(gè)測(cè)試過(guò)程如圖1.1所示。從測(cè)試過(guò)程可以看出,軟件測(cè)試主要由一系列不同的測(cè)試階段組成,即單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試、系統(tǒng)測(cè)試和驗(yàn)收測(cè)試。軟件開(kāi)發(fā)是一個(gè)自頂向下逐步細(xì)化的過(guò)程。軟件測(cè)試則是依相反順序的自底向上逐步集成的過(guò)程。低一級(jí)的測(cè)試為上一級(jí)的測(cè)試準(zhǔn)備條件。單元測(cè)試是測(cè)試執(zhí)行的開(kāi)始階段,即首先對(duì)每一個(gè)程序模塊進(jìn)行單元測(cè)試,以確保每個(gè)模塊能正常工作。單元測(cè)試大多采用白盒測(cè)試方法,盡可能發(fā)現(xiàn)并消除模塊內(nèi)部在邏輯和功能上的故障及缺陷。然后,把已測(cè)試過(guò)的模塊組裝起來(lái),形成一個(gè)完整的軟件后進(jìn)行集成測(cè)試,以檢測(cè)和排除與軟件設(shè)計(jì)相關(guān)的程序結(jié)構(gòu)問(wèn)題。集成測(cè)試大多采用黑盒測(cè)試方法來(lái)設(shè)計(jì)測(cè)試用例。確認(rèn)測(cè)試以規(guī)格說(shuō)明書(shū)規(guī)定的需求為尺度,檢驗(yàn)開(kāi)發(fā)的軟件能否滿(mǎn)足所有的功能和性能要求。確認(rèn)測(cè)試完成以后,給出的應(yīng)該是合格的軟件產(chǎn)品。但為了檢驗(yàn)開(kāi)發(fā)的軟件是否與系統(tǒng)的其它部分(如硬件、數(shù)據(jù)庫(kù)及操作人員)協(xié)調(diào)工作,還需進(jìn)行系統(tǒng)測(cè)試。最后進(jìn)行驗(yàn)收測(cè)試,以解決開(kāi)發(fā)的軟件產(chǎn)品是否符合預(yù)期要求,用戶(hù)是否接受等問(wèn)題。1.單元測(cè)試單元測(cè)試是在軟件開(kāi)發(fā)過(guò)程中進(jìn)行的最低級(jí)別的測(cè)試活動(dòng),其目的是要檢測(cè)程序模塊中有無(wú)故障存在。也就是說(shuō),一開(kāi)始不是把程序作為一個(gè)整體來(lái)測(cè)試,而是首先集中注意力來(lái)測(cè)試程序中較小的結(jié)構(gòu)塊,以便于發(fā)現(xiàn)并糾正模塊內(nèi)部的故障。單元測(cè)試又稱(chēng)為模塊測(cè)試,模塊并沒(méi)有嚴(yán)格的定義,按照一般的理解,模塊應(yīng)具有一些基本屬性:如名字,明確規(guī)定的功能,內(nèi)部使用的數(shù)據(jù)或稱(chēng)局部數(shù)據(jù),與其它模塊或外界的數(shù)據(jù)聯(lián)系,實(shí)現(xiàn)其特定功能的算法,可被其上層模塊調(diào)用,也可調(diào)用其下屬模塊進(jìn)行協(xié)同工作等。在傳統(tǒng)的結(jié)構(gòu)化編程語(yǔ)言中(比如C語(yǔ)言),單元測(cè)試的對(duì)象一般是函數(shù)或子過(guò)程。在像C++這樣的面向?qū)ο蟮恼Z(yǔ)言中,單元測(cè)試的對(duì)象可以是類(lèi),也可以是類(lèi)的成員函數(shù)。對(duì)Ada語(yǔ)言而言,單元測(cè)試可以在獨(dú)立的過(guò)程和函數(shù)上進(jìn)行,也可以在Ada包的級(jí)別上進(jìn)行。單元測(cè)試的原則同樣也可以擴(kuò)展到第四代語(yǔ)言(4GL)中,這時(shí)單元被典型地定義為一個(gè)菜單或顯示界面。單元測(cè)試的對(duì)象是軟件設(shè)計(jì)的最小單位,與程序設(shè)計(jì)和編程實(shí)現(xiàn)關(guān)系密切,因此,單元測(cè)試一般由測(cè)試人員和編程人員共同完成。測(cè)試人員可通過(guò)模塊詳細(xì)設(shè)計(jì)說(shuō)明書(shū)和源程序代碼清楚地了解模塊的內(nèi)部邏輯結(jié)構(gòu)和I/O條件,常采用白盒測(cè)試方法設(shè)計(jì)測(cè)試用例。在實(shí)際軟件開(kāi)發(fā)工作中,單元測(cè)試和代碼編寫(xiě)所花費(fèi)的精力大致相同。經(jīng)驗(yàn)表明:?jiǎn)卧獪y(cè)試可以發(fā)現(xiàn)很多的軟件故障,并且修改它們的成本也很低。在軟件開(kāi)發(fā)的后期階段,發(fā)現(xiàn)并修復(fù)故障將變得更加困難,將花費(fèi)大量的時(shí)間和費(fèi)用。因此,有效的單元測(cè)試是保證全局質(zhì)量的一個(gè)重要部分。在經(jīng)過(guò)測(cè)試單元后,系統(tǒng)集成過(guò)程將會(huì)大大地簡(jiǎn)化,開(kāi)發(fā)人員可以將精力集中在單元之間的交互作用和全局的功能實(shí)現(xiàn)上,而不是陷入充滿(mǎn)故障的單元之中不能自拔。2.集成測(cè)試集成測(cè)試,又稱(chēng)組裝測(cè)試、子系統(tǒng)測(cè)試,是在單元測(cè)試基礎(chǔ)之上,將各個(gè)模塊組裝起來(lái)進(jìn)行的測(cè)試,其主要目的是發(fā)現(xiàn)與接口有關(guān)的模塊之間的問(wèn)題。這是因?yàn)闀r(shí)常有這樣的情況發(fā)生,每個(gè)模塊都能單獨(dú)工作,但這些模塊組裝起來(lái)之后卻不能正常工作。程序在某些局部反映不出的問(wèn)題,在全局上很可能就暴露出來(lái),影響功能的正常發(fā)揮。可能的原因有:●模塊相互調(diào)用時(shí)引入了新的問(wèn)題,例如數(shù)據(jù)可能丟失;一個(gè)模塊對(duì)另一模塊可能有不良影響等;●幾個(gè)子功能組合起來(lái)不能實(shí)現(xiàn)主功能;●誤差不斷積累達(dá)到不可接受的程度;●全局?jǐn)?shù)據(jù)結(jié)構(gòu)出現(xiàn)錯(cuò)誤等。因此,在每個(gè)模塊完成單元測(cè)試以后,需要按照設(shè)計(jì)的程序結(jié)構(gòu)圖,將它們組合起來(lái),進(jìn)行集成測(cè)試。集成測(cè)試是按設(shè)計(jì)要求把通過(guò)單元測(cè)試的各個(gè)模塊組裝在一起,檢測(cè)與接口有關(guān)的各種故障。那么,如何組織集成測(cè)試呢?是獨(dú)立地測(cè)試程序的每個(gè)模塊,然后再把它們組合成一個(gè)整體進(jìn)行測(cè)試好呢?還是先把下一個(gè)待測(cè)模塊組合到已經(jīng)測(cè)試過(guò)的那些模塊上去,再進(jìn)行測(cè)試,逐步完成集成好呢?前一種方法稱(chēng)為非增式集成測(cè)試法。后一種方法叫做增式集成測(cè)試法。非增式測(cè)試法的集成過(guò)程是:先對(duì)每—個(gè)模塊進(jìn)行單元測(cè)試,我們可以同時(shí)測(cè)試或是逐個(gè)地測(cè)試各個(gè)模塊,這主要由測(cè)試環(huán)境(如所用計(jì)算機(jī)是交互式的還是批處理式的)和參加測(cè)試的人數(shù)等情況來(lái)決定。然后,在此基礎(chǔ)上按程序結(jié)構(gòu)圖將各模塊連接起來(lái),把連接后的程序當(dāng)作一個(gè)整體進(jìn)行測(cè)試。這種集成測(cè)試方法容易出現(xiàn)混亂。因?yàn)闇y(cè)試時(shí)可能發(fā)現(xiàn)一大堆錯(cuò)誤,為每個(gè)故障定位和糾正非常困難,并且在修復(fù)一個(gè)故障的同時(shí)又可能引入新的故障,新舊故障混雜,很難斷定出錯(cuò)的原因和位置。與之相反的另一種集成方法是增量式集成測(cè)試方法。增式集成測(cè)試不是孤立地測(cè)試每一個(gè)模塊,而是將待測(cè)模塊與已測(cè)過(guò)的模塊集合連接起來(lái)進(jìn)行測(cè)試。增式集成測(cè)試過(guò)程,就是不斷地把待測(cè)模塊連接到已測(cè)模塊集(或其子集)上,對(duì)待測(cè)模塊進(jìn)行測(cè)試,直到最后一個(gè)模塊測(cè)試完畢。在軟件集成階段,測(cè)試的復(fù)雜程度遠(yuǎn)遠(yuǎn)超過(guò)單元測(cè)試的復(fù)雜程度。可以類(lèi)比一下,假設(shè)要清洗一臺(tái)已經(jīng)完全裝配好的食物加工機(jī)器,無(wú)論你噴了多少水和清潔劑,一些食物的小碎片還是會(huì)粘在機(jī)器的一些死角上,只有任其腐爛并等待以后再想辦法。但如果這臺(tái)機(jī)器是拆開(kāi)的,這些死角也許就不存在或者更容易接觸到,并且每一部分都可以毫不費(fèi)力地進(jìn)行清洗。3.確認(rèn)測(cè)試確認(rèn)測(cè)試是對(duì)照軟件需求規(guī)格說(shuō)明,對(duì)軟件產(chǎn)品進(jìn)行評(píng)估以確定其是否滿(mǎn)足軟件需求的過(guò)程。比如,編寫(xiě)出的程序相對(duì)于軟件需求規(guī)格說(shuō)明是否符合要求?程序輸出的信息是否是用戶(hù)所要求的信息?程序在整個(gè)系統(tǒng)的環(huán)境中能夠正確穩(wěn)定地運(yùn)行?等等,自然包含了對(duì)軟件需求滿(mǎn)足程度的評(píng)價(jià)。集成測(cè)試完成以后,分散開(kāi)發(fā)的模塊已經(jīng)按照設(shè)計(jì)要求組裝成一個(gè)完整的軟件系統(tǒng),各模塊之間存在的種種問(wèn)題都已基本排除。為進(jìn)一步驗(yàn)證軟件的有效性,對(duì)它在功能、性能、接口以及限制條件等方面做出更切實(shí)的評(píng)價(jià),就應(yīng)進(jìn)行確認(rèn)測(cè)試。在開(kāi)發(fā)的初期,軟件需求規(guī)格說(shuō)明中可能明確地規(guī)定了確認(rèn)標(biāo)準(zhǔn),但在測(cè)試階段需要更詳細(xì)、更具體地在測(cè)試規(guī)格說(shuō)明中加以體現(xiàn)。除了考慮功能、性能以外,還需檢驗(yàn)其它方面的要求。例如,可移植性、兼容性、可維護(hù)性、人機(jī)接口以及開(kāi)發(fā)的文檔資料是否符合要求等。經(jīng)過(guò)確認(rèn)測(cè)試,應(yīng)該為已開(kāi)發(fā)的軟件做出結(jié)論性的評(píng)價(jià)。這無(wú)非存在兩種情況:(1)經(jīng)過(guò)檢驗(yàn),軟件功能、性能及其它方面的要求都已滿(mǎn)足需求規(guī)格說(shuō)明的規(guī)定,是一個(gè)合格的軟件。(2)經(jīng)過(guò)檢驗(yàn),發(fā)現(xiàn)與軟件需求規(guī)格說(shuō)明有相當(dāng)?shù)钠x,得到一個(gè)缺陷清單,這就需要開(kāi)發(fā)部門(mén)和用戶(hù)進(jìn)行協(xié)商,找出解決的辦法。4.系統(tǒng)測(cè)試軟件只是計(jì)算機(jī)系統(tǒng)的一個(gè)重要組成部分,軟件開(kāi)發(fā)完成以后,還應(yīng)與系統(tǒng)中其它部分配合起來(lái),進(jìn)行一系列系統(tǒng)集成和測(cè)試,以保證系統(tǒng)各組成部分能夠協(xié)調(diào)地工作。這里所說(shuō)的系統(tǒng)組成部分除軟件外,還包括計(jì)算機(jī)硬件以及相關(guān)的外圍設(shè)備、數(shù)據(jù)及采集和傳輸機(jī)構(gòu)、計(jì)算機(jī)系統(tǒng)操作人員等。系統(tǒng)測(cè)試實(shí)際上是針對(duì)系統(tǒng)中各個(gè)組成部分進(jìn)行的綜合性檢驗(yàn),很接近日常測(cè)試實(shí)踐。例如,在購(gòu)買(mǎi)二手車(chē)時(shí)要進(jìn)行系統(tǒng)測(cè)試,在訂購(gòu)在線(xiàn)網(wǎng)絡(luò)時(shí)要進(jìn)行系統(tǒng)測(cè)試等。系統(tǒng)測(cè)試的目標(biāo)不是要找出軟件故障,而是要證明系統(tǒng)的性能。比如,確定系統(tǒng)是否滿(mǎn)足其性能需求;確定系統(tǒng)的峰值負(fù)載條件及在此條件下程序能否在要求的時(shí)間間隔內(nèi)處理要求的負(fù)載;確定系統(tǒng)使用資源(存儲(chǔ)器、磁盤(pán)空間等)是否會(huì)超界;確定安裝過(guò)程中是否會(huì)導(dǎo)致不正確的方式;確定系統(tǒng)或程序出現(xiàn)故障之后能否滿(mǎn)足恢復(fù)性需求;確定系統(tǒng)是否滿(mǎn)足可靠性要求等。系統(tǒng)測(cè)試很困難難,需要很多的創(chuàng)造性。那么,系統(tǒng)測(cè)試應(yīng)該由誰(shuí)來(lái)進(jìn)行測(cè)試??梢钥隙ㄒ韵氯藛T、機(jī)構(gòu)不能進(jìn)行系統(tǒng)測(cè)試:系統(tǒng)開(kāi)發(fā)人員不能進(jìn)行系統(tǒng)測(cè)試。系統(tǒng)開(kāi)發(fā)組織不能負(fù)責(zé)系統(tǒng)測(cè)試。之所以如此,第一個(gè)原因是,進(jìn)行系統(tǒng)測(cè)試的人必須善于從用戶(hù)的角度考慮問(wèn)題。他最好他能徹底地了解用戶(hù)的看法和環(huán)境,了解軟件的使用。顯然,最好的人選就是一個(gè)或多個(gè)用戶(hù)。然而,一般的用戶(hù)沒(méi)有前面所說(shuō)的各類(lèi)測(cè)試的能力和專(zhuān)業(yè)知識(shí),所以理想的系統(tǒng)測(cè)試小組應(yīng)由這樣一些人組成:幾個(gè)職業(yè)的系統(tǒng)測(cè)試專(zhuān)家、一到兩個(gè)用戶(hù)代表,一到兩個(gè)軟件設(shè)計(jì)者或分析者等。第二個(gè)原因是系統(tǒng)測(cè)試沒(méi)有清規(guī)戒律的約束、靈活性很強(qiáng)。而開(kāi)發(fā)機(jī)構(gòu)對(duì)自己程序的心理狀態(tài)往往與這類(lèi)測(cè)試活動(dòng)不相適應(yīng)。大部分開(kāi)發(fā)軟件機(jī)構(gòu)最關(guān)心的是讓系統(tǒng)測(cè)試能按時(shí)圓滿(mǎn)地完成,并不真正想說(shuō)明系統(tǒng)與其目標(biāo)是否一致。一般認(rèn)為:獨(dú)立測(cè)試機(jī)構(gòu)在測(cè)試過(guò)程中查錯(cuò)積極性高并且有解決問(wèn)題的專(zhuān)業(yè)知識(shí)。因此,系統(tǒng)測(cè)試最好由獨(dú)立的測(cè)試機(jī)構(gòu)完成。關(guān)于系統(tǒng)測(cè)試,有很多種類(lèi)型,我們將在第6章進(jìn)—步討論。5.驗(yàn)收測(cè)試驗(yàn)收測(cè)試的目的是向用戶(hù)表明所開(kāi)發(fā)的軟件系統(tǒng)能夠像用戶(hù)所預(yù)定的那樣工作,可以類(lèi)比為建筑的使用者來(lái)對(duì)建筑進(jìn)行的檢測(cè)。首先,他認(rèn)為這個(gè)建筑是滿(mǎn)足規(guī)定的工程質(zhì)量的,這是有建筑的質(zhì)檢人員來(lái)保證。使用者關(guān)注的重點(diǎn)是住在這個(gè)建筑的中的感受。包括建筑的外觀是否美觀、各個(gè)房間的大小是否合適,窗戶(hù)的位置是否合適,是否能夠滿(mǎn)足家庭的需要等。這里,建筑的使用者執(zhí)行的就是驗(yàn)收測(cè)試。驗(yàn)收測(cè)試是將最終產(chǎn)品與最終用戶(hù)的當(dāng)前需求進(jìn)行比較的過(guò)程,是軟件開(kāi)發(fā)結(jié)束后軟件產(chǎn)品向用戶(hù)交付之前進(jìn)行的最后一次質(zhì)量檢驗(yàn)活動(dòng),它解決開(kāi)發(fā)的軟件產(chǎn)品是否符合預(yù)期的各項(xiàng)要求,用戶(hù)是否接受等問(wèn)題。驗(yàn)收測(cè)試不只檢驗(yàn)軟件某方面的質(zhì)量,還要進(jìn)行全面的質(zhì)量檢驗(yàn)并決定軟件是否合格。因此,驗(yàn)收測(cè)試是一項(xiàng)嚴(yán)格的、正規(guī)的測(cè)試活動(dòng),并且應(yīng)該在生產(chǎn)環(huán)境中而不是開(kāi)發(fā)環(huán)境中進(jìn)行。驗(yàn)收測(cè)試的主要任務(wù)包括:●明確規(guī)定驗(yàn)收測(cè)試通過(guò)的標(biāo)準(zhǔn);●確定驗(yàn)收測(cè)試方法;●確定驗(yàn)收測(cè)試的組織和可利用的資源;●確定測(cè)試結(jié)果的分析方法;●制定驗(yàn)收測(cè)試計(jì)劃并進(jìn)行評(píng)審;●設(shè)計(jì)驗(yàn)收測(cè)試的測(cè)試用例;●審查驗(yàn)收測(cè)試的準(zhǔn)備工作;●執(zhí)行驗(yàn)收測(cè)試;●分析測(cè)試結(jié)果,決定是否通過(guò)驗(yàn)收。驗(yàn)收測(cè)試關(guān)系到軟件產(chǎn)品的命運(yùn),因此應(yīng)對(duì)軟件產(chǎn)品做出負(fù)責(zé)任的、符合實(shí)際情況的客觀評(píng)價(jià)。制定驗(yàn)收測(cè)試計(jì)劃是做好驗(yàn)收測(cè)試的關(guān)鍵一步。驗(yàn)收測(cè)試計(jì)劃應(yīng)為驗(yàn)收測(cè)試的設(shè)計(jì)、執(zhí)行、監(jiān)督、檢查和分析提供全面而充分的說(shuō)明,規(guī)定驗(yàn)收測(cè)試的責(zé)任者、管理方式、評(píng)審機(jī)構(gòu)以及所用資源、進(jìn)度安排、對(duì)測(cè)試數(shù)據(jù)的要求、所需的軟件工具、人員培訓(xùn)以及其他的特殊要求等??傊?,在進(jìn)行驗(yàn)收測(cè)試時(shí),應(yīng)盡可能去掉一些人為的模擬條件,去掉一些開(kāi)發(fā)者的主觀因素,使得驗(yàn)收測(cè)試能夠得到真實(shí)、客觀的結(jié)論。1.4軟件測(cè)試與軟件開(kāi)發(fā)的關(guān)系軟件開(kāi)發(fā)過(guò)程是軟件工程的重要內(nèi)容,也是進(jìn)行軟件測(cè)試的基礎(chǔ)。近年來(lái),軟件工程界普遍認(rèn)為,軟件生命周期的每一階段都應(yīng)進(jìn)行測(cè)試,以檢查本階段的工作成果是否接近預(yù)期的目標(biāo),盡可能早地發(fā)現(xiàn)并改正錯(cuò)誤。軟件測(cè)試貫穿于軟件開(kāi)發(fā)的整個(gè)期間。1.4.1軟件開(kāi)發(fā)過(guò)程一個(gè)軟件產(chǎn)品的開(kāi)發(fā)可能需要幾十、幾百甚至幾千人的協(xié)同工作,例如,開(kāi)發(fā)Windows2000Server大約有6000人參與。顯然,一個(gè)軟件產(chǎn)品的開(kāi)發(fā)過(guò)程與計(jì)算機(jī)程序愛(ài)好者編寫(xiě)個(gè)小程序的過(guò)程是完全不同的。正規(guī)的軟件開(kāi)發(fā)過(guò)程一般包括制定計(jì)劃、需求分析、設(shè)計(jì)、程序編碼、測(cè)試及運(yùn)行維護(hù)六個(gè)階段,即:第一階段計(jì)劃第二階段需求分析第三階段設(shè)計(jì)第四階段程序編寫(xiě)第五階段測(cè)試第六階段運(yùn)行和/維護(hù)這六個(gè)階段構(gòu)成了軟件的生存周期。以下給出各階段的主要任務(wù):(1)計(jì)劃(第一階段)確定軟件開(kāi)發(fā)的總目標(biāo)。設(shè)想軟件的功能、性能、可靠性以及接口等方面的要求。研究完成該項(xiàng)軟件任務(wù)的可行性,探討解決問(wèn)題的方案;對(duì)可供開(kāi)發(fā)使用的資源(如計(jì)算機(jī)軟/硬件、人力等)、成本、可取得的效益和開(kāi)發(fā)的進(jìn)度做出估計(jì);制定完成開(kāi)發(fā)任務(wù)的實(shí)施計(jì)劃(ImplementationPlan)。(2)需求分析(第二階段)對(duì)開(kāi)發(fā)的軟件進(jìn)行詳細(xì)的定義,由軟件開(kāi)發(fā)人員和用戶(hù)共同討論決定哪些需求是可以滿(mǎn)足的并且給予確切的描述;寫(xiě)出軟件需求說(shuō)明或稱(chēng)軟件規(guī)格說(shuō)明書(shū)以及初步的用戶(hù)手冊(cè),提交管理機(jī)構(gòu)審查。(3)軟件設(shè)計(jì)(第三階段)設(shè)計(jì)是軟件工程的技術(shù)核心。在設(shè)計(jì)階段應(yīng)把已確定的各項(xiàng)需求轉(zhuǎn)換成相應(yīng)的體系結(jié)構(gòu),在結(jié)構(gòu)中每一組成部分都是功能明確的模塊。每個(gè)模塊都能體現(xiàn)相應(yīng)的需求。這一步稱(chēng)為概要設(shè)計(jì)。在概要設(shè)計(jì)的基礎(chǔ)上進(jìn)行詳細(xì)設(shè)計(jì),即對(duì)每個(gè)模塊要完成的工作進(jìn)行具體的描述,包括確定使用的數(shù)據(jù)結(jié)構(gòu)等,為程序編寫(xiě)打下基礎(chǔ)。上述兩步設(shè)計(jì)工作均應(yīng)寫(xiě)出設(shè)計(jì)說(shuō)明,以供后繼工作使用并提交審查。(4)程序編寫(xiě)(第四階段)把軟件設(shè)計(jì)轉(zhuǎn)換成計(jì)算機(jī)可以接受的程序,即編寫(xiě)以某種程序設(shè)計(jì)語(yǔ)言表示的源程序。當(dāng)然,編寫(xiě)出的程序應(yīng)該是結(jié)構(gòu)良好、清晰易讀并且與設(shè)計(jì)相一致。(5)測(cè)試(第五階段)測(cè)試檢驗(yàn)開(kāi)發(fā)的軟件是否符合規(guī)格說(shuō)明的要求,它是保證軟件質(zhì)量的重要手段。通常測(cè)試工作分為4步,即:①單元測(cè)試:檢驗(yàn)各單元模塊能否正常工作。②集成測(cè)試:將已測(cè)試的模塊組裝起來(lái)進(jìn)行測(cè)試,檢驗(yàn)與軟件設(shè)計(jì)相關(guān)的程序結(jié)構(gòu)問(wèn)題。③確認(rèn)測(cè)試:對(duì)照軟件規(guī)格說(shuō)明,檢驗(yàn)開(kāi)發(fā)的軟件能否滿(mǎn)足所有功能和性能的要求,以決定開(kāi)發(fā)的軟件是否合格,能否提交用戶(hù)使用。④系統(tǒng)測(cè)試:檢驗(yàn)開(kāi)發(fā)的軟件能否與系統(tǒng)的其他部分(如硬件、數(shù)據(jù)庫(kù)、操作人員等)協(xié)調(diào)工作。(6)運(yùn)行和維護(hù)已交付給用戶(hù)的軟件投入正式使用以后便進(jìn)入運(yùn)行階段。這階段可能持續(xù)若干年,甚至幾十年。在運(yùn)行中可能有多種原因需要對(duì)軟件進(jìn)行修改。比如:運(yùn)行中發(fā)現(xiàn)了軟件故障;為適應(yīng)變化了的軟件工作環(huán)境,為進(jìn)一步增強(qiáng)軟件的功能,提高它的性能等。1.4.2軟件測(cè)試在軟件開(kāi)發(fā)中的作用軟件開(kāi)發(fā)經(jīng)過(guò)制定計(jì)劃、需求分析、設(shè)計(jì)階段之后,才能進(jìn)人編寫(xiě)程序階段。顯然,表現(xiàn)在程序中的故障,并不一定是編碼所引起的。很可能是詳細(xì)設(shè)計(jì)、概要設(shè)計(jì)階段,甚至是需求分析階段的問(wèn)題引起的。即使針對(duì)源程序進(jìn)行測(cè)試,所發(fā)現(xiàn)故障的根源也可能在開(kāi)發(fā)前期的各個(gè)階段。解決問(wèn)題、排除故障也必須追溯到前期的工作。因此,軟件測(cè)試應(yīng)貫穿于軟件定義與開(kāi)發(fā)的整個(gè)期間。測(cè)試在開(kāi)發(fā)各階段的作用如下:項(xiàng)目規(guī)劃階段:負(fù)責(zé)整個(gè)測(cè)試階段的監(jiān)控。需求分析階段:確定測(cè)試需求分析,制定系統(tǒng)測(cè)試計(jì)劃。測(cè)試需求分析是指產(chǎn)品生存周期中測(cè)試所需的資源、配置、各階段評(píng)審?fù)ㄟ^(guò)的標(biāo)準(zhǔn)等。概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)階段:制定集成測(cè)試計(jì)劃和單元測(cè)試計(jì)劃。編碼階段:開(kāi)發(fā)相應(yīng)的測(cè)試代碼或測(cè)試腳本。測(cè)試階段:實(shí)施測(cè)試,并提交相應(yīng)的測(cè)試報(bào)告。在確認(rèn)軟件需求并通過(guò)評(píng)審后,概要設(shè)計(jì)和制定測(cè)試計(jì)劃可以并行工作,當(dāng)系統(tǒng)模塊劃分好后,對(duì)各模塊的詳細(xì)設(shè)計(jì)、編碼、單元測(cè)試等也可并行工作,其測(cè)試與軟件開(kāi)發(fā)并行工作的流程如圖1.2所示。1.4.3軟件測(cè)試過(guò)程模型軟件測(cè)試是與軟件開(kāi)發(fā)緊密相關(guān)的一系列有計(jì)劃的活動(dòng),不同的開(kāi)發(fā)模型要求不同的測(cè)試過(guò)程。下面結(jié)合開(kāi)發(fā)模型介紹兩種軟件測(cè)試過(guò)程模型。1.軟件測(cè)試過(guò)程V模型V模型最早由上世紀(jì)80年代后期提出,旨在改進(jìn)軟件開(kāi)發(fā)的效率和效果,是最具有代表意義的測(cè)試模型。V模型是軟件開(kāi)發(fā)瀑布模型的變種,它不再把測(cè)試看作是一個(gè)事后的彌補(bǔ)行為,而是作為一個(gè)與開(kāi)發(fā)同等重要的過(guò)程,反映了測(cè)試與分析、設(shè)計(jì)、編碼的關(guān)系,結(jié)構(gòu)如圖1.3所示,其圖中左半部分描述了軟件開(kāi)發(fā)的基本過(guò)程,右半部分描述了與開(kāi)發(fā)過(guò)程相對(duì)于的測(cè)試活動(dòng)。V模型非常明確地表明了測(cè)試的不同級(jí)別,清晰地展示了軟件測(cè)試與開(kāi)發(fā)之間的關(guān)系:?jiǎn)卧獪y(cè)試的主要目的是根據(jù)詳細(xì)設(shè)計(jì)說(shuō)明書(shū)來(lái)檢測(cè)每個(gè)單元模塊是否符合預(yù)期的要求,主要檢查編碼過(guò)程中可能存在的各種錯(cuò)誤。集成測(cè)試的主要目的是根據(jù)概要設(shè)計(jì)說(shuō)明書(shū)來(lái)檢測(cè)各個(gè)模塊是否已正確地集成在一起。主要檢查各模塊與其它模塊接口之間可能存在的錯(cuò)誤。系統(tǒng)測(cè)試的主要目的是根據(jù)需求分析來(lái)檢測(cè)系統(tǒng)作為一個(gè)整體在它所預(yù)定的環(huán)境中是否能夠正常有效地工作,主要檢查軟件與系統(tǒng)定義不符合或與之矛盾的地方。V模型每一測(cè)試階段的基礎(chǔ)是對(duì)應(yīng)開(kāi)發(fā)階段的文檔。但測(cè)試與開(kāi)發(fā)文檔之間很少有這種完美的一對(duì)一關(guān)系,例如,需求分析的文檔常不足以為系統(tǒng)測(cè)試提供足夠的信息,系統(tǒng)測(cè)試通常還需要概要設(shè)計(jì)甚至詳細(xì)設(shè)計(jì)文檔的部分內(nèi)容。針對(duì)V模型的不足,又演化出其它幾種測(cè)試過(guò)程模型。2.軟件測(cè)試過(guò)程W模型W模型由兩個(gè)V字組成,分別代表測(cè)試與開(kāi)發(fā)過(guò)程,結(jié)構(gòu)如圖1.4所示,其中開(kāi)發(fā)過(guò)程位于圖的左邊,測(cè)試過(guò)程位于圖的右邊。每一個(gè)開(kāi)發(fā)過(guò)程對(duì)應(yīng)一個(gè)測(cè)試過(guò)程,如果開(kāi)發(fā)行為是對(duì)各種文檔的定義或編寫(xiě),那么相對(duì)應(yīng)的測(cè)試行為則是對(duì)這些文檔的靜態(tài)檢測(cè),W模型形象地說(shuō)明了軟件測(cè)試與開(kāi)發(fā)的并行關(guān)系,體現(xiàn)了測(cè)試貫穿于整個(gè)開(kāi)發(fā)過(guò)程的思想。從W模型很難容易看出測(cè)試的對(duì)象不僅僅是程序,需求和設(shè)計(jì)階段形成的文檔同樣是軟件測(cè)試的對(duì)象。W模型也有局限性。在W模型中,開(kāi)發(fā)、測(cè)試活動(dòng)都保持著一種前后關(guān)系,只有上一階段結(jié)束,才可以正式開(kāi)始下一階段的工作,因此無(wú)法支持迭代軟件開(kāi)發(fā)模型。不論哪一種軟件測(cè)試過(guò)程模型,都充分體現(xiàn)出軟件測(cè)試與軟件開(kāi)發(fā)密切相關(guān),在軟件生命周期中占據(jù)十分重要的地位,是軟件開(kāi)發(fā)的重要組成部分。1.4.4軟件測(cè)試環(huán)境的搭建測(cè)試一個(gè)軟件首先應(yīng)該搭建用來(lái)運(yùn)行軟件的環(huán)境,即測(cè)試環(huán)境。簡(jiǎn)單而言,軟件測(cè)試環(huán)境就是軟件運(yùn)行的平臺(tái),包括硬件、軟件、網(wǎng)絡(luò)、數(shù)據(jù)準(zhǔn)備和測(cè)試工具五方面的內(nèi)容,即:測(cè)試環(huán)境=硬件+軟件+網(wǎng)絡(luò)+數(shù)據(jù)準(zhǔn)備+測(cè)試工具硬件環(huán)境:主要是指PC機(jī)、筆記本電腦、服務(wù)器、各種PDA終端等。例如現(xiàn)要測(cè)試微軟的word2003這一款軟件,那么是在PC機(jī)上測(cè)試還是在筆記本電腦上測(cè)試?如果在PC機(jī)上測(cè)試,那么CPU是奔騰2.4G,還是賽揚(yáng)1.7G?內(nèi)存是DDR512M,還是SD128M?不同的機(jī)器類(lèi)型,不同的機(jī)器配置,必然會(huì)導(dǎo)致不同的反應(yīng)速度,因此測(cè)試一款軟件時(shí)一定要考慮硬件配置。軟件環(huán)境:這里指的主要是軟件運(yùn)行的操作系統(tǒng)。比如word2003是在Window2003下檢測(cè),還是在WindowXP下檢測(cè),這里可能會(huì)有兼容性的問(wèn)題。網(wǎng)絡(luò)環(huán)境:這里主要指的是C/S結(jié)構(gòu)還是B/S結(jié)構(gòu)。例如要測(cè)試微軟的outlook2003這一款軟件,那么是在局域網(wǎng)里測(cè),還是在互聯(lián)網(wǎng)里測(cè)?如果在局域網(wǎng)中測(cè),那么是在10M的局域網(wǎng)里測(cè),還是在100M的局域網(wǎng)里測(cè)?不同的網(wǎng)絡(luò)類(lèi)型,不同的傳輸速度,必然會(huì)導(dǎo)致不同的收發(fā)速度,因此測(cè)試一款軟件時(shí)也不能忽視網(wǎng)絡(luò)的因素。數(shù)據(jù)準(zhǔn)備:這里主要指的是測(cè)試數(shù)據(jù)的準(zhǔn)備。測(cè)試數(shù)據(jù)的準(zhǔn)備應(yīng)考慮數(shù)據(jù)量和真實(shí)性,即盡可能獲取大量的真實(shí)的數(shù)據(jù),包括正確和錯(cuò)誤的數(shù)據(jù)。當(dāng)無(wú)法取得真實(shí)數(shù)據(jù)時(shí)應(yīng)盡可能模擬出大量的數(shù)據(jù)。測(cè)試工具:目前市場(chǎng)上的測(cè)試工具很多,可分為靜態(tài)測(cè)試工具、動(dòng)態(tài)測(cè)試工具、黑盒測(cè)試工具、白盒測(cè)試工具、測(cè)試執(zhí)行評(píng)估工具、測(cè)試管理工具等,因此,對(duì)測(cè)試工具的選擇是一個(gè)比較重要的問(wèn)題,應(yīng)根據(jù)測(cè)試需求和實(shí)際條件來(lái)選擇已有的測(cè)試工具,或購(gòu)買(mǎi)、自行開(kāi)發(fā)相應(yīng)的測(cè)試工具。搭建軟件測(cè)試環(huán)境除了要考慮上述5種因素外,還應(yīng)注意以下幾點(diǎn):盡量模擬用戶(hù)的真實(shí)使用環(huán)境;測(cè)試環(huán)境中盡量不要安裝其它與被測(cè)軟件無(wú)關(guān)的軟件,但最好安裝殺毒軟件,以確保系統(tǒng)沒(méi)有病毒;測(cè)試環(huán)境應(yīng)與開(kāi)發(fā)環(huán)境獨(dú)立。總之,搭建的軟件測(cè)試環(huán)境應(yīng)與軟件生產(chǎn)運(yùn)行環(huán)境一致,但還要從軟件開(kāi)發(fā)環(huán)境中獨(dú)立出來(lái)。1.5軟件測(cè)試的發(fā)展歷程和現(xiàn)狀從計(jì)算機(jī)問(wèn)世以來(lái),程序的編制與測(cè)試就同時(shí)擺在人們的面前。只不過(guò)這一階段還沒(méi)有系統(tǒng)意義上的測(cè)試,更多是一種類(lèi)似調(diào)試的測(cè)試。測(cè)試沒(méi)有計(jì)劃和方法,測(cè)試用例的設(shè)計(jì)主要靠測(cè)試人員的經(jīng)驗(yàn),測(cè)試的目的大多是為了證明系統(tǒng)可以正常運(yùn)轉(zhuǎn)。上世紀(jì)50年代,英國(guó)著名的計(jì)算機(jī)科學(xué)家圖靈就給出了軟件測(cè)試的原始定義:測(cè)試是程序正確性證明的一種極端實(shí)驗(yàn)形式。但在這個(gè)時(shí)期,程序比較簡(jiǎn)單,規(guī)模較小,一般在幾百到幾千行源代碼,測(cè)試者可以簡(jiǎn)單地根據(jù)程序的功能進(jìn)行測(cè)試,測(cè)試用例一般在隨機(jī)選取的基礎(chǔ)上,吸取測(cè)試者的經(jīng)驗(yàn)或是憑直覺(jué)判斷出某些重點(diǎn)測(cè)試區(qū)域。測(cè)試在軟件開(kāi)發(fā)中的作用并沒(méi)有受到應(yīng)有的重視。測(cè)試方法和理論研究比較緩慢。直到上世紀(jì)70年代以后,隨著計(jì)算機(jī)硬件技術(shù)的進(jìn)步與成熟,軟件在整個(gè)系統(tǒng)中所占的地位越來(lái)越重要,軟件規(guī)模和復(fù)雜性大大增加。軟件可靠性面臨前所未有的危機(jī),給軟件測(cè)試工作帶來(lái)了挑戰(zhàn),測(cè)試的意義逐漸被人們認(rèn)識(shí),軟件測(cè)試的研究開(kāi)始受到重視,是軟件測(cè)試技術(shù)發(fā)展最活躍的時(shí)期。Brooks總結(jié)了開(kāi)發(fā)IBMOS/360操作系統(tǒng)中的經(jīng)驗(yàn),在著名的《神秘的人一月》書(shū)中闡明了軟件測(cè)試在大型系統(tǒng)研制中的重要意義。1975年,Goodenough首次提出了軟件測(cè)試?yán)碚?,從而把軟件測(cè)試這一實(shí)踐性很強(qiáng)的學(xué)科提高到理論的高度。Huang全面地討論了測(cè)試準(zhǔn)則、測(cè)試過(guò)程、及測(cè)試數(shù)據(jù)生成等軟件測(cè)試問(wèn)題。Hetzel整理出版了“ProgramTestMethods”一書(shū),總結(jié)歸納了測(cè)試方法以至各種自動(dòng)測(cè)試工具,這是軟件測(cè)試的第一本著作。隨后,Miller在測(cè)試管理和普及方面作了大量工作,為把現(xiàn)代測(cè)試概念推向?qū)嵺`做出了重要貢獻(xiàn)。1982年,美國(guó)北卡來(lái)納大學(xué)召開(kāi)了首次軟件測(cè)試技術(shù)會(huì)議,是軟件測(cè)試與軟件質(zhì)量研究人員和開(kāi)發(fā)人員的第一次聚會(huì),這次會(huì)議成為軟件測(cè)試技術(shù)發(fā)展的一個(gè)重要的里程碑。此后,測(cè)試?yán)碚?、測(cè)試方法進(jìn)一步完善,從而使軟件測(cè)試這一實(shí)踐性很強(qiáng)的學(xué)科成為有理論指導(dǎo)的學(xué)科。在軟件測(cè)試?yán)碚撗杆侔l(fā)展的同時(shí),各種軟件測(cè)試方法也應(yīng)運(yùn)而生。如Huang提出了程序插裝的概念,使被測(cè)程序在保持原有邏輯完整性的基礎(chǔ)上,插入“探測(cè)儀”,以便獲取程序的控制流及數(shù)據(jù)流信息,計(jì)算測(cè)試的覆蓋率。Howden和Clarke等人將符號(hào)執(zhí)行的概念引入到軟件測(cè)試中,提出了符號(hào)測(cè)試方法,并且建立了DISSET等符號(hào)測(cè)試系統(tǒng)。Demillo首先提出了基于程序變異的測(cè)試方法,使傳統(tǒng)的測(cè)試技術(shù)領(lǐng)域增加了新的成員——錯(cuò)誤驅(qū)動(dòng)測(cè)試。Osterweit和Fosdick等人首先引入了數(shù)據(jù)流測(cè)試方法,通過(guò)對(duì)數(shù)據(jù)流進(jìn)行靜態(tài)分析以找出程序中潛藏的缺陷。Frankl將數(shù)據(jù)流信息應(yīng)用到路徑選擇中,并定義了相應(yīng)的測(cè)試覆蓋準(zhǔn)則,如所有路徑覆蓋準(zhǔn)則、所有定義、-引用路徑覆蓋準(zhǔn)則使用路徑覆蓋準(zhǔn)則、所有使用覆蓋準(zhǔn)則、所有定義覆蓋準(zhǔn)則、所有計(jì)算引用覆蓋準(zhǔn)則等等,并給出了各覆蓋準(zhǔn)則之間的包含關(guān)系,如所有定義-使用路徑包含于所有使用all-du-pathsall-uses等。隨著面向?qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計(jì)技術(shù)的日漸成熟,面向?qū)ο蟮能浖_(kāi)發(fā)技術(shù)得到了軟件界的普遍認(rèn)可,面向?qū)ο筌浖y(cè)試技術(shù)的研究逐漸受到人們的重視。1994年9月CommunicationofACM出版了面向?qū)ο蟮能浖y(cè)試專(zhuān)集,涉及了類(lèi)測(cè)試、集成測(cè)試和面向?qū)ο筌浖目蓽y(cè)試性等問(wèn)題。1995~1997年的Object雜志,由Binder執(zhí)筆面向?qū)ο蟮能浖y(cè)試專(zhuān)欄,重點(diǎn)討論了基于狀態(tài)的面向?qū)ο鬁y(cè)試技術(shù)??傊?,上世紀(jì)70-80年代,軟件測(cè)試技術(shù)迅速發(fā)展,已逐漸發(fā)展成為一門(mén)獨(dú)立的學(xué)科。盡管軟件測(cè)試技術(shù)與實(shí)踐有了很大的進(jìn)展,但總的來(lái)說(shuō),仍然和軟件開(kāi)發(fā)實(shí)踐的要求相距較遠(yuǎn)。就目前軟件工程發(fā)展的狀況而言,軟件測(cè)試仍然是較為薄弱的一個(gè)方面。不僅測(cè)試?yán)碚?,已有的測(cè)試方法也不能滿(mǎn)足當(dāng)前軟件開(kāi)發(fā)的實(shí)際需求。尤其是進(jìn)入20世紀(jì)90年代后,計(jì)算機(jī)技術(shù)日趨成熟,軟件應(yīng)用范圍逐步擴(kuò)大,軟件規(guī)模和復(fù)雜性急劇增加,與此同時(shí),計(jì)算機(jī)出現(xiàn)故障引起系統(tǒng)失效的可能性也逐漸增加。由于計(jì)算機(jī)硬件技術(shù)的進(jìn)步,元器件可靠性的提高,硬件設(shè)計(jì)和驗(yàn)證技術(shù)的成熟,硬件故障相對(duì)顯得次要了,軟件故障正逐漸成為導(dǎo)致計(jì)算機(jī)系統(tǒng)失效和停機(jī)的主要因素。軟件質(zhì)量和軟件可靠性已引起社會(huì)和業(yè)界的高度重視,為此,國(guó)際上每?jī)赡暾匍_(kāi)一次軟件測(cè)試與分析研討會(huì),專(zhuān)門(mén)就軟件測(cè)試與軟件質(zhì)量問(wèn)題進(jìn)行廣泛的交流。為推進(jìn)和協(xié)調(diào)軟件測(cè)試的研究工作,1999年在美國(guó)LosAngeles召開(kāi)的第21屆國(guó)際軟件工程會(huì)議,將軟件測(cè)試作為一個(gè)技術(shù)專(zhuān)題展開(kāi),以改善軟件開(kāi)發(fā)過(guò)程,提高軟件質(zhì)量。我國(guó)每?jī)赡暾匍_(kāi)一次的全國(guó)軟件工程會(huì)議、全國(guó)容錯(cuò)計(jì)算會(huì)議都設(shè)有軟件測(cè)試專(zhuān)題部分。2001年首次召開(kāi)的全國(guó)測(cè)試學(xué)術(shù)會(huì)議,將軟件測(cè)試作為一個(gè)主要的議題。2004年在青海西寧、2007年在云南昆明召開(kāi)了兩次全國(guó)軟件測(cè)試與軟件可靠性工程研討會(huì),以推進(jìn)我國(guó)軟件測(cè)試技術(shù)的研究與發(fā)展。隨著軟件測(cè)試技術(shù)的不斷進(jìn)步和完善,各種軟件測(cè)試方法、測(cè)試手段層出不窮,軟件測(cè)試自動(dòng)化程度不斷提高,軟件測(cè)試產(chǎn)品逐漸進(jìn)入市場(chǎng),軟件評(píng)測(cè)中心如雨后春筍般壯大起來(lái)??梢灶A(yù)計(jì),在未來(lái)3~5年內(nèi),軟件測(cè)試技術(shù)將作為一門(mén)新興產(chǎn)業(yè)而快速發(fā)展起來(lái)。1.6我國(guó)軟件測(cè)試產(chǎn)業(yè)現(xiàn)狀近兩年來(lái),隨著軟件市場(chǎng)的成熟,軟件行業(yè)的競(jìng)爭(zhēng)越來(lái)越激烈,軟件行業(yè)已從過(guò)去的賣(mài)方市場(chǎng)轉(zhuǎn)變?yōu)楝F(xiàn)在的買(mǎi)方市場(chǎng),軟件的質(zhì)量、性能、可靠性等方面正逐漸成為人們關(guān)注的焦點(diǎn)。為提高自身的競(jìng)爭(zhēng)能力,軟件企業(yè)必須重視和加強(qiáng)軟件測(cè)試。實(shí)際上,軟件測(cè)試行業(yè)在國(guó)外已經(jīng)很成熟了。據(jù)統(tǒng)計(jì),歐美軟件項(xiàng)目中,軟件測(cè)試的工作量和費(fèi)用已占到項(xiàng)目總工作量的53%~87%。國(guó)外成熟軟件企業(yè),如微軟,軟件開(kāi)發(fā)人員與測(cè)試人員的比例約為1:2,而國(guó)內(nèi)軟件企業(yè),平均8個(gè)軟件開(kāi)發(fā)工程師才對(duì)應(yīng)1個(gè)軟件測(cè)試工程師,比例嚴(yán)重失衡。隨著軟件外包行業(yè)的逐漸興起和人們對(duì)軟件質(zhì)量保障意識(shí)的加強(qiáng),中國(guó)軟件企業(yè)已開(kāi)始認(rèn)識(shí)到,軟件測(cè)試的廣度和深度決定了中國(guó)軟件企業(yè)的前途命運(yùn)。以占中國(guó)軟件外包總量近85%的對(duì)日軟件外包來(lái)說(shuō),業(yè)務(wù)內(nèi)容基本都針對(duì)測(cè)試環(huán)節(jié)。軟件外包中對(duì)測(cè)試環(huán)節(jié)的強(qiáng)化,直接導(dǎo)致了軟件外包企業(yè)對(duì)測(cè)試人才的大量需求。近年來(lái),幾乎所有的軟件企業(yè)均存在不同程度的測(cè)試人才缺口,軟件測(cè)試工程師已成為了亟待補(bǔ)充的關(guān)鍵技術(shù)工種之一。在近期的多場(chǎng)大型招聘會(huì)上,IBM、百度、華為、惠普、盛大網(wǎng)絡(luò)、聯(lián)想集團(tuán)等國(guó)內(nèi)外大型IT企業(yè)均表現(xiàn)出對(duì)成熟軟件測(cè)試人才的期盼,而微軟、三星、西門(mén)子、思科、華為3COM等多家國(guó)內(nèi)外IT巨頭則相繼在全國(guó)各大高校招兵買(mǎi)馬,并把軟件測(cè)試人才的招聘放在了突出的位置。近期無(wú)憂(yōu)指數(shù)也顯示出,軟件測(cè)試工程師已經(jīng)成為2006年最緊缺的人才之一。國(guó)內(nèi)軟件測(cè)試人才緊缺的現(xiàn)狀已經(jīng)凸現(xiàn)出來(lái)。據(jù)統(tǒng)計(jì),國(guó)內(nèi)軟件測(cè)試工程師的缺口為30萬(wàn)之多,這點(diǎn)從51JOB的招聘信息中也可見(jiàn)一斑(圖1.5)。圖1.5軟件測(cè)試工程師招聘信息與此形成對(duì)比的是在此前較長(zhǎng)的一段時(shí)間內(nèi),由于國(guó)內(nèi)軟件企業(yè)對(duì)測(cè)試人才的不重視,導(dǎo)致了目前國(guó)內(nèi)軟件質(zhì)量“健康”堪憂(yōu),因此如何保證完善軟件測(cè)試人才的供應(yīng)體系,從而提高軟件質(zhì)量,將成為國(guó)內(nèi)軟件企業(yè)持續(xù)關(guān)注的重點(diǎn)之一。目前國(guó)內(nèi)軟件測(cè)試工程師的來(lái)源主要有三方面:一是以前專(zhuān)業(yè)做軟件開(kāi)發(fā)的人員后來(lái)轉(zhuǎn)行做軟件測(cè)試,二是從大學(xué)招聘的本科或者研究生,三就是通過(guò)培訓(xùn)機(jī)構(gòu)招聘的專(zhuān)業(yè)學(xué)員。國(guó)內(nèi)軟件測(cè)試培訓(xùn)教育機(jī)構(gòu)主要分為兩類(lèi):一類(lèi)是專(zhuān)門(mén)的軟件測(cè)試培訓(xùn)機(jī)構(gòu),這些機(jī)構(gòu)只做軟件測(cè)試這塊的培訓(xùn)。如中國(guó)軟件測(cè)評(píng)中心、北大測(cè)試,北京慧靈科技,賽寶軟件評(píng)測(cè)中心、上海心力教育,上海博為峰,國(guó)家軟件評(píng)測(cè)中心培訓(xùn)部等。另一類(lèi)是社會(huì)上的一般IT教育培訓(xùn)機(jī)構(gòu),他們推出的課程比較多,軟件測(cè)試培訓(xùn)是其中的一個(gè)培訓(xùn)欄目,如中科院計(jì)算所培訓(xùn)中心、新東方職業(yè)教育中心、渥瑞達(dá)北美IT培訓(xùn)中心、深圳優(yōu)邁科技等。希賽網(wǎng)軟件測(cè)試頻道()還舉辦了“2006中國(guó)軟件測(cè)試培訓(xùn)機(jī)構(gòu)前5強(qiáng)調(diào)查評(píng)選”,從用戶(hù)角度,對(duì)目前中國(guó)國(guó)內(nèi)軟件測(cè)試培訓(xùn)機(jī)構(gòu)進(jìn)行了深入調(diào)查。近幾年以來(lái),我國(guó)軟件測(cè)試行業(yè)發(fā)展極為迅速,軟件測(cè)試評(píng)測(cè)中心如雨后春筍般成長(zhǎng)起來(lái)。2004年2月,中國(guó)軟件評(píng)測(cè)中心在云南昆明召開(kāi)了"2004中國(guó)軟件評(píng)測(cè)中心分中心工作會(huì)議",來(lái)自上海、浙江、深圳、重慶、遼寧、吉林、青島、四川、廣州、安徽等地的多家評(píng)測(cè)中心參加了會(huì)議。目前我國(guó)已有1500多家軟件評(píng)測(cè)中心,軟件測(cè)試從業(yè)人員達(dá)到數(shù)萬(wàn)人,軟件測(cè)試產(chǎn)值達(dá)到數(shù)億元??梢灶A(yù)測(cè),在未來(lái)的幾年里,軟件測(cè)試和行業(yè)將會(huì)得到更大的發(fā)展和壯大。1.7軟件測(cè)試工具為了提高軟件測(cè)試效率,加快軟件開(kāi)發(fā)過(guò)程,一些測(cè)試工具相距問(wèn)世,主要有白盒測(cè)試工具、黑盒測(cè)試工具、測(cè)試制定工具、測(cè)試執(zhí)行工具、測(cè)試管理工具和測(cè)試支持工具等幾大類(lèi)。它們的應(yīng)用范圍和質(zhì)量相差很大,提供輔助的程度也各不相同。1.白盒測(cè)試工具白盒測(cè)試工具一般是針對(duì)被測(cè)源程序進(jìn)行的測(cè)試,測(cè)試中發(fā)現(xiàn)的故障可以定位到代碼級(jí),根據(jù)測(cè)試工具的原理不同,又可以分為靜態(tài)測(cè)試工具和動(dòng)態(tài)測(cè)試工具。(1)靜態(tài)測(cè)試工具靜態(tài)測(cè)試工具是在不執(zhí)行程序的情況下,分析軟件的特性。靜態(tài)分析主要集中在需求文檔、設(shè)計(jì)文檔以及程序結(jié)構(gòu)上,可以進(jìn)行類(lèi)型分析、接口分析、輸入輸出規(guī)格說(shuō)明分析等。常用的靜態(tài)分析工具有:McCabe&Associates公司開(kāi)發(fā)的McCabeVisualQualityToolSet分析工具;ViewLog公司開(kāi)發(fā)的LogiScope分析工具;SoftwareResearch公司開(kāi)發(fā)的TestWork/Advisor分析工具及SoftwareEmancipation公司開(kāi)發(fā)的Discover分析工具,北京郵電大學(xué)開(kāi)發(fā)的DTS缺陷測(cè)試工具等。按照完成的職能不同,靜態(tài)測(cè)試工具有以下幾種類(lèi)型:代碼審查,一致性檢查,錯(cuò)誤檢查,接口分析,輸入輸出規(guī)格說(shuō)明分析,數(shù)據(jù)流分析,類(lèi)型分析,單元分析,復(fù)雜度分析等。(2)動(dòng)態(tài)測(cè)試工具動(dòng)態(tài)測(cè)試工具與靜態(tài)測(cè)試工具不同,動(dòng)態(tài)測(cè)試工具直接執(zhí)行被測(cè)程序以提供測(cè)試支持。它所支持測(cè)試的范圍十分廣泛,包括功能確認(rèn)與接口測(cè)試、覆蓋率分析、性能分析、內(nèi)存分析等。覆蓋分析可以對(duì)測(cè)試質(zhì)量提供定量的分析。換言之,覆蓋分析對(duì)所涉及的程序結(jié)構(gòu)元素或數(shù)據(jù)流信息(如變量的定義、變量的定義-使用路徑等)進(jìn)行度量,以確定測(cè)試運(yùn)行的充分性。這種測(cè)試覆蓋分析工具對(duì)所有軟件測(cè)試機(jī)構(gòu)都是必不可少的,它可以告訴被測(cè)軟件產(chǎn)品中哪些部分已被測(cè)試過(guò),哪些部分還沒(méi)有被覆蓋到,需要進(jìn)一步的測(cè)試。動(dòng)態(tài)測(cè)試工具的代表有Compuware公司開(kāi)發(fā)的DevPartner軟件、Rational公司研制的Purify系列等。2.黑盒測(cè)試工具黑盒測(cè)試是在已知軟件產(chǎn)品應(yīng)具有的功能的條件下,在完全不考慮被測(cè)程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,通過(guò)測(cè)試來(lái)檢測(cè)每個(gè)功能是否都按照需求規(guī)格說(shuō)明的規(guī)定正常使用。黑盒測(cè)試工具的代表有Rational公司的TeamTest,Compuware公司的QACenter。常用的黑盒測(cè)試工具包括:功能測(cè)試工具和性能測(cè)試工具。功能測(cè)試工具主要用于檢測(cè)被測(cè)程序能否達(dá)到預(yù)期的功能要求并正常運(yùn)行。性能測(cè)試工具有助于確定軟件和系統(tǒng)性能,有些工具還可用于自動(dòng)多用戶(hù)客戶(hù)/服務(wù)器加載測(cè)試和性能測(cè)量,用來(lái)生成、控制并分析客戶(hù)/服務(wù)器應(yīng)用的性能等。3.測(cè)試設(shè)計(jì)和開(kāi)發(fā)工具測(cè)試設(shè)計(jì)是說(shuō)明測(cè)試被測(cè)軟件特征或特征組合的方法,確定并選擇相關(guān)測(cè)試用例的過(guò)程。測(cè)試開(kāi)發(fā)是將測(cè)試設(shè)計(jì)轉(zhuǎn)換成具體的測(cè)試用例的過(guò)程。像制定測(cè)試計(jì)劃一樣,對(duì)最重要、最費(fèi)腦筋的測(cè)試設(shè)計(jì)過(guò)程來(lái)說(shuō),工具起不了多大的作用。但測(cè)試執(zhí)行和評(píng)估類(lèi)工具,如捕獲/回放工具,是有助于測(cè)試開(kāi)發(fā)的,也是實(shí)施計(jì)劃和設(shè)計(jì)合理測(cè)試用例的最有效手段。測(cè)試設(shè)計(jì)和開(kāi)發(fā)工具類(lèi)型有:測(cè)試數(shù)據(jù)生成器,基于需求的測(cè)試設(shè)計(jì)工具,捕獲/回放工具和覆蓋分析工具等。測(cè)試數(shù)據(jù)生成工具非常有用,可以為被測(cè)程序自動(dòng)生成測(cè)試數(shù)據(jù),減輕人們?cè)谏纱罅繙y(cè)試數(shù)據(jù)時(shí)所付出的勞動(dòng),同時(shí)還可避免測(cè)試人員對(duì)一部分測(cè)試數(shù)據(jù)的偏見(jiàn)。其中,路徑測(cè)試數(shù)據(jù)生成器是一類(lèi)常用的測(cè)試數(shù)據(jù)生成工具。主要的測(cè)試數(shù)據(jù)生成工具有:Bender&Associates公司提供的功能測(cè)試數(shù)據(jù)生成工具SoftTest;Parasoft公司提供的C/C++單元測(cè)試工具ParasoftC++test等。4.測(cè)試執(zhí)行和評(píng)估工具測(cè)試執(zhí)行和評(píng)估是執(zhí)行測(cè)試用例并對(duì)結(jié)果進(jìn)行評(píng)估的過(guò)程,包括選擇用于執(zhí)行的測(cè)試用例、設(shè)置測(cè)試環(huán)境、運(yùn)行所選擇的測(cè)試、記錄測(cè)試執(zhí)行活動(dòng)、分析潛在的軟件故障并測(cè)量測(cè)試工作的有效性。評(píng)估類(lèi)工具對(duì)執(zhí)行測(cè)試用例和評(píng)估結(jié)果這一過(guò)程起輔助作用。測(cè)試執(zhí)行和評(píng)估所要求的工具類(lèi)型有:捕獲/回放,覆蓋分析和存儲(chǔ)器測(cè)試。對(duì)于不斷的重復(fù)運(yùn)行的測(cè)試,我們可求助于捕獲/回放工具使測(cè)試自動(dòng)化,換言之,就是根據(jù)需要,可以幾個(gè)小時(shí)、一個(gè)晚上或一天24小時(shí)不間斷運(yùn)行測(cè)試而不需值班管理。利用存儲(chǔ)器測(cè)試工具可以在故障發(fā)生之前將其確認(rèn)利用存儲(chǔ)器測(cè)試工具可以在故障發(fā)生之前確認(rèn)。詳細(xì)的診斷信息可以、跟蹤并消除故障。存儲(chǔ)器測(cè)試工具大多是語(yǔ)言專(zhuān)用和平臺(tái)專(zhuān)業(yè)的,有些可用于最常見(jiàn)的環(huán)境。這方面最好的工具是非侵入式的,且使用方便、價(jià)格合理。5.測(cè)試管理工具測(cè)試管理工具是指幫助完成測(cè)試計(jì)劃,跟蹤測(cè)試運(yùn)行結(jié)果等的工具,一個(gè)小型軟件項(xiàng)目可能就有數(shù)千個(gè)測(cè)試用例要執(zhí)行,使用捕獲/回放工具可以建立測(cè)試并使其自動(dòng)化執(zhí)行,但我們還需要測(cè)試用例管理工具對(duì)成千上萬(wàn)、雜亂無(wú)章的測(cè)試用例進(jìn)行管理。測(cè)試管理工具主要用于對(duì)測(cè)試進(jìn)行管理,包括測(cè)試用例管理,缺陷跟蹤管理和配置管理。一般而言,測(cè)試管理工具對(duì)測(cè)試計(jì)劃、測(cè)試用例、測(cè)試實(shí)施進(jìn)行管理,這類(lèi)工具還包括有助于需求、設(shè)計(jì)、編碼測(cè)試及缺陷跟蹤管理的工具。測(cè)試管理工具的代表有Rational公司的TestManager、Compureware公司的TrackRecord等軟件。6.目前市場(chǎng)上主流的測(cè)試工具目前市場(chǎng)上專(zhuān)業(yè)開(kāi)發(fā)軟件測(cè)試工具的公司很多,但以MI,Rational和Compuware公司開(kāi)發(fā)的軟件測(cè)試工具為主導(dǎo),這3家世界著名軟件公司的任何一款測(cè)試工具都可構(gòu)成一個(gè)完整的軟件測(cè)試解決方案。(1)MI公司產(chǎn)品介紹MI公司為行業(yè)提供一整套綜合自動(dòng)軟件測(cè)試解決方案,其開(kāi)發(fā)的軟件測(cè)試工具在市場(chǎng)上占有絕對(duì)的主導(dǎo)地位。2004年國(guó)際數(shù)據(jù)統(tǒng)計(jì)中心IDC的統(tǒng)計(jì)數(shù)據(jù)表明,MI公司的四大主流產(chǎn)品LoadRunner,WinRunner,TestDirector和QTP在全球市場(chǎng)的占有率達(dá)到55%以上。LoadRunner是一款適用于企業(yè)級(jí)系統(tǒng)、各種體系架構(gòu)的自動(dòng)性能測(cè)試工具,它可以建立多個(gè)虛擬用戶(hù),記錄用戶(hù)的操作,通過(guò)模擬實(shí)際用戶(hù)的操作和實(shí)時(shí)性能監(jiān)測(cè)來(lái)確認(rèn)和查找問(wèn)題,預(yù)測(cè)系統(tǒng)行為并優(yōu)化系統(tǒng)性能。LoadRunner是跨平臺(tái)的,可以安裝在Window、Linux等多種操作系統(tǒng)中。目前,越來(lái)越多的國(guó)內(nèi)軟件企業(yè)使用LoadRunner為自己產(chǎn)品進(jìn)行性能測(cè)試,據(jù)MI公司預(yù)測(cè),中國(guó)將成為MI最大的市場(chǎng)。WinRunner是一款基于MSWindows操作系統(tǒng)的自動(dòng)功能測(cè)試工具,可以按照預(yù)期的設(shè)計(jì)來(lái)執(zhí)行、支持測(cè)試腳本的編輯和執(zhí)行,可保證測(cè)試腳本的可重復(fù)性,主要用于監(jiān)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 采購(gòu)合同協(xié)議中的支付方式3篇
- 采購(gòu)合同跟蹤與跟單的有效方法3篇
- 采購(gòu)合同風(fēng)險(xiǎn)識(shí)別與管理3篇
- 2024年醫(yī)院神經(jīng)內(nèi)科醫(yī)師崗位聘任及神經(jīng)系統(tǒng)疾病診療合同3篇
- 采購(gòu)合同的在線(xiàn)客戶(hù)服務(wù)3篇
- 采購(gòu)合同供應(yīng)商臺(tái)帳3篇
- 2024年度醫(yī)院院長(zhǎng)醫(yī)院醫(yī)療糾紛處理聘用合同3篇
- 采購(gòu)合同預(yù)付款的稅務(wù)籌劃技巧3篇
- 采購(gòu)合同中的工程質(zhì)量控制3篇
- 采購(gòu)合同的履行合同依據(jù)3篇
- 常見(jiàn)急救知識(shí)培訓(xùn)課件
- 紅色國(guó)風(fēng)喜迎元旦介紹宣傳PPT教學(xué)課件
- 領(lǐng)導(dǎo)干部廉政知識(shí)競(jìng)賽題庫(kù)及答案
- 降低銳器盒不規(guī)腎內(nèi)科品管圈課件
- 《了凡四訓(xùn)》課件
- 2ttk7d6.0gd空調(diào)裝置使用維護(hù)說(shuō)明書(shū)法補(bǔ)充
- 重大火災(zāi)隱患判定培訓(xùn)課件
- 經(jīng)濟(jì)思想史課后習(xí)題答案
- 大學(xué)生就業(yè)與創(chuàng)業(yè)指導(dǎo)課件
- 如何理解歐盟MDR臨床評(píng)價(jià)要求
- (新平臺(tái))國(guó)家開(kāi)放大學(xué)《政治學(xué)原理》形考任務(wù)1-4參考答案
評(píng)論
0/150
提交評(píng)論