方有軒 劉 建 董燕秋 朱昌創
(中國移動(深圳)有限公司,廣東 深圳 518000)
基于VSTO和Subversion實現的測試用例管理應用
方有軒 劉 建 董燕秋 朱昌創
(中國移動(深圳)有限公司,廣東 深圳 518000)
Visual Studio 2010作為2005的升級版本提供了功能更加強大的VSTO程序集,使用戶具備了擴展Office2010應用程序的能力。本文旨在闡述利用VSTO技術和配置管理工具來實現測試用例的離線管理方法,以及該方法在大范圍線下測試管理應用環境中所起到的突破作用。
VSTO;測試管理系統;線上測試;線下測試
測試用例管理作為現代化測試管理系統的重要組成部分,在測試過程中起著舉足輕重的作用。人們可以利用用例管理系統集中錄入、集中共享、智能查詢、統計查詢等功能實現將分布于不同地理位置的線下工作成果整體提交,并進行集中化管理,從而提高了測試設計過程的規范性,查找復用的便利性,協同工作一致性,并可以實現對測試進行全面而準確的評估。
傳統的測試管理系統多采用B/S架構,用戶可以在互聯網環境下使用瀏覽器訪問系統進行常規的測試工作,但是對于電子、通信、智能交通、工業自動化、嵌入式設備等行業軟硬件進行測試時,測試用戶的工作環境多處在不能聯網的狀態,一般需要將測試用例和數據攜帶到現場進行線下測試,并且在執行的過程中時常需要對用例庫進行維護操作,例如補充和修改用例。這時,會造成測試用例在線下測試環境中的管理混亂,出現用例版本不一致、數據冗余、測試遺漏、重復執行、難以協同、無法隨時了解測試進展等諸多問題。因此,在此基礎之上,測試用戶仍希望能夠在線下環境中通過方便靈活的方式實現對測試用例的管理,并能夠在測試完成后將結果同步到線上數據庫中。
為了達到這個目標,本文提出了一種基于VSTO和Subversion相結合的方法,利用VSTO建造智能表格實現用例的靈活操作,使辦公軟件和管理信息系統有機融合;另外,利用Subversion管理線下數據,可以實現版本化管理和數據的一致性,并且具備了便攜的特性,利用配置管理工具的安全策略可以在版本錯誤時恢復到之前任何一個保存點。
2.1 智能文檔與VSTO
傳統的電子文檔主要實現了文檔靜態的顯示和編輯,一些高級電子文檔產品可以實現更加豐富的功能,例如:文檔格式化展示、數據計算與統計表格、多媒體對象嵌入、目錄索引等等。但是,由傳統電子文檔編輯的數據是一個個信息的孤島并且是一些非格式化的數據。通過使用智能文檔,可以集成以上傳統電子文檔產品的所有優點,還能提供以下各種好處:
(1)以辦公軟件為主要處理工具;
(2)使文檔支持格式化的客戶數據以及操作行為,易于與業務邏輯相結合[1];
(3)可以通過網絡協議或通訊中間件進行遠程數據顯示和傳輸,使不同地點的數據能夠互聯共享。
本文中的智能文檔主要指的是智能表格,采用VSTO技術在Office Excel電子表格的基礎上擴展實現。
VSTO是一種高效可靠的實現智能文檔的技術,是微軟提出的內嵌于 Microsoft Visual Studio產品的解決方案,相對于其它實現智能表格的技術具有以下明顯優勢:
(1) Microsoft Visual Studio產品提供了大量控件,包括WinForm托管控件以及VSTO宿主控件;
(2)用戶也可以使用 Microsoft Visual Studio提供的所見即所得的設計方法快速搭建應用框架,縮短開發周期;
(3)支持使用各種托管代碼進行開發,如:Visual C#、Visual Basic.NET,可以利用程序員的編程經驗靈活選擇;
(4)可以集成.NET平臺上的各種解決方案實現豐富的功能,例如:ADO.NET數據訪問技術、WEBSERVI CE服務技術
2.2 配置管理工具與Subversion
配置管理工具是現代IT項目不可或缺的管理工具,它可被用于各種不同的場合和環境中,這些場合和環境對于數據和信息的處理提出了以下的要求:
(1)要求對數據和信息以及不同時間點作用在這些數據信息上的變更進行管理;
(2)要求對數據信息進行共享訪問,允許設置多個不同用戶從不同位置的計算機維護數據,允許多人在同一個數據集合上協作;
(3)提供一些專門的方法和工具來管理源代碼,例如:提供編譯工具。
其中,本文提出的應用是一個測試用例管理系統,所以不需要實現需求(3)。因此,采用Subversion作為實現線下測試用例數據協同維護的解決方案,Subversion是一款優秀的開源版本管理系統,它能夠滿足以上(1)和(2)的需求,并且可以通過SVNKit for JAVA和SharpSVN方便地在JAVA環境和.NET環境中集成Subversion的功能。
本文介紹的離線用例管理系統,相對于傳統的基于B/S架構的用例管理系統具有便于攜帶、無需網絡連線、適用于分布式作業的特點。它的主要功能點包括了:
(1)用例版本庫導出導入(架構圖中1和5);
(2)測試用例版本庫遷出、更新、提交(架構圖中2和4);
(3)導出線下庫用例到智能表格;
(4)維護測試用例;
(5)執行測試;
(6)提交測試數據到線下庫(架構圖中3)。
圖1是離線用例管理系統的架構示意圖,圖中顯示了離線用例管理系統的各個組成部分,以及該系統運行時的數據流。

圖1 系統架構圖
離線用例管理系統從物理架構上可以分成兩個層次:客戶端、服務器端。
3.1 服務器端
離線用例管理系統服務器端負責:(1)測試用例數據版本化;(2)測試用例數據分發,建立線下用例庫。
服務器端的組成部分:
(1)SVN Repository版本管理層。當用戶發起一輪測試后,用戶設計了一批測試用例,并提交到主系統用例庫,執行用戶需要將用例帶至測試現場線下環境中執行測試,這時需要從主系統用例庫中導出用例數據到SVN Repository中建立初始化基線版本,在測試過程中,根據需求的不同,可以對SVN Repository中的用例進行分發,將不同的用例分發到不同的地點進行分布式執行,這個過程可以選擇使用HTTP、 HTTPS、SVN等不同的網絡協議實現。
(2)線下用例數據庫層。線下用例數據庫層用來接收從SVN Repository的分發,分發過程結束后,系統用戶將線下用例數據庫層攜帶到各個線下測試地點再次進行分發,將測試用例分配到具體的測試人員。這次分發是由客戶端發起的,測試用戶從智能表格的功能區中選擇從線下庫抽取測試用例,智能表格通過向導的方式提示用戶選擇待執行的用例,這個過程可以通過局域網,使用ADO.NET連接線下用例數據庫實現。
服務器端的功能有:
(1)從主系統用例庫導出用例數據到SVN Repository版本庫;
(2)從SVN Repository版本庫遷出測試用例數據到線下庫;
(3)從SVN Repository版本庫更新測試用例數據到線下庫;
(4)從線下庫提交測試用例數據到SVN Repository版本庫;
(5)SVN Repository版本庫用戶身份驗證;
(6)SVN Repository版本庫記錄日志;
(7)SVN Repository版本庫版本對比;
(8)SVN Repository版本庫版本恢復;
(9)SVN Repository版本庫查看。
服務器端的開發技術有:SVNKit for JAVA、X ML、JDB C、A C CESS.
3.2 客戶端
離線用例管理系統客戶端用于線下測試執行,是本文論述系統的重點,它主要負責從離線庫抽取測試用例數據實現線下用例執行,并可以將執行記錄提交離線用例庫。在執行過程中可以實現用例的更新和補充。客戶端采用VSTO實現智能表格,利用智能表格實現業務規則校驗。通過ADO.NET技術從線下庫抽取測試用例數據,放到自動生成的測試用例模板中進行用例執行。
客戶端支持的功能有:
(1)從線下庫抽取測試用例數據到智能表格的測試用例模板中。用戶需要通過身份驗證才可以登錄到線下庫,然后可以使用系統用戶身份篩選用例并抽取需要執行的用例,將用例數據放置在智能表格中定制好的用例模板里;
(2)測試用例執行與輸入校驗。用例執行時,用戶將填寫測試用例中和執行相關的字段,如:執行結果、執行人、執行日期等,智能表格能夠根據用例模板的要求對用戶輸入數據進行合法性校驗,如不符合要求將在提交時以高亮和提示框進行提示用戶修正;
(3)增加新用例,用戶可以通過智能表格按照測試用例模板的要求新增用例,在執行的過程中對用例進行維護;
(4)修改用例屬性,用戶也可以通過智能表格修改已存在用例的屬性;
(5)測試結果提交線下庫,執行完成后,用戶可以利用智能表格的提交功能將用例模板中的執行記錄提交更新線下庫,線下庫將記錄用戶的執行結果。
客戶端的開發技術有:VSTO、ADO.NET、SharpSVN、X ML.
本節將配合部分重要功能點的數據定義描述在實現離線測試用例管理系統的過程中使用的關鍵技術點。
4.1 服務器端技術
服務器端技術主要運用在從主系統用例庫中提取用例和模板數據并實現版本化管理。從主系統用例庫中提取數據并版本化時運用X ML定義了版本化的數據結構;從版本庫中遷出并分發到線下庫時運用了JDB C批量操作A C CESS的技術。
(1)版本化數據結構定義
在對主系統用例庫數據進行版本化之前,首先需要采用結構化數據格式保存測試用例模板和測試用例,服務器端負責將主版本庫數據轉換成這種結構化數據并保存在SVN Repository中,即建立基線。實現格式化數據定義的方法有多種選擇,這里采用X ML進行定義。因為,它對于處理字符類型格式化數據有許多先天優勢,例如:它可以利用Schema實現數據合法性校驗,另外利用DOM、SAX、XPATH可以實現高效的維護、訪問和查詢操作。
用例模板將用例數據分為4個部分:模塊、用例信息、測試項信息和執行信息。每個字段(field)定義了唯一標識id以及名稱name。primarykey是用例的主鍵字段,要求在用例數據中具有唯一性。regularExp是用于校驗用例的正則表達式。這個X ML的結構可以使用template.xsd來定義。
測試用例X ML用來保存用例數據,每個用例都屬于一個template,需要由id來指定。每個template下面都可以定義若干用例,用例字段與template X ML中定義的字段對應,用例的數據合法性通過template中的regularExp來校驗。
(2)版本管理
版本庫操作包括了數據遷出、數據更新、數據提交等操作。根據主系統用例庫采用的技術,用戶可以相應地選擇使用SVNKit for JAVA或者SharpSVN分別開發面向JAVA的和 C#的版本庫客戶端。這兩個庫都提供了全面而強大的功能,使用戶可以在自己的程序中實現對SVN的各種操作。使用SVNKit for JAVA組件實現對SVN版本庫網絡協議的選擇和版本遷出以及數據提交和更新的操作。
(3)版本分發
版本分發是指從版本庫中遷出測試用例格式化數據并通過JDB C批量插入到各個線下A C CESS數據庫中的過程。它可通過JDB C的批量操作實現,在進行批量操作時通常用到PreparedStatement的addBatch和executeBatch操作,值得注意的是,為了保證性能的可靠和穩定,最好配合連接池技術和緩存處理技術,設置一個BufferSize,當達到這個Buffer-Size時就進行批量執行。
4.2 客戶端技術
離線用例管理系統的客戶端是客戶進行線下執行的主要途徑,需要具有便攜的特性,又要能夠進行業務規范的檢查。
(1)用戶界面實現
客戶端用戶界面采用VSTO的Excel插件(addin)定制化開發技術,創建一個Excel插件項目,并且在項目中增加一個功能區控件。插件可以使用戶為用戶自己的解決方案添加應用程序級別的功能,這意味著定制程序適用于任何用戶打開的文檔。功能區(Ribbon)是Office2007提供的一個新的UI功能,它可以取代傳統的菜單和工具欄,使最終用戶更容易找到他們需要的功能,因為這些功能根據相關性進行了分組[2]。
VSTO插件技術已經為用戶提供了一套完整的開發框架,當使用在 Microsoft Visual Studio 2010開發環境中選擇創建一個Excel2007外接程序項目后,Visual Studio自動為用戶建立項目模板以及引入必要的程序集。下面的代碼片段是Excel2007外接程序的入口類ThisAddIn,可從此類出發實現Excel的功能定制。
在運行插件時,ThisAddIn_Startup函數將被最先調用,可以在這里將Application對象靜態化,使用戶程序可以從自己的應用程序域中訪問到Application對象,這個對象的ActiveWorkbook屬性可以獲取活動工作簿的宿主對象。
工作區的開發是所見即所得的, Microsoft Visual Studio 2010為用戶提供了可視化設計器,用戶可以通過從工具箱中拖拽控件來實現工作區設計,并且可以通過在可視化設計器的控件上雙擊鼠標來為控件添加事件響應程序。

圖2 設計好的工作區
設計好的工作區包含了客戶端的功能按鈕,包括:登錄、網絡設置、導出導入用例數據。
(2)主要功能實現
客戶端的主要功能時幫助最終用戶完成線下測試用例執行,這由一系列操作步驟組成:
1)抽取測試用例模板數據。利用VSTO在Excel工作簿中創建一個工作表,并在工作表上創建一個測試用例模板。然后,從線下庫中抽取該模板下的測試用例,抽取功能可通過ADO.NET連接A C CESS數據庫實現。在使用VSTO開發Excel插件時,可以利用WinForm托管對象創建友好的向導界面。用例抽取后按照向導設置的格式顯示在一個Worksheet工作表中。
2)執行、新增、修改用例。在進行執行、新增、修改用例的操作時,用戶可以使用Excel電子表格提供的功能進行修改、新增和刪除等操作。在處理大量的測試數據時,Excel提供的拷貝區域,拖拽單元格、添加篩選等功能能夠有效提升處理效率。
3)用例數據有效性檢查。在執行完成,準備提交測試用例到線下庫之前,通過正則表達式對測試用例數據進行有效性檢查,正則表達式在模板X ML中由屬性regularExp定義。檢查過程中發現的不合法項,可以通過VSTO在Excel Worksheet中做標記。
4)將測試用例數據提交線下庫。與抽取相同,測試用例數據的提交也通過ADO.NET連接A C CESS數據庫實現。提交過程中,通過用例主鍵判斷線下庫中是否已存在這條記錄,從而決定需要做insert動作還是update動作。
本文提出了一種通過VSTO和Subversion相結合的方式實現的離線測試用例管理系統,它使用VSTO座橋梁,開發智能表格程序,利用Excel自有的強大的電子表格編輯功能簡化了測試用例的數據維護工作;利用便攜數據庫A C CESS集中管理線下數據,相當于在測試現場搭建了一個小型的輕量級的測試用例管理系統,使得測試用例得到分布式的管理;最后,又利用Subversion實現了多個測試單位在同一組測試用例數據集合上的協同與共享。本系統已經在中國移動測評中心提出并運用,它對電子、通信、智能交通、工業自動化、嵌入式設備等擁有分布式測試需求的行業領域有著重要的指導和借鑒意。
[1]梁琦,溫金超.智能文檔的研究與實現[J].科技創新導報,2009,(01):11-12。
[2]Mcgrath,Kathleen/Stubbs,Paul.VSTO for Mere Mortals:Addison-Wesley,2006.
Implementation of Test Case Management Based on VSTO and Subversion
Fang Youxuan Liu Jian Dong Yanqiu Zhu Changchuang
( China Mobile(Shenzhen)Limited.,Shenzhen 518000,Guangdong)
As an upgraded version of the 2005,Visual Studio 2010 provides a more powerful VSTO assemblies to make users access to extend office2010 application program.This paper expounds the method using VSTO technology and configuration management tools to manage the offline test cases,and expounds its breakthrough role in the application of offline test management.
VSTO;test management;test online;test offline
方有軒,男,江蘇連云港人,本科,研究方向:軟件開發。