摘 要:由于自動化測試有著回歸測試更方便,可運行更多更繁瑣的測試,執行一些手工測試困難或不可能進行的測試,更好地利用資源的一致性、可重復性,增加軟件信任度的特點,故越來越多的公司和科研院所開始進行自動化測試管理平臺的研究工作。但是,通常開發出來的自動化測試管理平臺功能單一,缺乏靈活性、可升級性和集成性,而現代測試管理系統已經迫切需要集成自動化測試管理平臺,這樣,落后的測試平臺設計就無法滿足先進測試管理系統的需求。這里設計一種新型的自動化測試管理平臺,能夠很好地集成到先進測試管理系統中,并且容易維護和升級。
關鍵詞:自動化測試; 自動化測試管理平臺; 人機接口; 軟件測試; 后臺數據庫
中圖分類號:TP29 文獻標識碼:A
文章編號:1004-373X(2010)09-0151-03
Realization of New Type of Automatic Testing and Management Platform
HUANG Xiao
(Electronic Information Engineering College, South-Central University for Nationalities, Wuhan 430074, China)
Abstract: Because automatic testing can make easy regression testing, run more and complex testing, execute testing that could not be run or hardly run manually, make full use of resources, implement consistence and repeatability, and add the reliance of software, more and more companies and research institutes start to do some research of automatic testing management platform(ATMP), but the generally developed ATMPs are functionality-single, lack of flexibility, not able to be updated and integrated. While modern testing management system has eagerly wanted to integrate ATMP, but the available ATMP can not satisfy the requirement of advanced testing management system, the new type of ATMP, which can be successfully integrated into the advanced test management system, and easily maintained and updated, is designed.
Keywords: automatic testing; automatic testing and management platform; man-machine interface; software testing; back database
自動化測試可理解為測試過程自動化和測試結果分析自動化。測試過程的自動化指的是不用手工逐個的對用例進行測試[1]。測試結果分析自動化指的是不用人工一點點去分析測試過程中的中間結果或數據流。軟件自動化測試就是模擬手動測試步驟,執行用某種程序設計語言編制的測試程序,控制被測軟件的執行,完成全自動或半自動測試的過程。先進的測試管理流程與一流的自動化測試管理平臺是實施自動化測試不可或缺的[2]。為更好地對測試流程進行控制,使之能充分利用自動化測試帶來的好處,現代測試管理系統應該能支持自動化測試。本文分析了一種新型的自動化測試管理平臺(Automatic Testing and Management Platform,ATMP)的體系結構和各部分組成,并對其中一些關鍵技術進行了討論。
1 體系結構
如今的產品設計變得日益的復雜,測試系統為了達到更好的靈活性和可升級性,正逐漸朝著模塊化、小體積的方向發展,就是將復雜的測試系統簡化成模塊化的硬件和軟件去逐一實現,需要增加測試項目時只需增加相應的功能模塊即可滿足未來的升級需求[3]。在發展的大趨勢下,廣大測試工程師對自動化測試系統提出了一系列更具體的需求:更高的系統靈活性;高性能的架構;更低的系統投資;更長的系統壽命。ATMP在設計之初就考慮到了良好的可擴展性和可重復性[4]。
ATMP在邏輯上采用以中心數據庫為核心的體系結構,ATMP目前分為測試文檔管理系統、輸出結果管理、ATMP后臺數據庫、用例管理、BUG跟蹤數據庫和人機接口六大部分,體系結構圖如圖1所示。為了降低它們之間的耦合性,它們都通過共同的ATMP后臺數據庫進行交互,以后要進行擴展的話只需要圍繞中心數據庫進行操作即可[5]。
2 ATMP后臺數據庫
ATMP后臺數據庫分為測試輸入數據庫、測試輸出數據庫和測試用例數據庫。這些數據庫分別和人機接口、測試文檔管理系統、輸出結果管理系統、用例管理和BUG跟蹤數據庫相聯系[6]。測試人員通過人機接口,將輸入數據以文本的形式輸入到測試輸入數據數據庫中,然后調用相應的測試用例數據庫中的測試用例進行測試,輸出的結果送到測試輸出數據庫。然后測試輸出數據庫將輸出結果整理分類送至輸出結果管理系統。測試人員可以通過人機接口直接查看測試結果。
圖1 ATMP設計圖
2.1 測試用例數據庫
ATMP中用例分為兩個部分,用例邏輯和用例代碼。其中用例邏輯是文本格式,由用例管理系統負責創建;用例代碼由自動化支持系統根據用例邏輯來創建,它是自動化運行的基礎。它們的關系如圖2所示。
圖2 用例邏輯和用例代碼之間的關系
2.2 測試用例存儲和執行結果
為更有效組織這些測試用例,采用測試用例數據庫進行集中管理。這樣就可以按照測試階段和被測模塊清晰地組織測試用例,并可以通過人機接口按照用戶的不同查詢條件顯示不同的數據信息(如測試用例執行狀態,執行結果,時間等)。人機接口有兩種方式,一種是通過Web頁面來查詢,界面友好,操作方便,適合入門級測試工程師。而CLI則適合于較高層次的測試工程師,除了可以查詢外,還可以通過一些特殊的工具對ATMP進行升級和維護。這兩種方式都可以通過互聯網遠程操作。
2.3 測試用例的維護
為保證測試用例庫中測試用例的有效性,必須對測試用例庫進行維護。包括如下四個方面[7]:
(1) 刪除過時的測試用例。因為需求的改變等原因可能使一個測試用例不再合適被測系統,這時就應該將其刪除。
(2) 刪除冗余的測試用例。如果存在兩個或更多測試用例針對一組相同的輸入和輸出進行測試,那么就是冗余的,它們的存在會降低回歸測試的效率,需要定期進行整理。
(3) 修改舊的測試用例。自動化平臺升級,例如測試用例所調用的函數名稱發生變化,這樣會導致極小部分用例無法正常使用,這時需要對用例所調用的函數名稱進行修改。
(4) 添加新的測試用例。如果發現某個關鍵接口還沒有被測試,就應該開發新的測試用例重新對其進行測試,并將新的測試用例合并到測試用例庫中。
3 測試文檔模板管理
為有效進行軟件測試管理,在項目準備階段創建測試過程中用到的各種管理模板,項目測試執行過程中填充和更新模板內容,這樣可以保證不會遺漏重要測試內容并保持文檔格式一致性。目前ATMP中存在如下模板:
測試用例模板(測試用例邏輯部分) 描述該用例是用來測試軟件的何種功能的。
測試任務完成情況模板 用來統計截止目前為止,所完成的測試用例占整個測試計劃用例的百分比,可以提醒測試人員測試進度是否滯后。
每日、每周、每月進度模板 當日、當周、當月所完成的測試用例占整個測試計劃用例的百分比。
通過和失敗統計模板 用來統計失敗和通過的測試用例,和預定的認為成功的百分比相比較,可以判定整個測試計劃是否通過。
4 BUG跟蹤數據庫
BUG跟蹤數據庫BTD(BUG Tracking Database)是對軟件BUG進行系統管理和跟蹤控制的數據庫,它記錄軟件測試、BUG修正和驗證過程的全部BUG的處理信息,ATMP中的測試是以它為驅動進行的。ATMP中,對BUG進行跟蹤管理,確保每個被發現的BUG都能夠及時得到處理是測試工作的一項重要內容。每個BUG都有它的生命周期,從被報告開始到被解決結束。在這個生命周期中它在不同狀態中轉換。在ATMP中,這里為BUG設計了如下BUG跟蹤管理狀態模型。
4.1 BUG報告和處理
標識一個BUG時,應該正確給它分配嚴重程度、可視性、相關性和優先級別。其中嚴重程度標識了一個BUG對系統執行的破壞度,可視性是指在何種環境下能觀察到這個BUG,相關性指的是這個BUG和其他的BUG的關聯關系,優先級別標識BUG何時修復。每當一個BUG被處理完成的時候,ATMP將給它分配一個處理碼。
4.2 BTD的功能與組成
BTD的功能與組成如圖3所示[8]。
圖3 BUG跟蹤系統模塊組成圖
各模塊詳細說明如下[9]:
查詢模塊 根據查詢條件,查找滿足條件的BUG。
及時通知模塊 BTD發生任何變化,該模塊都會以郵件的形式通知相關人員。
備份模塊 全部備份或者備份滿足條件的BUG跟蹤數據庫中的BUG。
修改模塊 用于開發人員和測試人員更新BUG狀態信息;開發人員驗證、修改、更新BUG的信息;測試人員補充BUG內容,驗證和關閉修正的BUG。
權限控制模塊 為測試人員、開發人員和項目管理人員分配不同的權限,如瀏覽、報告、修改、查詢、統計、分析、刪除、備份等。
分析報告模塊 統計和分析滿足條件的BUG,輸出分析結果,并以數據、文字、表格和統計圖形等形式形成報告。
BTC。BUG處理中心,負責處理各個模塊發出的指令和模塊間信息的交換。
5 BUG跟蹤數據庫的缺陷管理
BUG跟蹤數據庫(BTD)是一種可以提高BUG處理效率的工具,要充分發揮其作用,需要對BUG跟蹤數據庫進行有效的管理。
5.1 用戶角色的劃分
使用BTD的用戶有多種類型,這些用戶在整個測試系統中扮演了不同的角色。為了更有效地對BTD中每個BUG進行正確處理,保證BUG處理的客觀性和安全性,我們對不同的使用者分配不同的BUG處理權限。默認情況下,數據庫有三個組,測試組、研發組、項目管理組。可以根據需要隨時添加和減少這些組的成員。各組對應權限如表1所示。
5.2 BUG數據分析和顯示
強大的數據統計分析能力是該系統的一大特色,以基于BUG跟蹤數據庫的BUG信息作為分析的數據來源,以表格和圖形的形式表現BUG的分布情況。目前支持以下三種統計和分析方式:
(1) 測試組每天、每周、每月報告的新BUG統計和分析。
(2) 不同測試人員的BUG數量統計。
(3) BUG嚴重級別和BUG類別統計與分析。
由于采用了中心數據庫,各模塊分層架構的體系結構,很方便以后增加新的分析和顯示方式,底層的數據庫和邏輯無需修改。
表1 成員權限對應表
組名成員專有權限公共權限
測試組測試工程師測試主管重新打開未修正的BUG
檢查和確認BUG
提交新BUG
關閉已修正的BUG
研發組研發工程師研發主管修正BUG
添加修正BUG的信息
項目管理組項目經理創建數據庫
保存關閉數據庫
瀏覽BUG
分類查詢BUG
統計分類BUG
6 結 語
自動化測試體系需要一個完整的解決方案才能實現。自動化測試的引入、強大的資源整合能力和有效的自動化測試體系的設計將是實現自動化測試的十分重要的因素,這也是本測試平臺設計的理念[10]。雖然軟件的自動化測試無法取代手動測試,但是由于自動化測試能顯著提高軟件測試的有效性和效率,將在越來越多的軟件測試管理系統中得到應用。
參考文獻
[1]PRESS Rgoer S.軟件工程——實踐者的研究方法[M].北京:機械工業出版社,2000.
[2]崔啟亮.國際化軟件測試[M].中國:電子工業出版社,2006.
[3]BACH James. Test automation snake oil[J]. Windows Technical Journal, 1996,15(9): 40-44.
[4]FEWSTER Mark, GRAHAM Dorothy. 軟件測試自動化技術[M].北京:電子工業出版社,2000.
[5]EDWARD Kit, Integrated, effective test design and automation[J]. Software Development, 1999,21(2): 36-38.
[6]ELFRIEDE Dustin. Lessons in test automation[J]. Software Testing and Quality Engineering, 1999,19(9): 16-22.
[7]DOUGLAS Hoffman. Heuristic test oracles: the balance between exhaustive comparison and no comparison at all[J]. Software Testing and Quality Engineering Magazine, 1999,19(13): 29-32.
[8]BRET Pettichord. Success with test automation[J]. Quality Week, 1996,13(6): 31-39.
[9]GUCKENHEIMER Sam. The revolution in software testing. rational software[M]. [S.l.]:[s.n.], 2002.
[10]NEWKIRK James, MARTIN Robot C. Extreme programming in practice[M].中文版.北京:人民郵電出版社,2002.