摘要:軟件測(cè)試是軟件工程中非常重要的一個(gè)環(huán)節(jié),是保證軟件質(zhì)量的重要手段。本文從軟件設(shè)計(jì)角度出發(fā),提出如何在軟件設(shè)計(jì)中就考慮易測(cè)試性,使得軟件更易維護(hù)和修改,并針對(duì)軟件設(shè)計(jì)和測(cè)試的現(xiàn)狀和特點(diǎn),提出提高軟件易測(cè)試性和易維護(hù)性的一些建議,以達(dá)到軟件復(fù)用的目的。
關(guān)鍵字:軟件設(shè)計(jì) 軟件測(cè)試 結(jié)合
從軟件的生存周期看,軟件測(cè)試往往是在軟件開(kāi)發(fā)完成后對(duì)程序執(zhí)行結(jié)果的測(cè)試。這樣做可以使被測(cè)對(duì)象明確,測(cè)試的可操作性相對(duì)較強(qiáng)。但是,測(cè)試的依據(jù)是需求說(shuō)明書(shū)、設(shè)計(jì)文檔和使用說(shuō)明書(shū)。如果設(shè)計(jì)有錯(cuò)誤,測(cè)試的質(zhì)量就難以保證了。即使測(cè)試后發(fā)現(xiàn)是設(shè)計(jì)的錯(cuò)誤,此時(shí)修改的代價(jià)也非常大了。因此,較理想的做法是在軟件的開(kāi)發(fā)過(guò)程中,從軟件工程設(shè)計(jì)的各個(gè)階段就做好測(cè)試的準(zhǔn)備,將可測(cè)試性融入軟件設(shè)計(jì)中。
一、軟件測(cè)試方法和流程
軟件測(cè)試方法和技術(shù)根據(jù)不同角度的分類主要有以下幾種:從是否針對(duì)系統(tǒng)內(nèi);部結(jié)構(gòu)和具體算法實(shí)現(xiàn)可分為白盒法測(cè)試和黑盒法測(cè)試兩類;從軟件工程開(kāi)發(fā)周期角度可將測(cè)試過(guò)程分為單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試。另外,還有基于C/S系統(tǒng)的測(cè)試、基于實(shí)時(shí)系統(tǒng)的測(cè)試和面向?qū)ο笙到y(tǒng)的測(cè)試。
1、黑盒測(cè)試又稱功能測(cè)試、數(shù)據(jù)驅(qū)動(dòng)測(cè)試或基于規(guī)格說(shuō)明的測(cè)試,是在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下檢查輸入與輸出之間關(guān)系是否符合要求。白盒測(cè)試又稱結(jié)構(gòu)測(cè)試、邏輯驅(qū)動(dòng)測(cè)試或基于程序的測(cè)試,是在已知程序內(nèi)部結(jié)構(gòu)的情況下設(shè)計(jì)測(cè)試用例的測(cè)試方法。顯然,白盒測(cè)試適合在單元測(cè)試中運(yùn)用,而在獨(dú)立測(cè)試階段多采用黑盒測(cè)試方法。
2、單元測(cè)試是對(duì)軟件設(shè)計(jì)的最小單位——軟件模塊進(jìn)行五個(gè)方面的測(cè)試,包括模塊接口測(cè)試、模塊局部數(shù)據(jù)結(jié)構(gòu)測(cè)試、模塊邊界條件測(cè)試、模塊中所有獨(dú)立執(zhí)行通路測(cè)試和模塊的各條錯(cuò)誤處理通路測(cè)試。單元測(cè)試主要用白盒測(cè)試結(jié)合采用黑盒測(cè)試技術(shù),它的基本原則是:“至少測(cè)試一次所有語(yǔ)句,測(cè)試所有執(zhí)行盒邏輯路徑的組合,測(cè)試每個(gè)模塊的所有入口和出口。集成測(cè)試又稱組裝測(cè)試,是將軟件模塊集成在一起的過(guò)程。從集成方式上又分為非漸增式集成測(cè)試和漸增式集成測(cè)試。非漸增式測(cè)試是將所有軟件模塊統(tǒng)一集成后才進(jìn)行整體測(cè)試。這種方法容易發(fā)生混亂,判定出錯(cuò)原因和位置也很困難,一般不宜采用。漸增式集成測(cè)試先選擇一個(gè)基準(zhǔn)測(cè)試模塊,然后逐漸將與該模塊相關(guān)的模塊逐個(gè)加入,一邊加入一邊測(cè)試直至所有軟件模塊加入為止。該方法對(duì)錯(cuò)誤定位和糾正較容易,也是主要的集成測(cè)試的方法。系統(tǒng)測(cè)試是為了保證系統(tǒng)能在一定的硬件和軟件環(huán)境下正常運(yùn)行。系統(tǒng)測(cè)試的測(cè)試類型主要有功能測(cè)試、恢復(fù)測(cè)試、安全性測(cè)試、強(qiáng)度測(cè)試和性能測(cè)試。
3、基于C/S系統(tǒng)的測(cè)試有三種不同的層次:(1)不考慮服務(wù)器和底層網(wǎng)絡(luò),只對(duì)客戶端進(jìn)行測(cè)試;(2)客戶端和關(guān)聯(lián)的服務(wù)器被一起測(cè)試,不明顯考慮網(wǎng)絡(luò);(3)完整的C/S系統(tǒng)結(jié)構(gòu)的測(cè)試。C/S常用的測(cè)試方法還有客戶端應(yīng)用功能測(cè)試、服務(wù)器測(cè)試、數(shù)據(jù)庫(kù)測(cè)試、事務(wù)測(cè)試和網(wǎng)絡(luò)通信測(cè)試。基于實(shí)時(shí)系統(tǒng)的測(cè)試有任務(wù)測(cè)試、行為測(cè)試、任務(wù)間測(cè)試和系統(tǒng)測(cè)試。
4、面向?qū)ο蟮能浖秩齻€(gè)階段進(jìn)行測(cè)試:測(cè)試單個(gè)對(duì)象類、面向?qū)ο蠹蓽y(cè)試和面向?qū)ο笙到y(tǒng)測(cè)試。測(cè)試單個(gè)對(duì)象是將封裝的類或者對(duì)象作為最小的可測(cè)試單元,一般采用白盒法將語(yǔ)句至少執(zhí)行一遍。面向?qū)ο蟮募蓽y(cè)試也稱測(cè)試對(duì)象集群,主要采用三種集成策略:基于使用的測(cè)試、基于線程的測(cè)試和基于對(duì)象的交互測(cè)試。面向?qū)ο蟮南到y(tǒng)測(cè)試與面向過(guò)程的系統(tǒng)測(cè)試類似,區(qū)別主要是測(cè)試用例來(lái)源于場(chǎng)景。
二、軟件測(cè)試和軟件設(shè)計(jì)相結(jié)合
目前,軟件的測(cè)試更多是在軟件設(shè)計(jì)之后。如果我們借鑒一下硬件的測(cè)試技術(shù),即在繼承電路上增加額外的引腳,通過(guò)這些引腳能夠在測(cè)試時(shí)探測(cè)繼承電路的內(nèi)部,提高了可控制性和可觀察性,我們就會(huì)發(fā)現(xiàn)軟件的測(cè)試設(shè)計(jì)應(yīng)該是在軟件的設(shè)計(jì)和編碼中就考慮的問(wèn)題。在不增加或者少增加軟件復(fù)雜度的基礎(chǔ)上,將測(cè)試設(shè)計(jì)融入設(shè)計(jì)和編碼中,將測(cè)試成熟的部分加以封裝構(gòu)成一個(gè)個(gè)構(gòu)件,對(duì)其出口標(biāo)明其運(yùn)行的要求環(huán)境,以確保它在新的環(huán)境中工作正常,這樣就可以大大節(jié)約開(kāi)發(fā)和維護(hù)的費(fèi)用。從構(gòu)件測(cè)試的內(nèi)容可分為構(gòu)件內(nèi)部實(shí)現(xiàn)細(xì)節(jié)的測(cè)試、構(gòu)件接口的測(cè)試和構(gòu)件組裝的測(cè)試;從測(cè)試者與構(gòu)件的關(guān)系可分為構(gòu)件開(kāi)發(fā)者的測(cè)試(擁有構(gòu)件的源代碼)、構(gòu)件復(fù)用者和第三方的測(cè)試(沒(méi)有源代碼;從測(cè)試過(guò)程中采用的技術(shù)手段可分為基于變異測(cè)試的方法、基于構(gòu)件狀態(tài)機(jī)的方法、對(duì)構(gòu)件的回歸測(cè)試以及構(gòu)件的易測(cè)試性設(shè)計(jì)等。
我們可以針對(duì)現(xiàn)在已經(jīng)做的測(cè)試對(duì)軟件的開(kāi)發(fā)設(shè)計(jì)加入測(cè)試標(biāo)量,使得測(cè)試更加方便易行。針對(duì)軟件測(cè)試的多種方法和軟件自身的特點(diǎn),在軟件設(shè)計(jì)和編碼階段就將其體現(xiàn)在設(shè)計(jì)和編碼中。在針對(duì)結(jié)構(gòu)的測(cè)試中,至于設(shè)計(jì)結(jié)構(gòu)就可以對(duì)其主要的運(yùn)行結(jié)構(gòu)路徑設(shè)定標(biāo)量;在軟件的單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試前的設(shè)計(jì)過(guò)程中,對(duì)其實(shí)現(xiàn)的功能進(jìn)行標(biāo)準(zhǔn)化;另外,針對(duì)基于C/S系統(tǒng)的測(cè)試、基于實(shí)時(shí)系統(tǒng)的測(cè)試和面向?qū)ο笙到y(tǒng)的測(cè)試,我們可以借助網(wǎng)絡(luò)制定一個(gè)標(biāo)準(zhǔn)協(xié)議。這相當(dāng)于黑盒測(cè)試可以獲得規(guī)約卻不能得到設(shè)計(jì)或源代碼,對(duì)其輸入和輸出的依賴關(guān)系、調(diào)用順序、層次功能描述和并發(fā)順序進(jìn)行規(guī)范,以及其他特別要求。
可以想象,在不久的將來(lái),由于軟件開(kāi)發(fā)與測(cè)試的有效結(jié)合,我們的構(gòu)件復(fù)用將得到充分推廣。我們可以像升級(jí)和開(kāi)發(fā)我們的硬件產(chǎn)品一樣避免錯(cuò)誤的牽制。當(dāng)然,這除了需要設(shè)計(jì)和測(cè)試技術(shù)的發(fā)展,還需要軟件行業(yè)制定一定的標(biāo)準(zhǔn)和規(guī)范,使得構(gòu)件可以對(duì)其執(zhí)行環(huán)境和使用模式進(jìn)行有準(zhǔn)備預(yù)測(cè),通過(guò)對(duì)構(gòu)件的調(diào)用觀察執(zhí)行結(jié)構(gòu),判斷構(gòu)件行為是否正確。當(dāng)然,這也會(huì)產(chǎn)生問(wèn)題:在測(cè)試使用過(guò)程中無(wú)法檢查執(zhí)行過(guò)程中構(gòu)件的內(nèi)部狀態(tài),使得在構(gòu)件執(zhí)行中的一些故障被隱藏。這對(duì)構(gòu)件的復(fù)用和推廣提出了挑戰(zhàn)。
三、總結(jié)
現(xiàn)有的軟件測(cè)試技術(shù)需要不斷改進(jìn),加速將高效的軟件測(cè)試產(chǎn)品投入到軟件開(kāi)發(fā)的過(guò)程中。軟件測(cè)試目前已有向軟件開(kāi)發(fā)的前期發(fā)展的趨勢(shì),具有與軟件開(kāi)發(fā)和設(shè)計(jì)編碼階段向結(jié)合的特點(diǎn)。開(kāi)發(fā)具有自測(cè)能力的基于構(gòu)件的開(kāi)發(fā)方法將給軟件測(cè)試注入新的生命。可以預(yù)見(jiàn),以后軟件的易測(cè)試性將作為衡量軟件品質(zhì)的一項(xiàng)重要指標(biāo)。
參考文獻(xiàn):
[1] 黃愛(ài)明,國(guó)內(nèi)軟件測(cè)試現(xiàn)狀及對(duì)策研究[J],中國(guó)管理信息化,2007(02)
[2]李寧、李戰(zhàn)懷,基于黑盒測(cè)試的軟件測(cè)試策略研究與實(shí)踐[J],計(jì)算機(jī)應(yīng)用研究,2009(03)