【摘要】:隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,人們對(duì)計(jì)算機(jī)的需求和依賴與日俱增。隨著而來(lái)的是計(jì)算機(jī)系統(tǒng)的規(guī)模和復(fù)雜性急劇增加,其軟件開發(fā)成本以及由于軟件故障而造成的經(jīng)濟(jì)損失也正在增加,軟件質(zhì)量問(wèn)題已成為人們關(guān)注的焦點(diǎn)。因此,許多科學(xué)家在展望21世紀(jì)計(jì)算機(jī)科學(xué)發(fā)展方向和策略時(shí),把軟件質(zhì)量放在優(yōu)先提高軟件功能和性能的位置上。隨著軟件質(zhì)量問(wèn)題的不斷出現(xiàn),基于缺陷模式的軟件測(cè)試技術(shù)作為高可信度軟件的重要保證,可以大大降低軟件的缺陷密度,提高軟件的質(zhì)量。
【關(guān)鍵詞】:軟件質(zhì)量;軟件測(cè)試;測(cè)試技術(shù)
1.軟件測(cè)試的目標(biāo)和意義
軟件測(cè)試是一個(gè)找錯(cuò)的過(guò)程。從人本身的弱點(diǎn)來(lái)看,完全由軟件設(shè)計(jì)人員負(fù)責(zé)測(cè)試工作是不適宜的。大型軟件系統(tǒng)的測(cè)試分為單元測(cè)試和綜合測(cè)試兩個(gè)階段。多數(shù)場(chǎng)合,軟件設(shè)計(jì)人員與測(cè)試人員共同完成單元測(cè)試任務(wù),一般指派專門機(jī)構(gòu)負(fù)責(zé)軟件產(chǎn)品的綜合測(cè)試。隨著軟件工程的復(fù)雜化,有時(shí)設(shè)計(jì)人員也加入該產(chǎn)品的綜合測(cè)試過(guò)程。軟件測(cè)試是一項(xiàng)花費(fèi)昂貴的活動(dòng),測(cè)試者希望通過(guò)軟件測(cè)試提高軟件的質(zhì)量或可靠性,意味著發(fā)現(xiàn)并改正程序中的錯(cuò)誤。所以,進(jìn)行測(cè)試時(shí)不應(yīng)該為了顯示程序是有沒有問(wèn)題,而應(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è)試”。
2.軟件測(cè)試過(guò)程
軟件測(cè)試是軟件開發(fā)過(guò)程中的一個(gè)重要環(huán)節(jié),是在軟件投入運(yùn)行前,對(duì)軟件需求分析、設(shè)計(jì)規(guī)格說(shuō)明和編碼實(shí)現(xiàn)的最終審定,貫穿于軟件定義與開發(fā)的整個(gè)過(guò)程中。
軟件項(xiàng)目一旦開始,軟件測(cè)試也隨之開始。從單元測(cè)試、集成測(cè)試、配置項(xiàng)測(cè)試、最終的驗(yàn)收測(cè)試,整個(gè)測(cè)試過(guò)程環(huán)環(huán)相扣,各有側(cè)重點(diǎn)。
2.1單元測(cè)試
單元測(cè)試是在軟件開發(fā)過(guò)程中進(jìn)行的最低級(jí)別的測(cè)試活動(dòng),其目的是要檢測(cè)程序模塊中有無(wú)故障存在。開始不是把程序作為一個(gè)整體來(lái)測(cè)試,而是首先集中注意力來(lái)測(cè)試程序中較小的結(jié)構(gòu)快,以便發(fā)現(xiàn)并糾正模塊內(nèi)部的故障。在傳統(tǒng)的結(jié)構(gòu)化編程語(yǔ)言中,單元測(cè)試的對(duì)象一般是函數(shù)或子函數(shù)。例如在面向?qū)ο笳Z(yǔ)言中,單元測(cè)試的對(duì)象可以是類,也可以是類的成員函數(shù)。
單元測(cè)試的對(duì)象時(shí)軟件設(shè)計(jì)的最小單位,與程序設(shè)計(jì)和編程實(shí)現(xiàn)關(guān)系密切,因此,單元測(cè)試一般由測(cè)試人員和編程人員共同完成。測(cè)試人員可通過(guò)模塊詳細(xì)設(shè)計(jì)說(shuō)明和源程序代碼清楚地了解模塊的內(nèi)部邏輯結(jié)構(gòu)和I/O條件,一般采用白盒測(cè)試方法設(shè)計(jì)測(cè)試用例。在實(shí)際軟件開發(fā)工作中,單元測(cè)試和代碼編寫所花費(fèi)的精力大致相同。實(shí)踐表明,單元測(cè)試可以發(fā)現(xiàn)許多的軟件故障,并且修改它們的成本很低。在軟件開發(fā)的后期階段,發(fā)現(xiàn)并修復(fù)故障將變得更加困難。因此,有效的單元測(cè)試是保證全局質(zhì)量的一個(gè)重要部分。在經(jīng)過(guò)單元測(cè)試后,系統(tǒng)測(cè)試過(guò)程將大大簡(jiǎn)化,開發(fā)人員可以將精力集中在單元之間的交互作用和全局的功能實(shí)現(xiàn)上,而不是陷入充滿故障的單元之中不能自拔。
2.2集成測(cè)試
集成測(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ā)揮。例如,數(shù)據(jù)經(jīng)過(guò)接口可能丟失,一個(gè)模塊對(duì)另一個(gè)模塊可能造成不應(yīng)有的影響,幾個(gè)功能組合起來(lái)不能實(shí)現(xiàn)主功能,誤差不斷積累達(dá)到不可接受的程度,全局?jǐn)?shù)據(jù)結(jié)構(gòu)出現(xiàn)錯(cuò)誤等等。集成測(cè)試是組裝軟件的系統(tǒng)測(cè)試技術(shù),按照設(shè)計(jì)要求把通過(guò)單元測(cè)試的各個(gè)模塊組裝在一起之后,進(jìn)行集成測(cè)試便于發(fā)現(xiàn)與接口有關(guān)的各種錯(cuò)誤。
某些軟件設(shè)計(jì)人員習(xí)慣于把所有模塊設(shè)計(jì)按照一次全部組裝起來(lái),然后進(jìn)行整體測(cè)試,這種非增量式集成測(cè)試方法容易出現(xiàn)混亂。因?yàn)闇y(cè)試時(shí)可能發(fā)現(xiàn)一大堆錯(cuò)誤,為每個(gè)錯(cuò)誤定位和糾正非常困難,并且在改正一個(gè)錯(cuò)誤的同時(shí)有可能引入新的錯(cuò)誤,新舊錯(cuò)誤混雜,更難斷出出錯(cuò)的原因和位置。
2.3配置項(xiàng)測(cè)試
配置項(xiàng)測(cè)試是按照軟件需求規(guī)格說(shuō)明,對(duì)軟件產(chǎn)品進(jìn)行評(píng)估以確定是否滿足軟件需求的過(guò)程。集成測(cè)試完畢后,分散開發(fā)的模塊已經(jīng)按照設(shè)計(jì)要求組裝成一個(gè)完整的軟件系統(tǒng),各模塊之間存在的種種問(wèn)題都已經(jīng)基本排除。為了進(jìn)一步驗(yàn)證軟件的有效性,對(duì)它在功能、性能、接口以及限制條件等方面做出更切實(shí)的評(píng)價(jià),就應(yīng)進(jìn)行配置項(xiàng)測(cè)試。在開發(fā)的初期,軟件需求規(guī)格說(shuō)明中可能明確地規(guī)定了配置項(xiàng)測(cè)試通過(guò)的標(biāo)準(zhǔn),但在測(cè)試階段需要更詳細(xì)、更具體地在測(cè)試規(guī)格說(shuō)明中加以體現(xiàn)。除了考慮功能、性能以外,還需檢驗(yàn)其他方面的要求。例如,可移植性、兼容性、可維護(hù)性、人機(jī)接口以及開發(fā)的文檔資料是否符合要求等。
配置項(xiàng)測(cè)試的結(jié)構(gòu)一般有兩種可能,一種是功能與性能指標(biāo)滿足軟件需求規(guī)格說(shuō)明中的要求,用戶可以接受;另外一種是軟件不滿足軟件需求規(guī)格說(shuō)明的要求,有一定偏差,用戶無(wú)法接受。項(xiàng)目進(jìn)行到這個(gè)階段,對(duì)于出現(xiàn)的偏差與嚴(yán)重錯(cuò)誤,一般很難再預(yù)定的工期內(nèi)改正,因此必須與用戶協(xié)商,尋求一個(gè)妥善的解決辦法。
2.4系統(tǒng)測(cè)試
軟件開發(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í)踐。系統(tǒng)測(cè)試的目標(biāo)不是找出軟件故障,而是要證明系統(tǒng)的性能。例如確定系統(tǒng)是否滿足其性能要求,確定系統(tǒng)使用資源是否超界,確定安裝過(guò)程中是否會(huì)導(dǎo)致不正確的方式,確定系統(tǒng)是否滿足可靠性等需求。
3.總結(jié)
軟件測(cè)試在軟件生存期中占有非常突出的位置,是保證軟件質(zhì)量的重要手段。為了確保該軟件產(chǎn)品能夠符合用戶的需求,必須著眼于整個(gè)軟件生存期,在各個(gè)階段進(jìn)行驗(yàn)證、確認(rèn)和測(cè)試活動(dòng),使軟件不致在開發(fā)完成后,才發(fā)現(xiàn)和用戶的需求有較大的差距。
測(cè)試是軟件開發(fā)時(shí)期任務(wù)繁重的一個(gè)階段,也是保證軟件可靠性最重要的手段。軟件測(cè)試是在投入運(yùn)行前對(duì)軟件需求分析、軟件設(shè)計(jì)規(guī)格說(shuō)明書和軟件編碼進(jìn)行查錯(cuò)和糾錯(cuò)。測(cè)試的目的是以最少的測(cè)試用例集合測(cè)試出更多的程序中潛在的錯(cuò)誤,而不是證明程序中沒有錯(cuò)誤。
參考文獻(xiàn):
[1]軟件工程理論、方法與實(shí)踐[M].北京:高等教育出版社,2005.
[2] 周偉明.軟件測(cè)試實(shí)踐[M]:電子工業(yè)出版社,2007年12月