




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