【摘要】傳統(tǒng)的面向故障的軟件測(cè)試方法存在限制條件高精確程度與低誤報(bào)率無法兼得的瓶頸效果。而高誤報(bào)率直接導(dǎo)致軟件測(cè)試成本的增加和效率的低下。本文通過對(duì)探索性測(cè)試方法的研究中得出該方法的使用場(chǎng)合與特點(diǎn),從而希望能在有限的軟件測(cè)試成本內(nèi)找出與腳本測(cè)試相結(jié)合的最佳方法。利用探索性測(cè)試,能顯著提高軟件測(cè)試的效率。
【關(guān)鍵詞】軟件測(cè)試;探索性測(cè)試;測(cè)試方法;缺陷效率
隨著軟件測(cè)試技術(shù)的不斷發(fā)展,各種新穎的測(cè)試技術(shù)越來越受到軟件測(cè)試人員的關(guān)注。探索性軟件測(cè)試是其中一種比較前沿的理論,尤其適用于那些要求在短時(shí)間內(nèi)發(fā)現(xiàn)被測(cè)軟件一些重要缺陷或事先沒有能夠進(jìn)行詳細(xì)測(cè)試設(shè)計(jì)的情況。探索性軟件測(cè)試強(qiáng)大的缺陷發(fā)現(xiàn)效率是其得到眾多青睞的重要原因之一。如何選擇合適的測(cè)試方法?我們針對(duì)三種測(cè)試方法(腳本測(cè)試,探索性測(cè)試和自動(dòng)化測(cè)試)區(qū)別以及他們之間的合作關(guān)系展開一定的討論。
1.調(diào)研目的
1.1 軟件測(cè)試現(xiàn)狀和問題
軟件測(cè)試是軟件開發(fā)生命周期中不可或缺的用來保證軟件質(zhì)量、提高軟件可靠性的重要階段?;趥鹘y(tǒng)理論的軟件測(cè)試,理論上都要求盡可能早地引入軟件測(cè)試過程。
而在實(shí)際的測(cè)試過程中,我們所遇到的問題很多:首當(dāng)其沖的就是長期處于瀑布模型下的軟件工程,將測(cè)試工作安排并推遲到了開發(fā)周期結(jié)束階段進(jìn)行,導(dǎo)致大量的測(cè)試工作,包括功能測(cè)試、集成測(cè)試以及性能測(cè)試都堆積到了末期進(jìn)行。其次,沒有有效地利用自動(dòng)化測(cè)試這一先進(jìn)技術(shù)也是目前軟件質(zhì)量備受質(zhì)疑的關(guān)鍵因素。雖然很多公司都非常推崇軟件測(cè)試自動(dòng)化這一理念??烧嬲玫綄?shí)處能夠事半功倍的畢竟不是很多。第三,需求變更得頻繁性也是一個(gè)讓項(xiàng)目經(jīng)理頭大的問題??蛻粢桓脑俑牡那闆r,絕對(duì)不是少數(shù)。再加上項(xiàng)目進(jìn)度、客戶壓力等其他其他因素,測(cè)試工作的時(shí)間和內(nèi)容被一壓再壓地縮減。這樣惡性循環(huán),誰也不敢保證軟件質(zhì)量。
如何在減少重復(fù)性的測(cè)試工作的同時(shí),發(fā)現(xiàn)盡可能多的軟件缺陷,并利用有效的自動(dòng)化測(cè)試降低成本,同時(shí)還能夠及時(shí)高效的覆蓋到這些變更的需求。這些正是想要幫助大家解決的問題。
1.2 探索性測(cè)試
探索性軟件測(cè)試是不同于傳統(tǒng)方法的測(cè)試技術(shù),在某些情況下,它比腳本測(cè)試更高效。尤其適用于那些要求短時(shí)間內(nèi),或者在頻繁的需求變更下發(fā)現(xiàn)被測(cè)試軟件重要缺陷的情況。其實(shí)每個(gè)測(cè)試工程師都在不知不覺地使用探索性測(cè)試方法。其定義由James A.Whittaker提出:測(cè)試人員在測(cè)試應(yīng)用程序中可以天馬行空的想怎么測(cè)試就怎么測(cè)試,利用程序所提供的信息自由發(fā)揮,沒有限制,不受任何約束的探索程序各個(gè)功能,借由這一方法來發(fā)現(xiàn)測(cè)試用例以外的軟件錯(cuò)誤。
探索性測(cè)試,就是對(duì)手工測(cè)試用例加上自動(dòng)化測(cè)試用例的一種補(bǔ)充。如果說手工測(cè)試和自動(dòng)化測(cè)試在整個(gè)測(cè)試過程中占了70%,那我們所希望的就是通過探索性測(cè)試,能夠?qū)⑽覀兯雎曰蛘哌z漏掉的30%覆蓋到大部分。100%的覆蓋測(cè)試是不可能的。我們能做的就是通過各種測(cè)試途徑、測(cè)試方式,包括單元測(cè)試代碼,代碼覆蓋率工具等,盡可能的提高我們測(cè)試的覆蓋范圍。
2.三種測(cè)試方法的比較
2.1 探索性測(cè)試與腳本測(cè)試
傳統(tǒng)手工測(cè)試通常是完全按照預(yù)先設(shè)計(jì)好的測(cè)試步驟一步一步人工驗(yàn)證所有想要驗(yàn)證的功能。但是人非萬人,總有缺漏。因此對(duì)于探索性測(cè)試的重要性是要予以肯定的。國內(nèi)外學(xué)者對(duì)探索性測(cè)試和腳本測(cè)試方法的缺陷發(fā)現(xiàn)率和測(cè)試成本進(jìn)行比較。
以上實(shí)驗(yàn)數(shù)據(jù)是我們國內(nèi)的學(xué)者通過很多次對(duì)比試驗(yàn)得出的結(jié)果。接下來,我們?cè)賮砜匆唤M國外研究學(xué)者們整理的數(shù)據(jù)報(bào)告。
我們可以觀察到以下:首先在傳統(tǒng)測(cè)試方法中,結(jié)合使用探索性測(cè)試方法,缺陷的檢出率明顯高于單一的使用傳統(tǒng)測(cè)試方法;此外探索性測(cè)試能發(fā)現(xiàn)更多測(cè)試設(shè)計(jì)以外的缺陷;最后進(jìn)行探索性測(cè)試時(shí),測(cè)試人員的經(jīng)驗(yàn)、態(tài)度、思維方法等方面都會(huì)影響測(cè)試的效果。[1]外國專家也得出“Defect Detection Effectiveness”(缺陷發(fā)現(xiàn)有效率)類似的結(jié)論。[2]
1)Effectiveness:There is no difference between ET and TCT.(有效率:腳本測(cè)試和探索性測(cè)試的缺陷有效率沒有區(qū)別。)
2)Efficiency:ET is more efficient as it requires less design effort.(效率:探索性測(cè)試能高效,因?yàn)樾枰俚脑O(shè)計(jì)工作時(shí)間。)
3)Both ET and TCT have problems,but the problems are different;in TCT,it is the quality of the test cases,and in ET,it is managing the testing activities and reporting.(腳本測(cè)試和探索性測(cè)試都存在問題,但是他們的問題不同。腳本測(cè)試中,對(duì)測(cè)試用例的質(zhì)量是需要考量的。同時(shí)在探索性測(cè)試中對(duì)測(cè)試活動(dòng)和測(cè)試報(bào)告需要進(jìn)行一定的管理。)
2.2 探索性測(cè)試與自動(dòng)化測(cè)試
自動(dòng)化測(cè)試就是把手工測(cè)試的每個(gè)步驟用自動(dòng)化測(cè)試工具來實(shí)現(xiàn)。好處是不用人來做了,缺點(diǎn)就是機(jī)器在執(zhí)行測(cè)試過程中并不會(huì)變通。至于什么時(shí)候開始自動(dòng)化測(cè)試,什么時(shí)候開始探索性測(cè)試?先自動(dòng)化后探索性,還是反之,就要看項(xiàng)目產(chǎn)品的具體情況了。既然兩種方法都有了,為什么我們不也來比較一下他們的效率和優(yōu)勢(shì)呢?首先我們比較手工測(cè)試和自動(dòng)化測(cè)試的成本比較。這里有幾個(gè)數(shù)據(jù)我們可以一起看一下:
我們可以看到雖然自動(dòng)化測(cè)試大大降低測(cè)試工作的成本,但不能完全取代手工測(cè)試的工作。完全的自動(dòng)化測(cè)試只是一個(gè)理論上的目標(biāo),實(shí)際上想要達(dá)到100%的自動(dòng)化測(cè)試是不可能實(shí)現(xiàn)的。從數(shù)據(jù)來看,一個(gè)40-60%的利用自動(dòng)化的程度已經(jīng)是非常好的了。
3.三種測(cè)試方法的結(jié)合
各種數(shù)據(jù)可以告訴我們,腳本測(cè)試和探索性測(cè)試各有所長、相輔相成,不可能互相取代對(duì)方的作用。我們需要做是找到腳本測(cè)試和探索性測(cè)試的最佳結(jié)合點(diǎn),實(shí)現(xiàn)優(yōu)勢(shì)互補(bǔ),更好的完成測(cè)試任務(wù)。理論上,腳本測(cè)試應(yīng)該可以進(jìn)行探索性測(cè)試所能做到的所有測(cè)試工作,但是腳本測(cè)試不可能涵蓋所有的測(cè)試,原因很簡單:這些已經(jīng)實(shí)現(xiàn)制定好的測(cè)試用例或者測(cè)試腳本,會(huì)規(guī)定了明確死板的輸入和輸出。如果想要設(shè)計(jì)好所有可能性的用例,又會(huì)有太多重復(fù)性的工作和龐大的文檔工作放在面前。如果想發(fā)現(xiàn)和業(yè)務(wù)邏輯有關(guān)的系統(tǒng)缺陷,那么測(cè)試人員所實(shí)施的手工測(cè)試才是理想的選擇。因?yàn)樗浞终{(diào)動(dòng)了測(cè)試人員的聰明才智,能夠設(shè)計(jì)出符合真實(shí)情況的場(chǎng)景和案例。如果再用自動(dòng)化測(cè)試代替這些手工測(cè)試,那么我們即能提高覆蓋率又能降低成本??紤]采用自動(dòng)化測(cè)試,盡可能的增加多的適用的測(cè)試用例期望通過有線的測(cè)試找出盡可能多的軟件缺陷。我們可以使用不同的等價(jià)劃分法、邊界值分析化學(xué),以及白盒測(cè)試?yán)锏某绦蚩刂屏鞣治?、?shù)據(jù)流分析、邏輯覆蓋、域覆蓋、符號(hào)覆蓋等其他方式來增加自動(dòng)化測(cè)試的覆蓋率。
在真實(shí)情況中,在手工測(cè)試的過程中已經(jīng)或多或少使用到探索性測(cè)試了。將探索性測(cè)試執(zhí)行過的步驟,加入到腳本測(cè)試用例中,或者加入到自動(dòng)化測(cè)試中。在下一輪的測(cè)試中通過各種方式覆蓋這個(gè)測(cè)試,同時(shí)測(cè)試人員騰出手來做其他的探索性測(cè)試,這樣循環(huán)往復(fù),才能真正利用好探索性測(cè)試這個(gè)方法。
4.結(jié)論
任何一種偏向性的軟件測(cè)試方法,都不能滿足當(dāng)今對(duì)軟件測(cè)試質(zhì)量越來越高的用戶要求。利用探索性測(cè)試能顯著提高軟件測(cè)試的效率。探索性軟件是對(duì)傳統(tǒng)測(cè)試方法的補(bǔ)充,它只在特定的環(huán)境和要求下使用才能達(dá)到最好的效果。這是對(duì)測(cè)試人員根據(jù)現(xiàn)實(shí)情況進(jìn)行的一種主動(dòng)測(cè)試,需要測(cè)試人員具備更好的專業(yè)素質(zhì)。需要在有限的時(shí)間中選擇并做出正確的事情,需要有明確的戰(zhàn)略和方向但是有必須預(yù)留一定的空間和時(shí)間讓每個(gè)測(cè)試人員的大腦可以充分運(yùn)作起來,在測(cè)試的過程中隨機(jī)應(yīng)變。探索性測(cè)試鼓勵(lì)著測(cè)試人員邊測(cè)試邊計(jì)劃,運(yùn)用測(cè)試中收集到的信息,影響自己正在進(jìn)行測(cè)試的實(shí)際方式。測(cè)試人員在執(zhí)行腳本測(cè)試的同時(shí),將探索性測(cè)試的信息添加到腳本測(cè)試的腳本中,以保證下次不遺漏。盡可能的加到自動(dòng)化測(cè)試用例中,加快測(cè)試速度,然后我們就會(huì)有更多時(shí)間執(zhí)行探索性測(cè)試發(fā)現(xiàn)更多的問題。只有正確的使用腳本測(cè)試,加上合理的自動(dòng)化測(cè)試,外加利用探索性測(cè)試,才能加快測(cè)試的速度,有效的進(jìn)行測(cè)試,并提高測(cè)試覆蓋率。
在加深對(duì)探索性測(cè)試的理解過程中,將我們掌握的各種測(cè)試技術(shù)和方法用最佳的方法和比例結(jié)合在一起,在提高軟件質(zhì)量上發(fā)揮超出預(yù)期的結(jié)果。在國內(nèi)日趨成熟的軟件行業(yè),只有通過提高軟件的質(zhì)量,同時(shí)通過各種方式降低成本,才能提高在本行業(yè)中的核心競(jìng)爭(zhēng)力。
參考文獻(xiàn)
[1]朱昭俊,蘇賽.探索性測(cè)試方法分析[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2012(19):73-74.
[2]ITKONEN J,M?NTYL? M V 2.Are Test Cases Needed?Replicated Comparison Between Exploratory and Test-case-based Software Testing[J].Empirical Software Engineering,2013.
[3]史永莉,陳元琰,羅曉曙等.軟件自動(dòng)化測(cè)試方案的效益分析[J].微計(jì)算機(jī)信息,2010(6): 218-219+228.