基于VSTO和Subversion实现的测试用例管理应用
2014-03-13方有轩董燕秋朱昌创
方有轩 刘 建 董燕秋 朱昌创
(中国移动(深圳)有限公司,广东 深圳 518000)
基于VSTO和Subversion实现的测试用例管理应用
方有轩 刘 建 董燕秋 朱昌创
(中国移动(深圳)有限公司,广东 深圳 518000)
Visual Studio 2010作为2005的升级版本提供了功能更加强大的VSTO程序集,使用户具备了扩展Office2010应用程序的能力。本文旨在阐述利用VSTO技术和配置管理工具来实现测试用例的离线管理方法,以及该方法在大范围线下测试管理应用环境中所起到的突破作用。
VSTO;测试管理系统;线上测试;线下测试
1.概述
测试用例管理作为现代化测试管理系统的重要组成部分,在测试过程中起着举足轻重的作用。人们可以利用用例管理系统集中录入、集中共享、智能查询、统计查询等功能实现将分布于不同地理位置的线下工作成果整体提交,并进行集中化管理,从而提高了测试设计过程的规范性,查找复用的便利性,协同工作一致性,并可以实现对测试进行全面而准确的评估。
传统的测试管理系统多采用B/S架构,用户可以在互联网环境下使用浏览器访问系统进行常规的测试工作,但是对于电子、通信、智能交通、工业自动化、嵌入式设备等行业软硬件进行测试时,测试用户的工作环境多处在不能联网的状态,一般需要将测试用例和数据携带到现场进行线下测试,并且在执行的过程中时常需要对用例库进行维护操作,例如补充和修改用例。这时,会造成测试用例在线下测试环境中的管理混乱,出现用例版本不一致、数据冗余、测试遗漏、重复执行、难以协同、无法随时了解测试进展等诸多问题。因此,在此基础之上,测试用户仍希望能够在线下环境中通过方便灵活的方式实现对测试用例的管理,并能够在测试完成后将结果同步到线上数据库中。
为了达到这个目标,本文提出了一种基于VSTO和Subversion相结合的方法,利用VSTO建造智能表格实现用例的灵活操作,使办公软件和管理信息系统有机融合;另外,利用Subversion管理线下数据,可以实现版本化管理和数据的一致性,并且具备了便携的特性,利用配置管理工具的安全策略可以在版本错误时恢复到之前任何一个保存点。
2.基本概念
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的功能。
3.离线用例管理系统的结构与功能
本文介绍的离线用例管理系统,相对于传统的基于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.实现的关键技术
本节将配合部分重要功能点的数据定义描述在实现离线测试用例管理系统的过程中使用的关键技术点。
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动作。
5.结束语
本文提出了一种通过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
方有轩,男,江苏连云港人,本科,研究方向:软件开发。