黃焯恒 孫鑒鋒 王建新
摘 要:軟件內(nèi)部錯(cuò)誤數(shù)估算是降低軟件工程風(fēng)險(xiǎn)、保證軟件工程順利實(shí)施的重要途徑。在當(dāng)前軟件測(cè)試中,項(xiàng)目管理人員采用傳統(tǒng)的估算策略,但是估算效果往往受制于測(cè)試人員獨(dú)立性等諸多因素的干擾。其中,具有相似背景的測(cè)試人員對(duì)于測(cè)試過程會(huì)具有相似認(rèn)知,這種不獨(dú)立性使軟件錯(cuò)誤數(shù)的模型估算值往往比真實(shí)值偏低。類似潛在因素在軟件錯(cuò)誤數(shù)估算中大量存在,降低了估算準(zhǔn)確性。因此,本文基于傳統(tǒng)的Hyman估算法提出了一種改進(jìn)的度量方法(p-值修正法),該方法能有效排除組間人員相關(guān)性對(duì)Hyman模型的干擾,能在很大程度上提高估算的準(zhǔn)確性。同時(shí),該方法易于用戶理解、簡(jiǎn)便易行、可靠性高,可降低軟件工程風(fēng)險(xiǎn),對(duì)決策人員有很大幫助,適合普遍推廣。
關(guān)鍵詞:軟件測(cè)試;軟件錯(cuò)誤估算;Hyman估算法;p-值修正法
中圖分類號(hào):TP311.5 文獻(xiàn)標(biāo)識(shí)碼:A
Abstract:Estimating the inner error number of software is an important means of decreasing software engineering risks and making software engineering implemented successfully.In current software testing,project managers employ traditional estimation strategy,and the estimation effect is affected by the factors such as the independence of the test personnel.Testers of similar background may have similar cognition of the testing process,and such independence makes the estimated number of errors smaller than the real number.Moreover,such potential factors exist a lot in error estimating, hence destroying the estimation accuracy.Therefore,an improved estimation method,p-value revision method,is proposed in this paper,which is able to remove the intervention by the inter-group correlations of the testers,promoting the estimation accuracy.Meanwhile,this method is easy to be understood by users,is ready to be implemented,and is highly reliable.It is capable of decreasing software engineering risks,is helpful for decision makers,and is suitable for wide use.
Keywords:software testing;software error estimation;hyman estimation method;revision method of p-value
1 引言(Introduction)
當(dāng)前,隨著互聯(lián)網(wǎng)時(shí)代的蓬勃發(fā)展,各類軟件層出不窮,數(shù)不勝數(shù)的軟件在互聯(lián)網(wǎng)這趟高速列車上蜂擁而至。并且,隨著用戶需求的不斷增加,軟件設(shè)計(jì)和開發(fā)過程中的復(fù)雜性不斷增高。為了確保軟件質(zhì)量[1,2],應(yīng)該開展更加行之有效的軟件測(cè)試[3,4]。計(jì)算機(jī)之父圖靈認(rèn)為軟件測(cè)試是軟件正確性確認(rèn)的一種方法。因此,軟件測(cè)試應(yīng)盡力找出軟件設(shè)計(jì)的失敗與不足之處,并加以糾正,確保軟件最終設(shè)計(jì)目標(biāo)的實(shí)現(xiàn),以此不斷地提高軟件質(zhì)量。1983年,IEEE對(duì)軟件測(cè)試給出了如下的定義:使用人工或自動(dòng)手段來運(yùn)行和測(cè)定某個(gè)系統(tǒng)的過程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或是確定預(yù)期的結(jié)果與實(shí)際的結(jié)果之間的差別[5]。但在測(cè)試之前需使用良好的軟件錯(cuò)誤估算方法[6],幫助測(cè)試人員發(fā)現(xiàn)錯(cuò)誤,使預(yù)期結(jié)果和實(shí)際結(jié)果之間的距離不斷縮小,是軟件工程過程有更好的可控性。
軟件中錯(cuò)誤數(shù)量的估算不準(zhǔn),對(duì)軟件質(zhì)量的改善就越不確定,人們發(fā)現(xiàn)一個(gè)錯(cuò)誤越晚,修正的難度越大,造成的損失也就越大。所以軟件的測(cè)試工作越早開始越好,軟件錯(cuò)誤數(shù)的估算越準(zhǔn)確越好。因而,良好的錯(cuò)誤估算模型對(duì)于提升軟件質(zhì)量猶如“銀彈”般至關(guān)重要。
回首過往,自軟件行業(yè)誕生以來,測(cè)試人員尋找良好的估算錯(cuò)誤方法的腳步一直沒有停下來。從20世紀(jì)70年代開始到80年代中期是軟件可靠性建模技術(shù)的快速發(fā)展時(shí)期,這段時(shí)間產(chǎn)生了上百種的軟件可靠性模型。1972年Mills將種子模型(Seeding-Model)運(yùn)用到了軟件錯(cuò)誤數(shù)估算中[7]。在過去,種子模型是估計(jì)軟件錯(cuò)誤數(shù)量的重要手段之一,該方法模仿估算池塘中魚尾數(shù)的方式,在開始排錯(cuò)以前被測(cè)軟件中含有的錯(cuò)誤數(shù)x。在不讓排錯(cuò)程序人員知道的情況下,在程序中置入y個(gè)錯(cuò)誤(相當(dāng)于為y條魚尾作標(biāo)記后放回池中)。經(jīng)過一段時(shí)間的軟件測(cè)試,所測(cè)得的軟件錯(cuò)誤可以分成兩類,一類是屬于置入的錯(cuò)誤X,另一類是非置入的錯(cuò)誤Y。通過構(gòu)造其比例關(guān)系式,來成功的估算出全部的錯(cuò)誤數(shù)量。該方法具有簡(jiǎn)單直觀的優(yōu)點(diǎn)。但是該方法全過程不能自動(dòng)實(shí)現(xiàn),并且,無法保證人為置入的軟件錯(cuò)誤的規(guī)律與軟件內(nèi)實(shí)際存在的軟件錯(cuò)誤的規(guī)律一樣或相似。后來,Hyman改進(jìn)了Mills的估算錯(cuò)誤的方法[8],該方法可以運(yùn)用蒙特卡羅(Monte-Carlo)模擬方法[9]快速計(jì)算來解決這一問題,因而,這一模型被軟件行業(yè)廣泛應(yīng)用。近來,苗洋[7]通過對(duì)Hyman估算公式的變形,構(gòu)造出估錯(cuò)數(shù)量與時(shí)間之間的函數(shù),但是,該方法由于其較難操作,很難應(yīng)用于實(shí)際的軟件估錯(cuò)當(dāng)中。
事實(shí)上,軟件測(cè)試中估算錯(cuò)誤數(shù)量的過程會(huì)受到諸多外界因素的干擾。比如,當(dāng)兩組測(cè)試人員不獨(dú)立且高度相關(guān)時(shí)(這也是經(jīng)常出現(xiàn)的情形),其測(cè)得的相同錯(cuò)誤數(shù)會(huì)偏低,從而使估算值比真實(shí)值偏高。并且,這種相關(guān)性越強(qiáng),估算值的偏離程度越大。
為了盡可能縮減這一偏差,改善Hyman估算方法的質(zhì)量,我們提出一種相似度系數(shù)(p-值修正法)來改善估算值的準(zhǔn)確性。該方法通過度量測(cè)試人員之間的相關(guān)程度,運(yùn)用“懲罰”的思想,修正估算結(jié)果,對(duì)軟件中的錯(cuò)誤數(shù)做出更加精準(zhǔn)的判斷。為此,我們?cè)谖闹幸雽?duì)Hyman法的概率推導(dǎo)過程[6],幫助讀者更好的理解p值修正法的整體思想。
2 估算軟件中錯(cuò)誤數(shù)量的方法(Method of estimating software error number)
2.1 Hyman估算法
假設(shè)A組和B組兩組測(cè)試人員互相獨(dú)立地對(duì)某個(gè)軟件進(jìn)行測(cè)試,我們記A組人員和B組人員測(cè)得的錯(cuò)誤數(shù)分別為i和j 個(gè),兩組測(cè)試人員共同測(cè)試出的錯(cuò)誤數(shù)為k,軟件錯(cuò)誤數(shù)的估算值與這三個(gè)量的關(guān)系如下:
式(1)即為著名的Hyman估錯(cuò)方法表達(dá)式。該模型簡(jiǎn)單易懂,但在排錯(cuò)人員進(jìn)行軟件測(cè)試之前,通常要做如下幾個(gè)假設(shè):
(1)兩組測(cè)試人員之間是相互獨(dú)立的,并且在測(cè)試過程中沒有相互交流。
(2)排錯(cuò)時(shí),不再引入新的錯(cuò)誤。
(3)排錯(cuò)的過程隨機(jī)進(jìn)行。
(4)在排錯(cuò)過程中錯(cuò)誤特性不變。
(5)所有軟件缺陷的觸發(fā)概率都是相等的。
如果上述某條假設(shè)不成立,均會(huì)在一定程度上降低最終結(jié)果的準(zhǔn)確性。下面我們用概率模型的手段分析該問題。
一方面,由于實(shí)際生產(chǎn)生活當(dāng)中,估算軟件錯(cuò)誤數(shù)目帶有未知性和不確定性,因此,我們可以將這一過程抽象為一種概率問題;另一方面,這為了更好地幫助理解本文提出的優(yōu)化方法,引入針對(duì)Hyman法問題求解的概率模型,記事件Z為“A組人員和B組人員檢測(cè)出的相同錯(cuò)誤的數(shù)量恰好為 個(gè)”,所以可有:
其中n為估算個(gè)數(shù),也就是說我們希望找到最佳的,
令,研究函數(shù)的單調(diào)性。若,則函數(shù)單調(diào)遞增;若,則函數(shù)遞減。
將(2)式帶入當(dāng)中,推得
即當(dāng),函數(shù)遞增;當(dāng),函數(shù)遞減,即,這也證明了采用Hyman估錯(cuò)的可靠性。
但是,當(dāng)兩組測(cè)試人員具有較高的相關(guān)性時(shí),Hyman方法會(huì)有較大的估算誤差,如下面場(chǎng)景。
場(chǎng)景1:假設(shè)M公司的某款軟件中存在100個(gè)錯(cuò)誤,A組和B組兩組測(cè)試人員在對(duì)該軟件中測(cè)試時(shí),分別得到了i=20和j=20個(gè)錯(cuò)誤。理想情況下,如果兩組測(cè)試人員之間完全獨(dú)立,則測(cè)出的共同錯(cuò)誤數(shù)k的理論值為4,此時(shí)用式(1)估算的結(jié)果為100恰好與實(shí)際值相等;但如果兩組測(cè)試人員之間不獨(dú)立且有正相關(guān)性,則檢測(cè)出的共同錯(cuò)誤數(shù)k大于4,比如k=4。此時(shí)根據(jù)公式(1)的估算值為40,與實(shí)際只有較大偏差。可以看出,獨(dú)立性越差,偏差就越大。
經(jīng)過對(duì)軟件測(cè)試行業(yè)現(xiàn)狀的分析和以往軟件測(cè)試的經(jīng)驗(yàn),我們發(fā)現(xiàn)場(chǎng)景1中出現(xiàn)的測(cè)試人員的相關(guān)性問題會(huì)在很大程度上左右最終的估算結(jié)果,從而導(dǎo)致了較大的估算誤差。人員相關(guān)因素與人員的背景密切相關(guān)。例如,長(zhǎng)時(shí)間共事的兩組測(cè)試人員,他們?cè)诩m錯(cuò)認(rèn)知方面勢(shì)必具有相似之處,這將在一定程度上破壞Hyman模型中的假設(shè),使估算值向低偏離真實(shí)值。
從場(chǎng)景1的結(jié)果也進(jìn)一步看到,當(dāng)A組和B組人員之間的相關(guān)性越小時(shí),越能提高估算結(jié)果的精確性。然而,由于兩組測(cè)試人員得到的共同測(cè)試錯(cuò)誤的數(shù)量 已經(jīng)是一個(gè)定數(shù)且不能改變,因此,我們需要找出一種策略去彌補(bǔ)這種不足?;谏鲜隹紤],本文提出了p值度量法(用p值來懲罰相關(guān)程度)來改進(jìn)Hyman測(cè)試法。
2.2 改進(jìn)Hyman法(p-值修正法)
p值修正法以人員之間的相似程度等一些外在因素為度量依據(jù),能夠在一定程度上提升軟件錯(cuò)誤數(shù)量估計(jì)值的準(zhǔn)確度。決策人員可以根據(jù)測(cè)試人員之間的不同特性,來及時(shí)的更換p值(結(jié)合“專家意見法”[10]對(duì)人員相關(guān)因素的相關(guān)程度進(jìn)行打分)的大小,這將對(duì)最終估算結(jié)果的正確性起到巨大的幫助。
為了讓當(dāng)前軟件錯(cuò)誤數(shù)量的估算值更加接近錯(cuò)誤數(shù)量的真實(shí)值n,我們有必要重新確定一個(gè)估計(jì)值,它可以被如下定義
其中,1>p>0,觀察(4)式,可以看到p值其實(shí)就是一個(gè)在0—1的懲罰系數(shù),這個(gè)懲罰的思想便是p值修正法的核心思想,該思想旨在消除兩組人員不獨(dú)立造成的影響,在干擾和估值之間做一個(gè)平衡。使獲得的新估算值較好的接近軟件錯(cuò)誤數(shù)的真實(shí)值。其算法流程如圖1所示。
本文認(rèn)為,在實(shí)際軟件測(cè)試當(dāng)中,測(cè)試人員的先決條件(人員相關(guān)程度)能夠影響測(cè)試過程中測(cè)出的共同錯(cuò)誤數(shù)量。這些先決條件包括測(cè)試人員的學(xué)習(xí)經(jīng)歷和工作背景等情況,具體而言,對(duì)于衡量這個(gè)先決條件,主要通過幾個(gè)方面進(jìn)行:
第一,測(cè)試人員之間的相關(guān)性與測(cè)試人員之前所處的環(huán)境(地點(diǎn))有關(guān)。例如,兩組人員之中存在長(zhǎng)期共事的情況,因?yàn)樗麄儸F(xiàn)今共同工作,對(duì)某一些類型的錯(cuò)誤具有相同認(rèn)識(shí),使得測(cè)試結(jié)果中共同檢測(cè)出的錯(cuò)誤數(shù)量變多。再比如,兩組人員中存在畢業(yè)同一院校的,他們之前的學(xué)習(xí)氛圍相近,受到的同種技巧教育的影響偏深,也會(huì)提高對(duì)軟件中某幾類錯(cuò)誤具有共同認(rèn)識(shí)的可能性,從而也導(dǎo)致共同檢測(cè)錯(cuò)誤數(shù)量值變大。
第二,人員相關(guān)性施加于某項(xiàng)因素的時(shí)間相關(guān)。時(shí)間越長(zhǎng),相關(guān)性越大。
因此,我們立足于當(dāng)前軟件行業(yè)的發(fā)展現(xiàn)狀和趨勢(shì),并模擬“專家意見這一過程”,總結(jié)出測(cè)試人員相關(guān)性的主要類別,分別是:
(a)測(cè)試人員共事年限長(zhǎng)短。
(b)測(cè)試人員工作年限相似度。
(c)測(cè)試人員畢業(yè)院校相似度。
(d)測(cè)試人員學(xué)歷相似度。
采用低、中、高作為相關(guān)程度的衡量標(biāo)準(zhǔn),并且經(jīng)由“專家意見法”,針對(duì)人員相關(guān)因素的相關(guān)程度進(jìn)行打分,其取值如表1所示。
具體地,針對(duì)相關(guān)因素類型Qi而言,分為情況si(如表2所示),并且每種情況si用相應(yīng)的相關(guān)程度值pi來權(quán)衡。表中的各類情況si隨值i的增加,其相關(guān)程度也在增加。
本模型規(guī)定,在評(píng)價(jià)測(cè)試人員相關(guān)性時(shí),如果組內(nèi)存在相關(guān)因素類型Qi的復(fù)合情況時(shí),只保留相關(guān)程度值最大的一種,這稱為復(fù)合情況保留策略。相應(yīng)地,pi為si的對(duì)應(yīng)值。
在上述討論的基礎(chǔ)上,我們將p值修正法應(yīng)用于場(chǎng)景1描述的問題中。當(dāng)M公司A、B兩個(gè)小組各自測(cè)得的錯(cuò)誤數(shù)和共同測(cè)得的錯(cuò)誤數(shù)分別為20、20和10時(shí),根據(jù)Hyman估算法得到了總錯(cuò)誤數(shù)的估算值40,與真實(shí)值100有較大的偏差。
但通過對(duì)測(cè)試人員內(nèi)部的評(píng)價(jià),可獲得A、B兩個(gè)小組人員的信息。其中相關(guān)類型Q1出現(xiàn)了情況s1、s2、s3(兩組人員中共事年限最長(zhǎng)為5年,根據(jù)復(fù)合情況的保留策略,取最相關(guān)情況s3,后同);相關(guān)類型為Q2出現(xiàn)了情況s1、s2(兩組人員中從業(yè)年限差最小為1.5年,取最相關(guān)情況s2);相關(guān)類型為Q3出現(xiàn)了情況s1、s2(兩組人員中無共同院校畢業(yè),但有相似院校畢業(yè)情況,取最相關(guān)情況s2),相關(guān)類型為Q4出現(xiàn)了情況s2、s3(兩組人員中有同為碩士畢業(yè)的情況,即學(xué)歷差為0,取最相關(guān)情況s3)。那么,{Q1,Q2,Q3,Q4}分別保留了情況{s3,s2,s2,s3},對(duì)應(yīng)了相關(guān)程度值{p3,p2,p2,p3}={0.8,0.4,0.4,0.8},最終的p值為
p=W1×p3+W2×p2+W3×p2+W4×p3=0.6
上述結(jié)果帶入(4)式,得到p值修正法的估算結(jié)果為2.5=100。可以看出,這個(gè)結(jié)果比較接近真實(shí)的軟件錯(cuò)誤數(shù)估算結(jié)果。
通過表1中的p值懲罰系數(shù),能夠?qū)yman估算法的偏離值復(fù)原,得到的數(shù)據(jù)也就更加可靠。另一方面,通過“專家意見法”,不同公司可以根據(jù)自己的實(shí)際情況,調(diào)整表2的賦值,使得p值更加符合公司和企業(yè)的狀況,降低因錯(cuò)誤數(shù)估算偏離造成的軟件工程風(fēng)險(xiǎn)。
3 結(jié)論(Conclusion)
軟件測(cè)試是軟件工程中至關(guān)重要的環(huán)節(jié),而軟件錯(cuò)誤數(shù)的估算是實(shí)施有效的軟件測(cè)試的前提。估值過高或估值過低都會(huì)影響軟件工程的工期,造成資源投入的不足或浪費(fèi)。我們提出的p值修正法是對(duì)傳統(tǒng)的Hyman估算法的改進(jìn),克服其因人員的相關(guān)性而造成的估值偏差。該方法通過簡(jiǎn)單的p值修正即可使估算值與真實(shí)值之間的偏差大幅下降,并具有簡(jiǎn)單易懂、實(shí)施方便和高效快捷等優(yōu)點(diǎn),為降低軟件工程風(fēng)險(xiǎn)、保證軟件工程順利實(shí)施提供了良好的估算機(jī)制。
參考文獻(xiàn)(References)
[1] 聶蕓.基于CMMI的軟件質(zhì)量保證過程管理[J].軟件工程師,2015,18(8):10-11.
[2] Baker E R,F(xiàn)isher M J.Software quality program organization[M].Prentice Hall PTR,1998:115-145.
[3] 趙麗莉,金學(xué)軍.軟件性能測(cè)試面面觀[J].軟件工程師,2006(11):40-42.
[4] 陳明.軟件工程學(xué)教程[M].北京:科學(xué)出版社,2002.
[5] IEEE Standard Glossary,IEEE Std 729-1983.
[6] 李世慧,惠韶文.計(jì)算機(jī)軟件中錯(cuò)誤數(shù)量的一種估算方法[J].佛山科學(xué)技術(shù)學(xué)院學(xué)報(bào):社會(huì)科學(xué)版,1995,13(2):52-53.
[7] 苗揚(yáng).軟件可靠性測(cè)試與評(píng)估方法的改進(jìn)[D].上海交通大學(xué),2010.
[8] 劉繼華.基于風(fēng)險(xiǎn)的Web應(yīng)用軟件測(cè)試方案研究與應(yīng)用[D].太原理工大學(xué),2006.
[9] 馬海云,黨建武.基于蒙特卡羅的軟件測(cè)試技術(shù)的研究與實(shí)現(xiàn)[J].鄭州大學(xué)學(xué)報(bào)(工學(xué)版),2007,28(4):55-58.
[10] 戴怡,等.面向數(shù)控系統(tǒng)可靠性評(píng)估的先驗(yàn)信息融合方法—專家打分法[J].天津職業(yè)技術(shù)師范大學(xué)學(xué)報(bào),2012,22(3):6-8.
作者簡(jiǎn)介:
黃焯恒(1994-),男,碩士生.研究領(lǐng)域:軟件工程.
孫鑒鋒(1991-),男,博士生.研究領(lǐng)域:軟件工程,數(shù)據(jù)挖掘.
王建新(1972-),男,博士,教授.研究領(lǐng)域:軟件測(cè)試,軟件工程,數(shù)據(jù)挖掘.