摘 要:傳統(tǒng)軟件測(cè)試模型存在許多缺陷,為了消除這些缺陷,提高軟件測(cè)試效率,根據(jù)Marick基于代碼移交的測(cè)試思想,重點(diǎn)從代碼移交、迭代開(kāi)發(fā)等方面對(duì)測(cè)試模型進(jìn)行研究,提出代碼移交測(cè)試模型。通過(guò)在一個(gè)綜合信息處理與監(jiān)控測(cè)試軟件的應(yīng)用中對(duì)該模型進(jìn)行驗(yàn)證得知,代碼移交測(cè)試模型可以有效提高測(cè)試效率,降低測(cè)試成本。
關(guān)鍵詞:軟件測(cè)試模型;代碼移交;測(cè)試過(guò)程;迭代測(cè)試
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):1004-373X(2008)02-113-03
Code Handoffs Testing Model and Its Application
LI Jun,ZHANG Guozhu,YONG Shaowei
(Satellite Navigation and Positioning RD Center,School of Electronic Science and Engineering,National Univ.of Defe.Tech.,Changsha,410073,China)
Abstract:There are many defects in traditional software testing model.In order to eliminate these defects and advance efficiency,this paper studies testing model and the code handoffs thought of Marick.Then it proposes the code handoffs testing model.At last it validates this model by an application in integrated information processing and monitoring testing software.The result shows that using of code handoffs testing model can advance testing efficiency and reduce testing costs effectively.
Keywords:software testing model;code handoffs;testing process;iterative testing
1 引 言
軟件測(cè)試是軟件質(zhì)量保證的一個(gè)重要環(huán)節(jié),他的目標(biāo)是以耗費(fèi)最少時(shí)間與最小工作量找出軟件系統(tǒng)中潛在的各種錯(cuò)誤與缺陷。軟件測(cè)試在軟件初期開(kāi)發(fā)經(jīng)費(fèi)中占到45%[1],在總的開(kāi)發(fā)經(jīng)費(fèi)中也要占15%[1],僅次于軟件維護(hù)費(fèi)用。因此,降低軟件測(cè)試所耗資源與提高軟件測(cè)試效率就成了一個(gè)值得關(guān)注的問(wèn)題。
軟件測(cè)試模型通過(guò)把軟件測(cè)試活動(dòng)規(guī)范為一系列周密計(jì)劃過(guò)的步驟,從而有效減少不必要的資源消耗。選用好的軟件測(cè)試模型不僅可以大大減少軟件開(kāi)發(fā)和后期維護(hù)的費(fèi)用,同時(shí)能有效縮短開(kāi)發(fā)周期,提高軟件質(zhì)量。本文針對(duì)目前廣泛使用的軟件測(cè)試模型存在的不足,同時(shí)結(jié)合Marick在《軟件測(cè)試的新模型》一文中提出的針對(duì)代碼移交測(cè)試的思想,提出了“代碼移交測(cè)試模型”,并給出一個(gè)將該模型應(yīng)用到綜合信息處理與監(jiān)控測(cè)試軟件項(xiàng)目中的例子。
2 常用的軟件測(cè)試模型及其缺陷
V模型、W模型、H模型和X模型是當(dāng)前最主要的幾類軟件測(cè)試模型,其中以V模型和W模型使用最為廣泛。
如圖1所示,V模型是在瀑布開(kāi)發(fā)模型基礎(chǔ)上演化而來(lái)的測(cè)試模型,他嚴(yán)格按照不同的開(kāi)發(fā)階段,將測(cè)試過(guò)程劃分為具有固定邊界的階段。V模型的主要缺陷在于只針對(duì)程序進(jìn)行測(cè)試并尋找錯(cuò)誤,而需求分析、系統(tǒng)設(shè)計(jì)階段隱藏的問(wèn)題一直要到最后才可能被發(fā)現(xiàn);他的這種具有固定邊界的測(cè)試方法,阻礙了測(cè)試人員從更大范圍內(nèi)獲取測(cè)試信息并進(jìn)行綜合;將軟件測(cè)試看成單一靜態(tài)的過(guò)程,而沒(méi)有看作是不斷變更、迭代、重復(fù)的過(guò)程;其忽略了軟件開(kāi)發(fā)是由一系列的代碼移交所組成,沒(méi)有對(duì)代碼移交過(guò)程中的測(cè)試做出明確規(guī)定。
W模型在V模型的基礎(chǔ)上進(jìn)行了一些改進(jìn),如圖 2所示。他是基于“盡早地和不斷地進(jìn)行軟件測(cè)試”的原則,在軟件開(kāi)發(fā)階段同步進(jìn)行軟件測(cè)試工作。相對(duì)于V模型,他強(qiáng)調(diào)測(cè)試要伴隨整個(gè)軟件開(kāi)發(fā)周期,并且將測(cè)試的對(duì)象擴(kuò)大到了所有軟件設(shè)計(jì)和開(kāi)發(fā)階段中產(chǎn)生的軟件產(chǎn)品。但是與V模型一樣,他同樣把軟件開(kāi)發(fā)視為需求、設(shè)計(jì)、編碼等一系列串行活動(dòng),只有上一階段完全結(jié)束,才可正式開(kāi)始下一階段的測(cè)試,因此他無(wú)法支持迭代和變更調(diào)整,也無(wú)法控制代碼移交過(guò)程中的測(cè)試。
3 基于代碼移交的測(cè)試模型
軟件開(kāi)發(fā)通常都是以團(tuán)隊(duì)方式進(jìn)行的,開(kāi)發(fā)人員要把代碼移交給他人,其中的錯(cuò)誤可能會(huì)對(duì)后續(xù)開(kāi)發(fā)工作產(chǎn)生一些影響,測(cè)試人員需要干預(yù)這個(gè)過(guò)程,從而減少這種影響。因此一個(gè)好的軟件測(cè)試模型應(yīng)該考慮到這一重要的現(xiàn)實(shí)需要:針對(duì)代碼移交的測(cè)試。
Marick在《軟件測(cè)試的新模型》一文中首次提到針對(duì)代碼移交測(cè)試的初步構(gòu)想,他認(rèn)為一個(gè)好的測(cè)試模型應(yīng)該包括:
(1) 測(cè)試對(duì)項(xiàng)目中每一次代碼移交有所反應(yīng);
(2) 測(cè)試計(jì)劃人對(duì)已移交的移交內(nèi)容、新的移交以及移交內(nèi)容變更進(jìn)行負(fù)責(zé);
(3) 在測(cè)試設(shè)計(jì)中,除了使用項(xiàng)目文檔外,還應(yīng)明確使用其他各種不同來(lái)源的信息;
(4) 包含反饋的循環(huán),在運(yùn)行測(cè)試時(shí)可以繼續(xù)發(fā)現(xiàn)更多的測(cè)試內(nèi)容。
Marick的代碼移交測(cè)試思想為軟件測(cè)試模型開(kāi)辟了新的思路,根據(jù)該思想,本文提出一種針對(duì)代碼移交的測(cè)試模型。
如圖3所示,在軟件開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)小組與測(cè)試小組應(yīng)并行工作。代碼移交前,開(kāi)發(fā)小組每進(jìn)入一個(gè)開(kāi)發(fā)過(guò)程,包括需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)和編碼,測(cè)試小組就應(yīng)進(jìn)行相應(yīng)的測(cè)試設(shè)計(jì)和準(zhǔn)備工作(如用例生成、測(cè)試代碼開(kāi)發(fā)等);當(dāng)相應(yīng)開(kāi)發(fā)過(guò)程完成后立即執(zhí)行測(cè)試,并將結(jié)果反饋給開(kāi)發(fā)人員進(jìn)行Bug修復(fù);完成修復(fù)后應(yīng)再次執(zhí)行測(cè)試,并根據(jù)結(jié)果來(lái)確認(rèn)是否進(jìn)入下一開(kāi)發(fā)階段;當(dāng)編碼階段已完成且所有已知Bug全部修復(fù)后,就可以正式進(jìn)行代碼移交。
代碼移交后,要對(duì)代碼進(jìn)行集成,測(cè)試其接口、性能等,從而使各代碼單元之間潛在的相互影響得到充分測(cè)試。此時(shí)的測(cè)試流程與移交前基本相似,主要不同是,測(cè)試結(jié)果要根據(jù)不同情況反饋到本級(jí)開(kāi)發(fā)人員或上一級(jí)開(kāi)發(fā)人員。
基于盡早測(cè)試的原則,代碼移交測(cè)試模型在需求分析階段就引入測(cè)試,有效地降低了整個(gè)軟件開(kāi)發(fā)的代價(jià)。同時(shí),他的優(yōu)勢(shì)還在于并沒(méi)有將測(cè)試過(guò)程劃分為具有固定邊界的階段,測(cè)試設(shè)計(jì)的信息來(lái)源不僅包括相應(yīng)階段的文檔,還包括其他階段的信息以及一切適合測(cè)試的內(nèi)容。如在對(duì)代碼進(jìn)行測(cè)試時(shí),根據(jù)需要內(nèi)容也可以包括集成代碼測(cè)試的內(nèi)容;反之在條件不具備的情況下,也允許推遲某些測(cè)試到集成代碼測(cè)試中。
代碼移交測(cè)試模型還包括多重反饋循環(huán),任何時(shí)候只要發(fā)生需求變更、新的測(cè)試內(nèi)容發(fā)現(xiàn)或其他方面變化,均可以根據(jù)更改后的信息重新進(jìn)行測(cè)試設(shè)計(jì)、準(zhǔn)備和執(zhí)行,并反饋相應(yīng)結(jié)果,實(shí)現(xiàn)新的移交。
實(shí)際上,圖3僅描述了一次代碼移交的過(guò)程,實(shí)際的軟件開(kāi)發(fā)是由一系列代碼移交完成的,是多次不斷重復(fù)且不斷逼近正確的過(guò)程,每一次移交的內(nèi)容都改變了前一次移交的行為。有些測(cè)試需要添加,有些測(cè)試需要再次執(zhí)行,有些測(cè)試則需要變更,所有的改變應(yīng)取決于更改的信息狀態(tài)。因此代碼移交測(cè)試模型是一種支持迭代開(kāi)發(fā)與測(cè)試的模型。
4 綜合信息處理與監(jiān)控測(cè)試軟件測(cè)試設(shè)計(jì)
本文以一個(gè)綜合信息處理與監(jiān)控測(cè)試軟件的測(cè)試過(guò)程為例,研究基于代碼移交的測(cè)試模型在實(shí)踐中的應(yīng)用。
該測(cè)試軟件的主要功能是為綜合信息處理與監(jiān)控軟件提供測(cè)試用數(shù)據(jù)。根據(jù)協(xié)議要求,測(cè)試軟件要通過(guò)網(wǎng)絡(luò)將數(shù)據(jù)按幀發(fā)送到目標(biāo)主機(jī),幀長(zhǎng)不固定但有最大長(zhǎng)度限制。幀的內(nèi)容由若干個(gè)信息類別組成,他們的長(zhǎng)度各不相同,短的信息類別可以將多個(gè)放在一幀內(nèi),長(zhǎng)信息類別也可能跨越多幀。每種信息類別的發(fā)送頻率可以由用戶獨(dú)立設(shè)定,當(dāng)需要同時(shí)發(fā)送多個(gè)信息類別時(shí),按信息類別優(yōu)先級(jí)發(fā)送。
為了便于闡述,假設(shè)只有2種信息類別。開(kāi)發(fā)小組分工如下:人員共分為3組,A組和B組各承擔(dān)一種信息類別代碼生成的工作,C組承擔(dān)信息調(diào)度算法、信息發(fā)送等集成方面的工作。A組與B組開(kāi)發(fā)完畢后分別向C組人員進(jìn)行代碼移交從而完成整個(gè)開(kāi)發(fā)過(guò)程。
如圖4所示,在A組開(kāi)發(fā)人員完成每一個(gè)開(kāi)發(fā)過(guò)程前,包括需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)和編碼,測(cè)試人員要根據(jù)相應(yīng)開(kāi)發(fā)階段的文檔,綜合其他階段的有用信息完成測(cè)試設(shè)計(jì)和測(cè)試準(zhǔn)備。如在代碼完成前,測(cè)試設(shè)計(jì)不但要考慮覆蓋程序的每一條邏輯路徑,還要考慮測(cè)試數(shù)據(jù)生成時(shí)間是否滿足指標(biāo)要求等影響集成代碼測(cè)試的內(nèi)容。在測(cè)試過(guò)程中很可能會(huì)發(fā)現(xiàn)新的測(cè)試內(nèi)容,此時(shí)應(yīng)及時(shí)修改測(cè)試設(shè)計(jì)并再次進(jìn)行新的測(cè)試。測(cè)試執(zhí)行完成后要及時(shí)反饋結(jié)果,修復(fù)Bug并再次執(zhí)行測(cè)試。通過(guò)這種循環(huán)往復(fù)的過(guò)程,A組開(kāi)發(fā)工作達(dá)到移交狀態(tài),可以向C組人員移交代碼。B組與A組僅在代碼移交的時(shí)間上應(yīng)有所差別。
C組測(cè)試人員擔(dān)任最終的集成工作和剩余的開(kāi)發(fā)測(cè)試工作,流程基本與A組B組類似。但是C組測(cè)試的執(zhí)行需要A組和B組代碼的支持,因此只有他們進(jìn)行代碼移交后才可以開(kāi)始相應(yīng)的測(cè)試工作。測(cè)試結(jié)果的反饋也不僅僅是本組測(cè)試人員,而是根據(jù)具體情況反饋到A組或B組,Bug修復(fù)后形成新的移交。
軟件開(kāi)發(fā)過(guò)程中需求變更是經(jīng)常發(fā)生的,在開(kāi)發(fā)這個(gè)測(cè)試軟件時(shí),需要將A組和B組的部分內(nèi)容提取出來(lái)成為一個(gè)新的信息類別。經(jīng)過(guò)3組人員溝通,確定了需求變更對(duì)開(kāi)發(fā)和測(cè)試的影響,并根據(jù)實(shí)際情況決定由A組負(fù)責(zé)新信息類別的開(kāi)發(fā)。根據(jù)更改后的需求,所有的開(kāi)發(fā)人員進(jìn)行設(shè)計(jì)修改和編碼修改,所有的測(cè)試人員進(jìn)行測(cè)試設(shè)計(jì)更改,重新執(zhí)行測(cè)試并反饋結(jié)果。直到所有的已知Bug被修復(fù)后,可以完成新的移交。實(shí)踐證明,基于代碼移交的測(cè)試模型可以很好地支持需求變更。
5 結(jié) 語(yǔ)
基于代碼移交的軟件測(cè)試模型關(guān)注傳統(tǒng)測(cè)試模型忽略的一個(gè)重要方面,就是代碼移交過(guò)程中的軟件測(cè)試。他對(duì)軟件開(kāi)發(fā)過(guò)程中的每一次代碼移交都能及時(shí)做出反應(yīng),并克服了V模型串行化的測(cè)試流程,支持反復(fù)交替的開(kāi)發(fā)測(cè)試模式。實(shí)踐證明,采用代碼移交軟件測(cè)試模型使得軟件測(cè)試效率得到提高,軟件開(kāi)發(fā)成本得到有效控制。
參 考 文 獻(xiàn)
[1]Cem Kaner,Jack Falk,Hung Quoc Nguyen.計(jì)算機(jī)軟件測(cè)試[M].2版.北京:機(jī)械工業(yè)出版社,2004.
[2]Brian Marick.New Models for Test Development[C/OL].San Jose/Silicon Valley:Quality Week,1999.http://testing.com/writings/new-models.pdf.
[3]Roger S Pressman.軟件工程實(shí)踐者的研究方法[M].4版.北京:機(jī)械工業(yè)出版社,2000.
[4]Paul C.Jorgensen.軟件測(cè)試[M].北京:機(jī)械工業(yè)出版社,2003.
[5]Daniel J.Mosley,Bruce A.Posey.軟件測(cè)試自動(dòng)化[M].北京:機(jī)械工業(yè)出版社,2003.