徐 彬,李 華,張 榮,侯慶慶
(中國電子科技集團(tuán)公司第 58 研究所,江蘇 無錫 214072)
探索式軟件測試融于傳統(tǒng)測試模型的研究
徐 彬,李 華,張 榮,侯慶慶
(中國電子科技集團(tuán)公司第 58 研究所,江蘇 無錫 214072)
自軟件測試成為單獨的研究領(lǐng)域起,測試模型開始從無到有,且一直不斷地優(yōu)化?,F(xiàn)在廣泛使用的傳統(tǒng)測試模型通過多年的實踐檢驗,基本能夠滿足各類測試的需求。探索式軟件測試是一種新的測試?yán)砟?,它體現(xiàn)為一種靈活、自由的方式,與傳統(tǒng)測試有很大的不同。將探索式軟件測試融于傳統(tǒng)軟件測試模型中,既是對傳統(tǒng)模型的創(chuàng)新,又是更好地指導(dǎo)測試的需要。
軟件測試;探索式測試;模型
軟件測試模型即在測試實踐基礎(chǔ)上,有機結(jié)合相應(yīng)的軟件開發(fā)活動所總結(jié)和抽象出的一系列測試活動規(guī)律[4]。自 1972 年軟件測試成為一個獨立的研究方向開始,對軟件測試模型的研究就一直沒有停止過,本文旨在提供一套能夠與開發(fā)各階段緊密協(xié)作且有效指導(dǎo)測試的模型。
探索式軟件測試方法為軟件測試的前沿技術(shù),它擅長于在短時間內(nèi)發(fā)現(xiàn)軟件的一些重要問題或提前沒有進(jìn)行測試設(shè)計的情況。探索式軟件測試融于傳統(tǒng)測試模型中,二者優(yōu)勢結(jié)合,將有效提高軟件的質(zhì)量。
2.1 定義
探索式軟件測試沒有明確的定義,從多種方法中提取一個相同點就是了解被測軟件、設(shè)計測試用例、執(zhí)行測試三部分同時進(jìn)行[3]。它完全拋開了傳統(tǒng)測試中的流程和前期準(zhǔn)備工作,測試人員在測試時可以天馬行空,利用被測軟件提供的信息自由發(fā)揮。但探索式測試亂中有序,且對測試人員有很高的要求。執(zhí)行探索式測試的人員需要豐富的經(jīng)驗,對測試對象有足夠的判斷力,哪些功能區(qū)域有可能存在問題,哪些關(guān)聯(lián)的設(shè)置有可能導(dǎo)致失敗。在測試某個特性或某個范圍中的特性時,思路必須清晰,明確使用的測試方法。
探索式測試并不是完全沒有測試文檔,與傳統(tǒng)測試在測試計劃里先預(yù)先編好測試文檔不同,它的測試結(jié)果、測試用例和測試文檔都會在運行測試時創(chuàng)建,這也是跟蹤問題所需要的,最后給出測試報告。
2.2 方法簡介
探索式測試不是具體測試技術(shù),而是關(guān)注如何去測試[6]。根據(jù)關(guān)注區(qū)域來分,分為局部探索式測試法和全局探索式測試法。
局部探索式測試主要從五個方面考慮:輸入、狀態(tài)、代碼路徑、用戶數(shù)據(jù)、執(zhí)行環(huán)境[5],如圖1 所示 ,這五部分在傳統(tǒng)測試中也是必須要關(guān)注的信息。
圖1 局部探索式測試
全局探索式測試又稱為漫游測試,它將測試人員比作游客,被測軟件比作旅游地。旅游地可被劃分為各種區(qū)域,例如商業(yè)區(qū)、娛樂區(qū)等。同樣的,被測軟件也劃分為多個重疊的“區(qū)域”[5],如圖2 所示。對于軟件測試人員來說,這種分割只是從邏輯上劃分了被測程序的特性,測試人員探索被測程序的運行路徑,根據(jù)不同的測試意圖按順序執(zhí)行這些特性。
圖2 全局探索式測試
2.3 優(yōu)勢分析
局部探索式測試輔助測試人員在測試過程中即時做出決定,全局探索式測試幫助測試人員思考整體測試計劃和測試策略。全局與局部結(jié)合,即覆蓋了面,又關(guān)注了點[1,2]。探索式測試較傳統(tǒng)測試最大的優(yōu)點是靈活、高效。傳統(tǒng)測試是依據(jù)測試計劃進(jìn)行,自由發(fā)揮程度較小,探索式測試計劃與測試同時進(jìn)行,需要時及時調(diào)整思路或方法,在發(fā)現(xiàn)重大問題方面表現(xiàn)極佳。
傳統(tǒng)軟件測試模型中V模型和W模型最具有代表性,其中 V 模型為“線性”執(zhí)行,需要在編碼完全結(jié)束后才可進(jìn)行測試,無法體現(xiàn)“盡早地和不斷地進(jìn)行軟件測試”的原則。它僅僅把測試過程作為需求分析、系統(tǒng)設(shè)計及編碼之后的一個階段,而對需求分析和系統(tǒng)設(shè)計的驗證放到后期,不能及時發(fā)現(xiàn)問題,V 模型的缺點導(dǎo)致其不如W模型應(yīng)用廣泛。
W模型是V模型的發(fā)展。如圖3所示,它的一個特點是強調(diào)測試是伴隨著整個軟件開發(fā)周期,而且不僅程序代碼需要測試,需求、功能說明、設(shè)計思路也需要測試。另外一個特點是提前做好測試設(shè)計,寫好測試用例,每一階段的測試都是依據(jù)測試設(shè)計和用例進(jìn)行的。
圖3 傳統(tǒng)W型軟件測試模型
傳統(tǒng)測試工作有明顯的階段性,后期測試執(zhí)行以前期測試設(shè)計為基礎(chǔ)。測試思路、使用方法的確定絕大部分在測試計劃階段完成,執(zhí)行測試時只需參照測試計劃完成即可。這種模型存在一個弊端,當(dāng)前期測試設(shè)計考慮不夠全面時,有些路徑?jīng)]有涉及到,若后期只是單純地按計劃執(zhí)行,會導(dǎo)致部分特性沒有覆蓋到,風(fēng)險就會隱藏在被測軟件中。探索式測試靈活,沒有階段性限制,可邊測試邊調(diào)整,恰好彌補了傳統(tǒng)測試模型中的缺陷。
將探索式測試融于傳統(tǒng)測試模型中,以W模型為例,對測試部分單獨分析,如圖4 所示。
該模型著眼于實際測試項目,將結(jié)構(gòu)化的思想與自由的探索結(jié)合,在保證了測試模型完整的情況下,提高特性測試的覆蓋率,存在如下幾個特點:
圖4 探索式測試融于傳統(tǒng)測試W模型(測試部分)
(1)完全保留 W 模型的特點,軟件測試與開發(fā)并行線性執(zhí)行,完全符合及早介入、及早測試的原則。
(2)每個階段測試執(zhí)行完成,進(jìn)行探索式測試。跳出前期測試設(shè)計思路,以更加靈活的方式增加測試點,來補充前期測試的疏漏,提高了測試覆蓋率。
(3) 探索式測試可以作為回歸測試。傳統(tǒng)回歸測試,在單個測試階段內(nèi),使用同一個測試計劃來重復(fù)測試,這種同一個思路的重復(fù)測試容易使某類問題產(chǎn)生“抗測試”性,不易被發(fā)現(xiàn)。更換測試思路,沒有前期的計劃,無疑是探索式測試最擅長的。
(4)依據(jù)更改及時響應(yīng)、快速測試。當(dāng)在執(zhí)行測試的過程中,需求或是設(shè)計突然發(fā)生更改,在沒有任何計劃的前提下,探索式測試能夠最有效地應(yīng)對這種突發(fā)情況。
(5)W 模型齊全的文檔,為探索式測試提供了文檔基礎(chǔ)。在測試過程中,直接將測試記錄和結(jié)果添加到已有的文檔中,無需重新編寫新文檔。
5.1 首輪測試結(jié)果對比
將傳統(tǒng)測試模型和增加探索式的測試模型分別應(yīng)用于 JSxxx 板級驗證系統(tǒng),該系統(tǒng)是基于 PowerPC內(nèi)核的處理器,具有高速的 AD、DA 數(shù)據(jù)處理模塊、通用外設(shè)接口、屏幕設(shè)置與顯示三大部分。截取確認(rèn)測試階段的數(shù)據(jù)進(jìn)行分析,測試人員對于測試用例數(shù)量、發(fā)現(xiàn)問題數(shù)量以及所花費的時間進(jìn)行整理。將兩個模型的測試結(jié)果進(jìn)行對比,其中所有測試結(jié)果均為首輪測試時的數(shù)據(jù),如表1所示。
表1 基于兩種測試模型首輪測試結(jié)果對比
從測試結(jié)果中可以看出,雖然探索式測試融于傳統(tǒng)測試模型,實際測試時間比傳統(tǒng)模型時間增加 10%~15%,但是發(fā)現(xiàn)的問題數(shù)量遠(yuǎn)遠(yuǎn)高于傳統(tǒng)模型,在軟件設(shè)計路徑比較復(fù)雜的情況下,探索式測試融于傳統(tǒng)測試模型表現(xiàn)尤其出眾。從上述測試結(jié)果可以看出,屏幕設(shè)置與顯示部分發(fā)現(xiàn)問題數(shù)量竟比傳統(tǒng)模型多出66.7%,正是由于屏幕部分操作靈活,才能夠更好地體現(xiàn)探索式測試的優(yōu)勢。
5.2 回歸測試結(jié)果對比
將兩種模型分別應(yīng)用于 SJAxxxx 項目中的 CAN協(xié)議的回歸測試,首輪測試發(fā)現(xiàn)的問題經(jīng)過回歸測試再次驗證,并測試修改問題的過程中是否引入新問題。其中,所有測試結(jié)果為首次回歸測試時的數(shù)據(jù),如表2所示。
表2 基于兩種測試模型回歸測試結(jié)果對比
加入探索式的測試模型,不但正確地驗證了前一輪發(fā)現(xiàn)的問題,更重要的是發(fā)現(xiàn)了 2 個新問題,這兩個新問題是在前一輪修改程序后引入的。從回歸測試的方式可知,傳統(tǒng)模型在做回歸測試時,將發(fā)現(xiàn)的問題按照前一輪的思路重新測試,它的關(guān)注點是問題本身是否解決。探索式測試進(jìn)行回歸時分兩步,第一步是利用前一輪測試思路,測試問題是否解決,確保已發(fā)現(xiàn)的問題得到驗證;第二步,擴大測試范圍,分析出與問題相關(guān)的邏輯功能,增加相應(yīng)測試點,測試已修改的程序相關(guān)功能是否因修改而出錯。
從上述兩個實踐中不難發(fā)現(xiàn),不論是首輪測試還是回歸測試,探索式測試因其思路的靈活而效果顯著,若是將其應(yīng)用于“中規(guī)中矩”的傳統(tǒng)測試模型中,必將大大提升測試效率和測試質(zhì)量。
探索式軟件測試是一種思維方式,融于傳統(tǒng)測試模型,為傳統(tǒng)測試注入新的元素。由于探索式軟件測試沒有固定模式,靈活,形式不一,對測試人員來說是一個很大的挑戰(zhàn),需要測試人員不斷提高自身素質(zhì),積累經(jīng)驗,將測試設(shè)計、測試執(zhí)行和測試結(jié)果分析作為相互支持的活動,在整個項目中并行地執(zhí)行。
[1]Juha Itkonen,Kristian Rautiainen.Exploratory testing:A multiple case study[C].Noosa Heads,Queensland,Australia: Proceedings of the 4thInternationalSymposium on Empirical Software Engineering(ISESE 2005).IEEE.2005:84-93.
[2]Juha Itkonen,Mike V M?ntyl?,Casper Lassenius.How do testers do it?An exploratory study on manual testing practices[C].Lake Buena Vista,Florida,USA:Proceedings ofthe Third InternationalSymposium on EmpiricalSoftware Engineering and Measurement(ESEM 2009),IEEE.2009: 494-497.
[3]James Bach.Exploratory testing explained[EB/OL].2003.4 V.1.3.http://www.satisfice.com/articles/et-article.pdf
[4]余久久,張佑生.軟件測試改進(jìn)模型研究進(jìn)展[J].計算機應(yīng)用與軟件,2012,(29)11:201-207.
[5]James A Whittaker.探索式軟件測試[M].方敏,張勝,鐘頌東,郭艷春,譯.北京:清華大學(xué)出版社,2010:23-72.
[6]李軍鋒,欒靜.探索性軟件測試解析[J].計算機與數(shù)字工程,2011,(39)8:39-42.
Research on Integration of Traditional Test Model and Exploratory Test
XU Bin,LIHua,ZHANG Rong,HOU Qingqing
(China Electronics Technology Group Corporation No.58 Research Institute,Wuxi 214072,China)
Eversince the software testing has become an independentresearch field,the software testmodelhas been evolving.The traditionaltestmodelhasbeen used formany yearsand isstillbasically capable.Exploratory software testing is a new testconceptshowing a flexible and free feature.Atpresent,the exploratory software testing is integrated into the traditionalsoftware testmodel,which is both an innovation and an attemptforbetter testresults.
software testing;exploratory testing;model
TN407
A
1681-1070 (2017)06-0016-03
徐 彬(1982—),女,山東文登人,碩士研究生,助理工程師,研究方向為軟件測試。
2017-2-24