摘 要:傳統軟件測試模型存在許多缺陷,為了消除這些缺陷,提高軟件測試效率,根據Marick基于代碼移交的測試思想,重點從代碼移交、迭代開發等方面對測試模型進行研究,提出代碼移交測試模型。通過在一個綜合信息處理與監控測試軟件的應用中對該模型進行驗證得知,代碼移交測試模型可以有效提高測試效率,降低測試成本。
關鍵詞:軟件測試模型;代碼移交;測試過程;迭代測試
中圖分類號:TP311 文獻標識碼:B 文章編號: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 引 言
軟件測試是軟件質量保證的一個重要環節,他的目標是以耗費最少時間與最小工作量找出軟件系統中潛在的各種錯誤與缺陷。軟件測試在軟件初期開發經費中占到45%[1],在總的開發經費中也要占15%[1],僅次于軟件維護費用。因此,降低軟件測試所耗資源與提高軟件測試效率就成了一個值得關注的問題。
軟件測試模型通過把軟件測試活動規范為一系列周密計劃過的步驟,從而有效減少不必要的資源消耗。選用好的軟件測試模型不僅可以大大減少軟件開發和后期維護的費用,同時能有效縮短開發周期,提高軟件質量。本文針對目前廣泛使用的軟件測試模型存在的不足,同時結合Marick在《軟件測試的新模型》一文中提出的針對代碼移交測試的思想,提出了“代碼移交測試模型”,并給出一個將該模型應用到綜合信息處理與監控測試軟件項目中的例子。
2 常用的軟件測試模型及其缺陷
V模型、W模型、H模型和X模型是當前最主要的幾類軟件測試模型,其中以V模型和W模型使用最為廣泛。
如圖1所示,V模型是在瀑布開發模型基礎上演化而來的測試模型,他嚴格按照不同的開發階段,將測試過程劃分為具有固定邊界的階段。V模型的主要缺陷在于只針對程序進行測試并尋找錯誤,而需求分析、系統設計階段隱藏的問題一直要到最后才可能被發現;他的這種具有固定邊界的測試方法,阻礙了測試人員從更大范圍內獲取測試信息并進行綜合;將軟件測試看成單一靜態的過程,而沒有看作是不斷變更、迭代、重復的過程;其忽略了軟件開發是由一系列的代碼移交所組成,沒有對代碼移交過程中的測試做出明確規定。
W模型在V模型的基礎上進行了一些改進,如圖 2所示。他是基于“盡早地和不斷地進行軟件測試”的原則,在軟件開發階段同步進行軟件測試工作。相對于V模型,他強調測試要伴隨整個軟件開發周期,并且將測試的對象擴大到了所有軟件設計和開發階段中產生的軟件產品。但是與V模型一樣,他同樣把軟件開發視為需求、設計、編碼等一系列串行活動,只有上一階段完全結束,才可正式開始下一階段的測試,因此他無法支持迭代和變更調整,也無法控制代碼移交過程中的測試。
3 基于代碼移交的測試模型
軟件開發通常都是以團隊方式進行的,開發人員要把代碼移交給他人,其中的錯誤可能會對后續開發工作產生一些影響,測試人員需要干預這個過程,從而減少這種影響。因此一個好的軟件測試模型應該考慮到這一重要的現實需要:針對代碼移交的測試。
Marick在《軟件測試的新模型》一文中首次提到針對代碼移交測試的初步構想,他認為一個好的測試模型應該包括:
(1) 測試對項目中每一次代碼移交有所反應;
(2) 測試計劃人對已移交的移交內容、新的移交以及移交內容變更進行負責;
(3) 在測試設計中,除了使用項目文檔外,還應明確使用其他各種不同來源的信息;
(4) 包含反饋的循環,在運行測試時可以繼續發現更多的測試內容。
Marick的代碼移交測試思想為軟件測試模型開辟了新的思路,根據該思想,本文提出一種針對代碼移交的測試模型。
如圖3所示,在軟件開發過程中,開發小組與測試小組應并行工作。代碼移交前,開發小組每進入一個開發過程,包括需求分析、概要設計、詳細設計和編碼,測試小組就應進行相應的測試設計和準備工作(如用例生成、測試代碼開發等);當相應開發過程完成后立即執行測試,并將結果反饋給開發人員進行Bug修復;完成修復后應再次執行測試,并根據結果來確認是否進入下一開發階段;當編碼階段已完成且所有已知Bug全部修復后,就可以正式進行代碼移交。
代碼移交后,要對代碼進行集成,測試其接口、性能等,從而使各代碼單元之間潛在的相互影響得到充分測試。此時的測試流程與移交前基本相似,主要不同是,測試結果要根據不同情況反饋到本級開發人員或上一級開發人員。
基于盡早測試的原則,代碼移交測試模型在需求分析階段就引入測試,有效地降低了整個軟件開發的代價。同時,他的優勢還在于并沒有將測試過程劃分為具有固定邊界的階段,測試設計的信息來源不僅包括相應階段的文檔,還包括其他階段的信息以及一切適合測試的內容。如在對代碼進行測試時,根據需要內容也可以包括集成代碼測試的內容;反之在條件不具備的情況下,也允許推遲某些測試到集成代碼測試中。
代碼移交測試模型還包括多重反饋循環,任何時候只要發生需求變更、新的測試內容發現或其他方面變化,均可以根據更改后的信息重新進行測試設計、準備和執行,并反饋相應結果,實現新的移交。
實際上,圖3僅描述了一次代碼移交的過程,實際的軟件開發是由一系列代碼移交完成的,是多次不斷重復且不斷逼近正確的過程,每一次移交的內容都改變了前一次移交的行為。有些測試需要添加,有些測試需要再次執行,有些測試則需要變更,所有的改變應取決于更改的信息狀態。因此代碼移交測試模型是一種支持迭代開發與測試的模型。
4 綜合信息處理與監控測試軟件測試設計
本文以一個綜合信息處理與監控測試軟件的測試過程為例,研究基于代碼移交的測試模型在實踐中的應用。
該測試軟件的主要功能是為綜合信息處理與監控軟件提供測試用數據。根據協議要求,測試軟件要通過網絡將數據按幀發送到目標主機,幀長不固定但有最大長度限制。幀的內容由若干個信息類別組成,他們的長度各不相同,短的信息類別可以將多個放在一幀內,長信息類別也可能跨越多幀。每種信息類別的發送頻率可以由用戶獨立設定,當需要同時發送多個信息類別時,按信息類別優先級發送。
為了便于闡述,假設只有2種信息類別。開發小組分工如下:人員共分為3組,A組和B組各承擔一種信息類別代碼生成的工作,C組承擔信息調度算法、信息發送等集成方面的工作。A組與B組開發完畢后分別向C組人員進行代碼移交從而完成整個開發過程。
如圖4所示,在A組開發人員完成每一個開發過程前,包括需求分析、概要設計、詳細設計和編碼,測試人員要根據相應開發階段的文檔,綜合其他階段的有用信息完成測試設計和測試準備。如在代碼完成前,測試設計不但要考慮覆蓋程序的每一條邏輯路徑,還要考慮測試數據生成時間是否滿足指標要求等影響集成代碼測試的內容。在測試過程中很可能會發現新的測試內容,此時應及時修改測試設計并再次進行新的測試。測試執行完成后要及時反饋結果,修復Bug并再次執行測試。通過這種循環往復的過程,A組開發工作達到移交狀態,可以向C組人員移交代碼。B組與A組僅在代碼移交的時間上應有所差別。
C組測試人員擔任最終的集成工作和剩余的開發測試工作,流程基本與A組B組類似。但是C組測試的執行需要A組和B組代碼的支持,因此只有他們進行代碼移交后才可以開始相應的測試工作。測試結果的反饋也不僅僅是本組測試人員,而是根據具體情況反饋到A組或B組,Bug修復后形成新的移交。
軟件開發過程中需求變更是經常發生的,在開發這個測試軟件時,需要將A組和B組的部分內容提取出來成為一個新的信息類別。經過3組人員溝通,確定了需求變更對開發和測試的影響,并根據實際情況決定由A組負責新信息類別的開發。根據更改后的需求,所有的開發人員進行設計修改和編碼修改,所有的測試人員進行測試設計更改,重新執行測試并反饋結果。直到所有的已知Bug被修復后,可以完成新的移交。實踐證明,基于代碼移交的測試模型可以很好地支持需求變更。
5 結 語
基于代碼移交的軟件測試模型關注傳統測試模型忽略的一個重要方面,就是代碼移交過程中的軟件測試。他對軟件開發過程中的每一次代碼移交都能及時做出反應,并克服了V模型串行化的測試流程,支持反復交替的開發測試模式。實踐證明,采用代碼移交軟件測試模型使得軟件測試效率得到提高,軟件開發成本得到有效控制。
參 考 文 獻
[1]Cem Kaner,Jack Falk,Hung Quoc Nguyen.計算機軟件測試[M].2版.北京:機械工業出版社,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.軟件工程實踐者的研究方法[M].4版.北京:機械工業出版社,2000.
[4]Paul C.Jorgensen.軟件測試[M].北京:機械工業出版社,2003.
[5]Daniel J.Mosley,Bruce A.Posey.軟件測試自動化[M].北京:機械工業出版社,2003.