天津工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與軟件學(xué)院 李 毅
軟件復(fù)用作為一種新技術(shù),近年來(lái)越來(lái)越受到軟件業(yè)和科研工作者的重視。軟件復(fù)用是提高軟件的生產(chǎn)效率、解決軟件危機(jī)問(wèn)題的一個(gè)重要途徑。測(cè)試用例是軟件測(cè)試過(guò)程中的核心資產(chǎn),軟件測(cè)試成本的大部分就是用于測(cè)試用例的設(shè)計(jì),而測(cè)試用例的優(yōu)劣往往取決于測(cè)試工程師的經(jīng)驗(yàn)和水平,并且直接影響軟件測(cè)試的效率。
測(cè)試用例復(fù)用的研究主要分成兩個(gè)方面:可復(fù)用測(cè)試用例的生成和可復(fù)用測(cè)試用例的管理??蓮?fù)用測(cè)試用例的生成主要研究使生成的測(cè)試用例可供多次使用,具有可復(fù)用的特性。測(cè)試用例的生成是測(cè)試用例復(fù)用的先決條件,只有擁有足夠多的可供利用的測(cè)試用例,才有復(fù)用的可能??蓮?fù)用測(cè)試用例的管理,包括測(cè)試用例的存儲(chǔ)、檢索、復(fù)用、維護(hù)等。國(guó)內(nèi)外對(duì)測(cè)試用例的管理和共享機(jī)制,大部分僅限于組織內(nèi)部,甚至僅僅限制于一個(gè)項(xiàng)目?jī)?nèi)部。例如部分單元測(cè)試用例在集成測(cè)試中重用,部分集成測(cè)試用例在系統(tǒng)測(cè)試中重用,系統(tǒng)測(cè)試用例在回歸測(cè)試中重用等。這些測(cè)試用例的復(fù)用對(duì)組織、項(xiàng)目的依賴性高,因而復(fù)用程度低。因此,大規(guī)模的可復(fù)用測(cè)試用例庫(kù)成為復(fù)用的必要支撐,由此引入的測(cè)試用例庫(kù)的建設(shè)和管理。
軟件產(chǎn)品的功能和性能依賴于采用的軟件開(kāi)發(fā)技術(shù)、系統(tǒng)的運(yùn)行環(huán)境和軟件應(yīng)用領(lǐng)域的三維體系,因此,一個(gè)軟件測(cè)試用例的設(shè)計(jì)是離不開(kāi)其軟件的周境(Context)的,也就是說(shuō),軟件測(cè)試用例的設(shè)計(jì)是因系統(tǒng)運(yùn)行環(huán)境和應(yīng)用領(lǐng)域不同而不相同的。
測(cè)試樣式是對(duì)特定的、可重復(fù)使用的軟件測(cè)試問(wèn)題提供一個(gè)通解,它包括決定樣式應(yīng)用系統(tǒng)環(huán)境的上下文(即:周境),以及由相關(guān)因素組成的部件。軟件測(cè)試樣式描述了測(cè)試設(shè)計(jì)中最基本的問(wèn)題,也是軟件測(cè)試設(shè)計(jì)的最佳實(shí)踐。樣式作了測(cè)試用例一個(gè)隱含的斷言:假定滿足了在樣式中的上下文和組成因素的條件表達(dá)式,這將是一種很好的解決問(wèn)題的方式。因此,樣式是針對(duì)特定需要解決問(wèn)題的一種通解,樣式的種類多種多樣,千變?nèi)f化,但可以根據(jù)測(cè)試的實(shí)際需要量身訂做。針對(duì)不同的被測(cè)項(xiàng)目對(duì)象,軟件測(cè)試的著重點(diǎn)也不一樣,因此會(huì)有非常多的類型測(cè)試樣式。V.Binder提出了32種測(cè)試樣式,測(cè)試樣式簡(jiǎn)化了軟件構(gòu)造框架,關(guān)注為完成某種測(cè)試所必須的問(wèn)題,因?yàn)闃邮绞乔蟮锰囟▎?wèn)題一個(gè)通解,在軟件測(cè)試過(guò)程中是完全可以復(fù)用的,軟件測(cè)試樣式的具體實(shí)現(xiàn)就是一個(gè)測(cè)試包,由多個(gè)軟件測(cè)試用例組成。
然而,不管軟件測(cè)試需求怎么變化,一個(gè)測(cè)試樣式可以形式化的描述為一個(gè)十元組:
Test pattern=(Na,Ob,Ct,Fm,St,Ey,Et,Cl,Ka,Cp)
即:{樣式名稱,樣式目標(biāo),測(cè)試周境,故障類型,策略,入口準(zhǔn)則,出口準(zhǔn)則,結(jié)論,己知應(yīng)用,相關(guān)樣式}。
(l)樣式名稱Na:表示能標(biāo)識(shí)該測(cè)試樣式的名稱和短語(yǔ);
(2)樣式目標(biāo)ob:每個(gè)樣式都有其需要實(shí)現(xiàn)的目標(biāo),即滿足軟件測(cè)試設(shè)計(jì)所期望的某個(gè)特定的測(cè)試功能;
(3)周境Ct:強(qiáng)調(diào)軟件測(cè)試設(shè)計(jì)的基本問(wèn)題,描述樣式解決的測(cè)試設(shè)計(jì)問(wèn)題,使用的范圍和時(shí)間,針對(duì)的軟件實(shí)體范圍設(shè)定其運(yùn)行環(huán)境;
(4)故障類型Fm:闡述樣式所采用的故障模型以及采用的該模型的理由,故障模型對(duì)發(fā)現(xiàn)存在的缺陷非常重要,有效的測(cè)試必須致力于在幾乎很好的代碼中能發(fā)現(xiàn)隱藏的極少的故障或缺陷;
(5)策略St:給出軟件測(cè)試設(shè)計(jì)和實(shí)現(xiàn)的最好測(cè)試用例的算法、技術(shù)路線和系統(tǒng)應(yīng)有的提示;
(6)入口準(zhǔn)則Ey:定義使用該樣式的前提條件和所做的必要準(zhǔn)備工作;
(7)出口準(zhǔn)則Et:定義滿足樣式的測(cè)試目標(biāo)必須獲得的條件,及測(cè)試樣式的輸出條件;
(8)結(jié)論Cl:介紹采用此樣式的優(yōu)點(diǎn)和缺點(diǎn),包括測(cè)試開(kāi)銷、獲得的利益、需要承擔(dān)的風(fēng)險(xiǎn)以及相關(guān)情況的說(shuō)明;
(9)己知應(yīng)用Ka:介紹此樣式的應(yīng)用的成功案例和取得的測(cè)試經(jīng)驗(yàn);
(10)相關(guān)樣式Cp:與此樣式相類似的樣式,并對(duì)樣式加以補(bǔ)充資料說(shuō)明。
可復(fù)用測(cè)試樣式是對(duì)可復(fù)用的軟件測(cè)試問(wèn)題提出一個(gè)通解,它包括決定樣式應(yīng)用的周境,以及相關(guān)因素組成的部件。軟件測(cè)試用例的復(fù)用有三個(gè)基本的條件:一是必須有可以復(fù)用的軟件測(cè)試用例,二是復(fù)用的軟件測(cè)試用例對(duì)將來(lái)軟件測(cè)試是非常有用的,三是復(fù)用者應(yīng)該知道如何去使用被復(fù)用的測(cè)試用例。正確地刻畫、描述和管理可復(fù)用的測(cè)試用例是實(shí)現(xiàn)測(cè)試用例復(fù)用的關(guān)鍵技術(shù)。可復(fù)用測(cè)試用例模式是在通用軟件測(cè)試用例屬性的基礎(chǔ)上,增加可復(fù)用的屬性與特征,如測(cè)試接口描述、功能粒度、復(fù)用頻度和版本信息等,以便利用已有的軟件測(cè)試用例資源來(lái)支持軟件測(cè)試用例的復(fù)用。可復(fù)用測(cè)試樣式是對(duì)可復(fù)用的軟件測(cè)試問(wèn)題提出一個(gè)通解,它包括決定樣式應(yīng)用的周境,以及相關(guān)因素組成的部件。可復(fù)用測(cè)試樣式具體的內(nèi)容如下:
(1)樣式名稱Na:可復(fù)用軟件測(cè)試樣式;
(2)樣式目標(biāo)Ob:采用該樣式設(shè)計(jì)的測(cè)試用例,可以用黑盒測(cè)試方法進(jìn)行復(fù)用;
(3)周境Ct:測(cè)試用例應(yīng)該以測(cè)試類型、被測(cè)試領(lǐng)域、測(cè)試方法、測(cè)試目的進(jìn)行分類;
(4)故障模型Fm:可以采用數(shù)據(jù)域的邊值分析、因果圖和錯(cuò)誤推測(cè)法;
(5)策略St:從黑盒測(cè)試的角度出發(fā),只關(guān)心軟件的行為,最大限度地屏蔽軟件系統(tǒng)運(yùn)行環(huán)境和開(kāi)發(fā)技術(shù)的因素,讓測(cè)試用例具有獨(dú)立性;每個(gè)測(cè)試用例只需與一個(gè)特定測(cè)試場(chǎng)景和唯一的結(jié)果相關(guān)聯(lián),一旦軟件測(cè)試用例失敗,不會(huì)造成對(duì)其他軟件測(cè)試用例執(zhí)行的影響;
(6)入口準(zhǔn)則Ey:使用該樣式的前置條件是符合復(fù)用條件和分類條件的;
(7)出口準(zhǔn)則Et:需要達(dá)到軟件測(cè)試目標(biāo)而設(shè)定的復(fù)用要求;
(8)結(jié)論Cl:采用該樣式開(kāi)發(fā)的可復(fù)用軟件測(cè)試用例,可以提高測(cè)試用例的復(fù)用力,極大地提高軟件測(cè)試用例設(shè)計(jì)的效率,推動(dòng)測(cè)試用例的共享;
(9)己知應(yīng)用Ka:在《軟件測(cè)試管理公共服務(wù)平臺(tái)》軟件中已得到應(yīng)用;
(10)相關(guān)樣式Cp:共用測(cè)試樣式。
在編寫測(cè)試方案時(shí),首先根據(jù)被測(cè)的功能點(diǎn),定義需要的測(cè)試用例類型,在測(cè)試用例庫(kù)中選擇,如果存在相應(yīng)的軟件測(cè)試用例并且合理有效,則復(fù)用到軟件測(cè)試方案中去,如果不存在相應(yīng)的可復(fù)用軟件測(cè)試用例,則創(chuàng)建一個(gè)新的軟件測(cè)試用例加入到軟件測(cè)試方法中,當(dāng)該測(cè)試方案被執(zhí)行,新的測(cè)試用例得到了實(shí)際應(yīng)用系統(tǒng)的檢驗(yàn),并確定無(wú)誤后,則將新的軟件測(cè)試用例添加到用例庫(kù)中,這樣便可以保證軟件測(cè)試用例的收集和積累,從而創(chuàng)造了軟件測(cè)試用例知識(shí)庫(kù)的共享。
軟件測(cè)試的復(fù)用不僅可以從軟件測(cè)試的管理工程中復(fù)用,同時(shí)也可以有效的管理測(cè)試用例,實(shí)現(xiàn)測(cè)試用例的不同軟件項(xiàng)目之間的復(fù)用,也可以在同一項(xiàng)目不同測(cè)試類型之間復(fù)用。本研究分析和研究了軟件測(cè)試技術(shù)中的復(fù)用所采用策略,將有助于軟件測(cè)試復(fù)用技術(shù)的發(fā)展,同時(shí)可以指導(dǎo)軟件測(cè)試的實(shí)踐過(guò)程。