摘要:程序被修改后,要保證程序能正常運(yùn)行并且修改不能給程序質(zhì)量帶來(lái)任何負(fù)面影響,回歸測(cè)試是必要的。大型軟件系統(tǒng)結(jié)構(gòu)復(fù)雜,構(gòu)成要素多,如何做到不遺漏功能點(diǎn)同時(shí)降低軟件回歸測(cè)試代價(jià),本文結(jié)合業(yè)務(wù)規(guī)則模型、修改影響分析和成本風(fēng)險(xiǎn)管理等技術(shù)提出了一種自動(dòng)化回歸測(cè)試方法。
關(guān)鍵詞:回歸測(cè)試風(fēng)險(xiǎn)管理修改影響分析
1、引言
在軟件測(cè)試過(guò)程中,由于需要對(duì)軟件進(jìn)行修改,修改后的程序必須重新測(cè)試,以確保程序的修改是否達(dá)到了目的和是否引入了新的錯(cuò)誤,這種測(cè)試就是回歸測(cè)試。軟件的變化可能是源于發(fā)現(xiàn)了錯(cuò)誤并做了修改,也有可能是因?yàn)樵诩苫蚓S護(hù)階段加入了新的模塊。當(dāng)軟件中所包含的錯(cuò)誤被發(fā)現(xiàn)時(shí),如果對(duì)錯(cuò)誤的跟蹤管理系統(tǒng)不夠完善,可能會(huì)遺漏對(duì)這些錯(cuò)誤的修改;而開(kāi)發(fā)人員對(duì)錯(cuò)誤理解的不夠透徹,也可能導(dǎo)致所做的修改只修正了錯(cuò)誤的外在表現(xiàn),沒(méi)有修改錯(cuò)誤本身,甚至可能產(chǎn)生副作用,從而導(dǎo)致軟件未被修改的部分又產(chǎn)生新的問(wèn)題,使本來(lái)正常的功能產(chǎn)生錯(cuò)誤。同樣,在有新代碼加入軟件的時(shí)候,除了新加入的代碼中有可能含有錯(cuò)誤外,新代碼還有可能對(duì)原有的代碼帶來(lái)影響。因此,每當(dāng)軟件發(fā)生變化時(shí),我們就必須重新測(cè)試現(xiàn)有的功能,以便確定修改是否達(dá)到了預(yù)期的目的,檢查修改是否損害了原有的正常功能。因此需要進(jìn)行回歸測(cè)試。
回歸測(cè)試是一種代價(jià)較高,比較耗時(shí)的測(cè)試方法,然而又是必不可少的。大型軟件通常規(guī)模大,系統(tǒng)結(jié)構(gòu)復(fù)雜,構(gòu)成要素多、層次多,在漸進(jìn)和快速迭代開(kāi)發(fā)中,新版本的連續(xù)發(fā)布使回歸測(cè)試的實(shí)施更加頻繁。因此,通過(guò)選擇正確的回歸測(cè)試策略來(lái)改進(jìn)回歸測(cè)試的效率和效果,減小回歸測(cè)試代價(jià)是非常有意義的。
2、大型軟件回歸測(cè)試面臨的問(wèn)題
大型軟件回歸測(cè)試面臨兩個(gè)重大難題:一是系統(tǒng)變更引起的回歸測(cè)試范圍無(wú)法準(zhǔn)確界定;二是參數(shù)組合引起的測(cè)試用例急劇膨脹,無(wú)法在較短時(shí)間內(nèi)以合理成本完成最低覆蓋率要求的回歸測(cè)試。而且大型軟件回歸測(cè)試往往受到測(cè)試時(shí)間和測(cè)試環(huán)境條件的約束,而測(cè)試的工程性質(zhì)又決定了它不可能達(dá)到理論上的完整。
在有限的時(shí)間和資源條件下,為了更合理的規(guī)劃和安排測(cè)試工作,在測(cè)試計(jì)劃的制定階段需要一個(gè)決策機(jī)制能夠在資源約束,如時(shí)間、人力、成本的前提下基于風(fēng)險(xiǎn)管理和測(cè)試成本預(yù)算進(jìn)行決策。
隨著軟件生命周期的推進(jìn),軟件的開(kāi)發(fā)與回歸測(cè)試反復(fù)迭代,規(guī)則的表達(dá)逐漸完善,測(cè)試用例庫(kù)越來(lái)越豐富,回歸測(cè)試的實(shí)施效率將越來(lái)越高。
3、大型軟件回歸測(cè)試方法
通過(guò)構(gòu)建回歸測(cè)試決策支持平臺(tái)可以為大型軟件的回歸測(cè)試提供可行的解決方案。
3.1業(yè)務(wù)規(guī)則
業(yè)務(wù)規(guī)則是定義和約束業(yè)務(wù)結(jié)構(gòu)與業(yè)務(wù)行為的規(guī)定或規(guī)范,是業(yè)務(wù)運(yùn)作和管理決策所依賴的重要資源。建立大型軟件業(yè)務(wù)規(guī)則模型正是要繼承資深測(cè)試專(zhuān)家所積累的業(yè)務(wù)知識(shí),使事實(shí)上得到使用的規(guī)則有一種顯式的表達(dá)。在此基礎(chǔ)上,結(jié)合測(cè)試?yán)碚摵鸵?guī)則的整合以及用例優(yōu)化算法,建立自動(dòng)化用例生成系統(tǒng)。
業(yè)務(wù)規(guī)則的來(lái)源一般包括:
1.業(yè)務(wù)需求導(dǎo)出的規(guī)則;
2.測(cè)試?yán)碚撛瓌t導(dǎo)出的規(guī)則;
3.軟件業(yè)傳統(tǒng)導(dǎo)出的規(guī)則;
4.業(yè)內(nèi)常識(shí)導(dǎo)出的規(guī)則。
業(yè)務(wù)規(guī)則模型的基礎(chǔ)是手工測(cè)試中積累的一系列用例設(shè)計(jì)規(guī)則、行業(yè)規(guī)范和源于業(yè)務(wù)的特殊約束。業(yè)務(wù)規(guī)則模型用于表達(dá)這些手工時(shí)代的規(guī)則,并建立一種可加載規(guī)則的引擎結(jié)構(gòu),在通過(guò)該引擎加載規(guī)則后,可以通過(guò)決策支持系統(tǒng)生成面向某個(gè)具體過(guò)程的用例模板的基礎(chǔ)用例集。
所謂規(guī)則的加載,是將某條規(guī)則加入規(guī)則庫(kù)中,重點(diǎn)是適用條件的表達(dá)和優(yōu)化算法的指定。
對(duì)于一個(gè)目標(biāo)系統(tǒng),一次窮盡所有可能的規(guī)則是不可能的,只能漸進(jìn)地逼進(jìn),所以應(yīng)該允許手工追加規(guī)則,這一過(guò)程是業(yè)務(wù)規(guī)則模型的學(xué)習(xí)過(guò)程。
3.2修改影響分析
對(duì)于軟件回歸測(cè)試來(lái)說(shuō),確定修改影響的范圍是至關(guān)重要的,修改的影響范圍也是回歸測(cè)試的目標(biāo)范圍。如果無(wú)法確定修改的范圍,則理論上說(shuō)就得把整個(gè)系統(tǒng)重測(cè)一遍,對(duì)于大型軟件,這種代價(jià)也是巨大的。
3.3成本風(fēng)險(xiǎn)評(píng)估
如何在有限的時(shí)間和資源預(yù)算下,更合理的規(guī)劃和安排測(cè)試工作。回歸測(cè)試在實(shí)踐中往往受到測(cè)試時(shí)間、測(cè)試成本、人工投入和測(cè)試對(duì)象業(yè)務(wù)關(guān)鍵性等約束,因此需要制定一個(gè)科學(xué)的測(cè)試計(jì)劃,以保證在滿足各種條件約束的前提下能夠確保測(cè)試質(zhì)量。
Boehm 用公式RE=P(UO)*L(UO)對(duì)風(fēng)險(xiǎn)進(jìn)行定義,其中RE表示風(fēng)險(xiǎn)或者風(fēng)險(xiǎn)所造成的影響,P(UO)表示令人不滿意的結(jié)果所發(fā)生的可能性,L(UO)表示糟糕的結(jié)果會(huì)產(chǎn)生的破壞性程度。
因此,被測(cè)試對(duì)象f中存在的風(fēng)險(xiǎn)值 Re(f)的大小可以用出錯(cuò)的概率與出錯(cuò)的代價(jià)的乘積來(lái)表達(dá):
Re(f) = p(f)*l(f)
確定待測(cè)試對(duì)象風(fēng)險(xiǎn)因素發(fā)生的可能性及其造成的損失的過(guò)程是風(fēng)險(xiǎn)估計(jì)階段。將風(fēng)險(xiǎn)發(fā)生的概率與風(fēng)險(xiǎn)發(fā)生造成的損失相乘,可以得到每個(gè)測(cè)試對(duì)象的風(fēng)險(xiǎn)值。
為了方便對(duì)風(fēng)險(xiǎn)進(jìn)行定量的估計(jì),采用等級(jí)評(píng)定的方法對(duì)出錯(cuò)代價(jià)和出錯(cuò)概率進(jìn)行表達(dá)。其中風(fēng)險(xiǎn)概率由模塊成熟度和開(kāi)發(fā)人員的出錯(cuò)預(yù)期共同計(jì)算。確定開(kāi)發(fā)方的出錯(cuò)預(yù)期的依據(jù)是過(guò)往的缺陷率記錄,在沒(méi)有缺陷記錄時(shí),所有的開(kāi)發(fā)人員度成熟度都默認(rèn)為高,此后,個(gè)人成熟度分值隨著個(gè)人缺陷率對(duì)平均缺陷率的相對(duì)值和個(gè)人缺陷率趨勢(shì)而變化。
根據(jù)風(fēng)險(xiǎn)值的估算,可以確定待測(cè)試對(duì)象的最低測(cè)試深度。在測(cè)試深度的要求下,首先選擇適當(dāng)強(qiáng)度的測(cè)試用例簡(jiǎn)約算法進(jìn)行試算,可以得出完成該對(duì)象測(cè)試需要的用例數(shù)。
由于回歸測(cè)試中大量用例可以復(fù)用,計(jì)算實(shí)施成本是需要對(duì)自動(dòng)生成的測(cè)試用例和手工完成的測(cè)試用例區(qū)分對(duì)待,以不同的權(quán)重進(jìn)行計(jì)算,最終得出整個(gè)測(cè)試過(guò)程的實(shí)施成本。實(shí)施成本可以表示為測(cè)試投入的人時(shí)數(shù)。根據(jù)實(shí)施成本與項(xiàng)目預(yù)期成本投入和時(shí)間進(jìn)行比較,判斷待測(cè)試對(duì)象的成本是否在可以接受的范圍里,如果可以接受,就可以根據(jù)相應(yīng)簡(jiǎn)約算法生成最終需要的測(cè)試用例庫(kù)。如果實(shí)施成本無(wú)法接受,可以重新調(diào)整用例簡(jiǎn)約算法,降低或者提高測(cè)試強(qiáng)度,重新計(jì)算實(shí)施成本,直到滿足預(yù)算要求。
4、結(jié)論
回歸測(cè)試研究有著廣闊的空間,尤其對(duì)于系統(tǒng)結(jié)構(gòu)復(fù)雜,構(gòu)成要素多的大型系統(tǒng)軟件回歸測(cè)試,本文提出的自動(dòng)化回歸測(cè)試方法,對(duì)于降低回歸測(cè)試代價(jià),提高回歸測(cè)試質(zhì)量和效率具有及其重要的作用。
參考文獻(xiàn):
[1]孟微,羅省賢.面向行業(yè)應(yīng)用的回歸測(cè)試方法研究.應(yīng)用技術(shù)與研究
[2]Boehm B.Software Risk Management:Principles and Practices[J].IEEE Software,1991,01.
[3]雷海虹,繆力,張大方.面向?qū)ο蟪绦虻膬煞N修改影響分析方法.計(jì)算機(jī)工程與科學(xué).2005.5.
[4]胡順仁,蔣西明,周登義.面向?qū)ο笙到y(tǒng)的回歸測(cè)試研究.重慶工學(xué)院學(xué)報(bào).2005.5.
[5]謝海波,張大方,繆力,潭曉蘭,面向?qū)ο筌浖男薷挠绊懛治鲅芯縖J].科學(xué)技術(shù)與工程,2005.10