劉沅斌
(中國農(nóng)業(yè)銀行,北京100161)
基于共性分析的軟件測試用例復(fù)用技術(shù)研究
劉沅斌
(中國農(nóng)業(yè)銀行,北京100161)
為減少軟件測試過程的重復(fù)勞動(dòng),提高測試的效率和質(zhì)量,提出一種基于共性分析的測試用例復(fù)用方法。通過對已有系統(tǒng)進(jìn)行共性分析、提取、細(xì)分,設(shè)計(jì)可復(fù)用的測試用例,創(chuàng)建和維護(hù)測試用例庫,在新系統(tǒng)測試時(shí),從測試用例庫中選取可復(fù)用測試用例,解決了測試用例設(shè)計(jì)完全依靠經(jīng)驗(yàn)的局限性,提高了測試的效率和質(zhì)量。在某大型商業(yè)銀行的內(nèi)部管理系統(tǒng)進(jìn)行的實(shí)踐驗(yàn)證了該方法的有效性。
共性分析;測試用例;復(fù)用;效率;質(zhì)量
隨著軟件需求的激增,軟件規(guī)模和復(fù)雜度的不斷增大,傳統(tǒng)的軟件開發(fā)模式面臨新的挑戰(zhàn),軟件復(fù)用的方法被提出來應(yīng)對這個(gè)問題。測試用例設(shè)計(jì)作為軟件測試的重要步驟,測試用例的優(yōu)良與否關(guān)系到軟件測試的成敗。但測試用例的設(shè)計(jì)與測試人員的個(gè)人經(jīng)驗(yàn)密切相關(guān),不同的測試人員設(shè)計(jì)用例的角度和顆粒度以及描述方式均存在較大差異。借鑒軟件復(fù)用的方法,提出軟件測試用例復(fù)用的思想,以期應(yīng)對軟件測試規(guī)模不斷增大的挑戰(zhàn),達(dá)到規(guī)范測試用例編寫,提升測試效率及質(zhì)量的目的。通過測試用例的復(fù)用,可以達(dá)到如下目的。
(1)通過復(fù)用,避免大量重復(fù)勞動(dòng),提高工作效率,節(jié)約成本。根據(jù)統(tǒng)計(jì),在一個(gè)典型的編程項(xiàng)目中,軟件測試或系統(tǒng)測試大約占用50%的項(xiàng)目時(shí)間和超過50%的總成本。而測試用例的設(shè)計(jì)和維護(hù)占到整個(gè)軟件測試的約35%~50%的時(shí)間和成本。在測試用例設(shè)計(jì)過程中,復(fù)用同類系統(tǒng)相同功能的測試用例,可提高工作效率,降低成本。
(2)通過復(fù)用,提高測試工作質(zhì)量。通過提取大量已有系統(tǒng)的共性,并進(jìn)行分析,設(shè)計(jì)開發(fā)可復(fù)用的測試用例,在運(yùn)用到新系統(tǒng)的過程中,結(jié)合系統(tǒng)的實(shí)際特點(diǎn)進(jìn)行適當(dāng)改造,同時(shí)對可復(fù)用的用例持續(xù)優(yōu)化,從而提高測試工作的質(zhì)量。
(3)通過復(fù)用,不斷優(yōu)化測試用例庫,促進(jìn)測試和需求設(shè)計(jì)。測試用例是指導(dǎo)測試執(zhí)行的基礎(chǔ)與依據(jù),通過復(fù)用,一是可將復(fù)用成果作為針對測試人員的培訓(xùn)資料。二是在項(xiàng)目的需求階段,可復(fù)用測試用例提供通用的標(biāo)準(zhǔn)和規(guī)范,可為需求編制提供依據(jù),達(dá)到反推促進(jìn)的作用。
軟件復(fù)用的概念早在1968年的NATO軟件工程會(huì)議上就被提出了。軟件復(fù)用經(jīng)過四十幾年的發(fā)展,各種復(fù)用方法和技術(shù)層出不窮,有基于構(gòu)件的軟件復(fù)用,有基于設(shè)計(jì)模式的軟件復(fù)用,還有面向?qū)ο蟮能浖?fù)用技術(shù)等等,基本上研究方向都是針對軟件開發(fā)的。而測試作為軟件生命周期的一個(gè)重要階段,針對軟件測試的復(fù)用研究相對滯后,而測試用例的復(fù)用研究更是少之又少,或僅限于項(xiàng)目的回歸測試,或僅限于某一個(gè)項(xiàng)目內(nèi)部的不同階段。因此有必要對測試用例復(fù)用技術(shù)進(jìn)行研究,探索一種獨(dú)立于項(xiàng)目的通用性較強(qiáng)的測試用例復(fù)用技術(shù)。
實(shí)現(xiàn)復(fù)用的基礎(chǔ)是可復(fù)用的內(nèi)容的挖掘,測試用例的依據(jù)是需求,因此開發(fā)可復(fù)用的測試用例的源頭是通過對同一應(yīng)用領(lǐng)域的不同的應(yīng)用系統(tǒng)的分析,找出其相似或者相近的功能需求。提取出這些共性需求后,再對其進(jìn)行細(xì)分,然后開發(fā)相應(yīng)的測試用例,使得在設(shè)計(jì)新系統(tǒng)的軟件測試用例時(shí),可復(fù)用這些共性功能的測試用例,僅需設(shè)計(jì)本系統(tǒng)特有功能的測試用例,并對可復(fù)用測試用例進(jìn)行補(bǔ)充優(yōu)化。開發(fā)可復(fù)用測試用例的步驟及方法如圖1所示。
圖1 軟件測試用例復(fù)用過程
2.1需求共性分析
共性(Geneta1chatactet)指不同的事物所共有的性質(zhì)。實(shí)現(xiàn)測試用例的復(fù)用,必須先提取可復(fù)用的內(nèi)容,即在不同的系統(tǒng)中存在的共性。提取共性,需對大量已有系統(tǒng)進(jìn)行分析。測試用例設(shè)計(jì)的依據(jù)是需求,因此,共性提取的來源,也是需求,通過對大量已有系統(tǒng)的需求的分析,提取出各類系統(tǒng)需求的共性要素(圖2),包含以下四類。
圖2 需求共性要素
(1)界面要素:界面要素是系統(tǒng)與用戶交互的外觀、部件等,包括復(fù)選框、單選按鈕、下拉列表、標(biāo)簽、文本編輯區(qū)、按鈕、菜單等。
(2)業(yè)務(wù)規(guī)則:業(yè)務(wù)規(guī)則是設(shè)置一個(gè)條件集合,滿足這個(gè)條件集合時(shí),觸發(fā)一個(gè)或者多個(gè)動(dòng)作。與業(yè)務(wù)相關(guān)的操作規(guī)范、管理章程、規(guī)章制度、行業(yè)標(biāo)準(zhǔn)等,都可以稱為業(yè)務(wù)規(guī)則。
(3)業(yè)務(wù)流程:ISO 9000對業(yè)務(wù)流程的定義是一組將輸入轉(zhuǎn)化為輸出的相互關(guān)聯(lián)或相互作用的活動(dòng)。具體而言,業(yè)務(wù)流程是為達(dá)到特定的價(jià)值目標(biāo)而由不同的人分別共同完成的一系列活動(dòng),活動(dòng)之間不僅有嚴(yán)格的先后順序限定,而且活動(dòng)的內(nèi)容、方式、責(zé)任等也都必須有明確的安排和界定,以使不同活動(dòng)在不同崗位角色之間進(jìn)行轉(zhuǎn)手交接成為可能。
(4)系統(tǒng)接口:接口就是系統(tǒng)內(nèi)部各子系統(tǒng)之間或者系統(tǒng)與外部關(guān)聯(lián)系統(tǒng)直接進(jìn)行交互的一種規(guī)范。接口時(shí)外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn),可以分為系統(tǒng)內(nèi)部接口、系統(tǒng)外部接口兩大類。
在提取出需求的四大類共性要素之后,采取自頂向下的分析方法進(jìn)行細(xì)分,直至細(xì)分后的每一項(xiàng)共性達(dá)到可操作的程度,細(xì)分的過程如圖3所示。
圖3 需求共性自頂向下細(xì)分
2.2可復(fù)用測試用例開發(fā)
在將提取的需求共性細(xì)分至可操作程度后,便可根據(jù)對可操作共性的輸入輸出進(jìn)行分析,生成測試用例。在所有輸入構(gòu)成的輸入集合中,測試人員根據(jù)輸入?yún)?shù)和環(huán)境變量的不同,將輸入劃分為不同的類別,每個(gè)類別不相交,不同的類別又可以劃分為若干選擇,每個(gè)選擇對應(yīng)相應(yīng)的輸入值,每個(gè)類別中的選擇也不相交,并且每個(gè)類別中的所有選擇的并集需要覆蓋整個(gè)輸入集合。以圖3中的界面要素—文本框?yàn)槔?,對其輸入類別劃分為長度驗(yàn)證、字符類型驗(yàn)證、必輸項(xiàng)驗(yàn)證等項(xiàng)作為測試內(nèi)容,針對不同的類別,劃分為若干選擇,進(jìn)行測試描述,可得到文本框測試用例表(表1)。
表1 文本框測試用例表
2.3可復(fù)用測試用例管理
可復(fù)用測試用例的管理需要由專人負(fù)責(zé),涉及角色有:測試用例管理員、測試專家小組、測試人員。其中測試人員負(fù)責(zé)測試用例的編寫工作,測試專家小組負(fù)責(zé)對測試用例進(jìn)行評審,測試用例管理員負(fù)責(zé)對測試用例進(jìn)行管理。具體操作過程如下(圖4)。
(1)測試人員在首次開發(fā)完成可復(fù)用測試用例后,提交測試用例管理員進(jìn)行格式規(guī)范化檢查。
(2)測試用例管理員對可復(fù)用測試用例進(jìn)行格式規(guī)范化檢查,然后提交測試專家小組進(jìn)行評審。
(3)測試專家小組對測試用例進(jìn)行評審,評審內(nèi)容包括,測試用例的可復(fù)用性、測試用例描述是否清晰簡潔等。
(4)評審?fù)ㄟ^后,測試用例管理員將可復(fù)用測試用例入庫管理,不通過則由測試人員進(jìn)行修改,修改后重新提交,重復(fù)步驟2和步驟3。
(5)測試人員在后續(xù)測試過程,形成新的可復(fù)用測試用例,提交測試專家小組評審,依次重復(fù)步驟2和步驟3。
2.4可復(fù)用測試用例使用
在完成了可復(fù)用測試用例的開發(fā)入庫工作后,即可在新系統(tǒng)測試過程中使用這些可復(fù)用的測試用例。測試人員可到測試用例庫中進(jìn)行查詢,測試用例庫提供多種類型的查詢方式,以便測試人員進(jìn)行測試用例的選取復(fù)用。測試用例復(fù)用的流程如下(圖5):第一步,進(jìn)行測試需求分析,得到需要測試的功能列表;第二步,針對每個(gè)待測功能,按照界面要素、業(yè)務(wù)規(guī)則、業(yè)務(wù)流程、系統(tǒng)接口這四類共性要素進(jìn)行細(xì)分,然后對要素繼續(xù)劃分細(xì)項(xiàng),具體過程參考圖3;第三步,在測試用例庫中查詢每細(xì)項(xiàng)對應(yīng)測試用例,判斷是否可復(fù)用;第四步,如果可復(fù)用,則進(jìn)行復(fù)用,如果不可復(fù)用,則編寫新的測試用例。
圖4 可復(fù)用測試用例管理過程
圖5 測試用例復(fù)用流程
A銀行是一家大型國有商業(yè)銀行,其獨(dú)立的測試中心,每年承擔(dān)行內(nèi)數(shù)百個(gè)系統(tǒng)的測試工作,為提高測試工作效率和質(zhì)量,于2015年進(jìn)行測試用例復(fù)用的研究探索,并選取了內(nèi)部管理領(lǐng)域的系統(tǒng)作為試點(diǎn)。
3.1可復(fù)用的測試用例的開發(fā)
首先選取A銀行人事、招聘、合規(guī)、法律、辦公等領(lǐng)域5個(gè)內(nèi)部管理系統(tǒng),采取文檔研究(包含需求文檔、設(shè)計(jì)文檔、測試文檔、操作手冊等)和實(shí)際系統(tǒng)操作相結(jié)合的方法,從界面要素、業(yè)務(wù)規(guī)則、業(yè)務(wù)流程、系統(tǒng)接口四個(gè)方面提取出系統(tǒng)的共性需求,并自頂向下進(jìn)行細(xì)化得到300個(gè)細(xì)化的共性項(xiàng),針對每個(gè)可操作的共性,采取劃分類別,設(shè)計(jì)每個(gè)類別中的選擇,生成測試用例,共計(jì)設(shè)計(jì)可復(fù)用的測試用例1 020條。采用專門測試用例管理系統(tǒng)進(jìn)行可復(fù)用測試用例的管理。
3.2可復(fù)用的測試用例的使用
C系統(tǒng)是A銀行的一個(gè)內(nèi)部管理系統(tǒng)。在C系統(tǒng)的測試用例設(shè)計(jì)時(shí),通過對C系統(tǒng)測試需求進(jìn)行分析細(xì)化,共匹配了210個(gè)細(xì)化的共性項(xiàng),通過在測試用例庫中查詢選取830條用例進(jìn)行復(fù)用,對于不存在可復(fù)用測試用例的測試需求新設(shè)計(jì)測試用例395條,這830條可復(fù)用的測試用例,涵蓋了C系統(tǒng)約65%的測試需求。通過歷史數(shù)據(jù)對比,該項(xiàng)目使得可復(fù)用測試用例后,測試用例編寫的工作量減少約50%。
通過實(shí)踐可知,基于共性分析的測試用例復(fù)用方法對于提高測試的效率和質(zhì)量是有效的,并且測試用例復(fù)用給測試工作帶來的收益會(huì)隨著可復(fù)用的測試用例的日益積累優(yōu)化更加明顯。
為應(yīng)對軟件測試規(guī)模不段擴(kuò)大,軟件測試復(fù)雜度不斷提高的挑戰(zhàn),本文提出基于共性分析的軟件測試用例復(fù)用的方法,通過對已有系統(tǒng)的分析,提出可復(fù)用的共性內(nèi)容,對共性進(jìn)行自頂向下分解細(xì)化,然后針對細(xì)化共性的輸入劃分類別,針對不同類別,劃分若干輸入選擇以生成可復(fù)用的測試用例,最終形成測試用例庫。并在新系統(tǒng)測試時(shí)從測試用例庫中選取可復(fù)用測試用例,在使用過程中持續(xù)優(yōu)化補(bǔ)充可復(fù)用的測試用例,以提高測試的效率和質(zhì)量,并形成企業(yè)的知識資產(chǎn)。
主要參考文獻(xiàn)
[1]楊芙清,梅宏,李克勤.軟件復(fù)用與軟件構(gòu)件技術(shù)[J].電子學(xué)報(bào),1999,27(2):68-75.
[2]張麗坤.設(shè)計(jì)模式在軟件復(fù)用中的應(yīng)用研究[D].大連:大連海事大學(xué),2007.
[3]許文憲,董子健.Java程序設(shè)計(jì)教程與實(shí)訓(xùn)[M].北京:北京大學(xué)出版社,2005.
10.3969/j.issn.1673-0194.2016.13.097
TP311.52
A
1673-0194(2016)13-0177-04
2016-04-14