《计算机模块化软件系统中实现自动化单元测试的方法.pdf》由会员分享,可在线阅读,更多相关《计算机模块化软件系统中实现自动化单元测试的方法.pdf(17页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103106137 A(43)申请公布日 2013.05.15CN103106137A*CN103106137A*(21)申请号 201110362132.5(22)申请日 2011.11.15G06F 11/36(2006.01)(71)申请人上海宝康电子控制工程有限公司地址 201901 上海市宝山区杨行工业园区锦富路298号(72)发明人党海生 余永桂 赵昕(74)专利代理机构上海智信专利代理有限公司 31002代理人王洁(54) 发明名称计算机模块化软件系统中实现自动化单元测试的方法(57) 摘要本发明涉及一种计算机模块化软件系统中实现自动化单元测试的方法,其。
2、中包括:新建测试项目方案、添加第一测试程序集命名及第一测试类、在第一测试程序集中添加引用及动态链接库、添加第二测试程序集命名及第二测试类、在第二测试程序集中添加引用、添加持久化类、添加第三测试程序集命名及映射文件、在配置文件中加入测试配置信息、添加引用并将数据库驱动程序加入第二测试程序集和第一测试程序集中、产生测试用例、在第二测试程序集中添加测试用例所对应的类代码、编译测试项目方案并运行得到测试结果。采用该种自动化单元测试的方法,使得功能更完善、保证代码质量、可维护性和可扩展性,操作过程快捷方便,性能稳定可靠,适用范围较为广泛。(51)Int.Cl.权利要求书1页 说明书12页 附图3页(19。
3、)中华人民共和国国家知识产权局(12)发明专利申请权利要求书1页 说明书12页 附图3页(10)申请公布号 CN 103106137 ACN 103106137 A1/1页21.一种计算机模块化软件系统中实现自动化单元测试的方法,其特征在于,所述的方法包括以下步骤:(1)系统新建测试项目方案;(2)系统在该测试项目方案中添加新的第一测试程序集命名,并添加相应的第一测试类;(3)系统在该第一测试程序集中添加引用,加入动态链接库;(4)系统在该测试项目方案中添加新的第二测试程序集命名,并添加相应的第二测试类;(5)系统在该第二测试程序集中添加引用;(6)系统添加持久化类;(7)系统在该测试项目方案。
4、中添加新的第三测试程序集命名,并添加所映射的文件;(8)系统在该测试项目方案的配置文件中加入测试配置信息;(9)系统在该测试项目方案中添加引用,并将数据库驱动程序加入第二测试程序集和第一测试程序集中;(10)系统产生测试用例;(11)系统在第二测试程序集中添加测试用例所对应的类代码;(12)系统编译该测试项目方案,并进行运行,得到测试结果。2.根据权利要求1所述的计算机模块化软件系统中实现自动化单元测试的方法,其特征在于,所述的动态链接库为NUnit.Framework.dll动态链接库。3.根据权利要求1所述的计算机模块化软件系统中实现自动化单元测试的方法,其特征在于,所述的第二测试程序集为。
5、会话管理器SessionManage。4.根据权利要求3所述的计算机模块化软件系统中实现自动化单元测试的方法,其特征在于,所述的第二测试类为会话工厂SessionFactory。5.根据权利要求1所述的计算机模块化软件系统中实现自动化单元测试的方法,其特征在于,所述的添加持久化类,包括以下步骤:(61)在数据库中定义表结构和相应的字段名称和字段类型;(62)系统将该表结构生成相应的映射类。6.根据权利要求1至5中任一项所述的计算机模块化软件系统中实现自动化单元测试的方法,其特征在于,所述的模块化软件系统为交通管理平台软件系统。权 利 要 求 书CN 103106137 A1/12页3计算机模块。
6、化软件系统中实现自动化单元测试的方法技术领域0001 本发明涉及计算机软件领域,特别涉及模块化软件系统测试技术领域,具体是指一种计算机模块化软件系统中实现自动化单元测试的方法。背景技术0002 城市交通管理平台如今越来越强大,功能也越来越多,并且给城市道路交通带来了方便和快捷,在城市交通管理平台中单元测试起了重大的作用,测试质量的提高,平台的实用性,可靠性,准确性就有了保障。0003 同样在测试质量中单元测试起到了地基性的作用,有了坚固地基,才能盖起高质量的高楼大厦,单元测试就是在交通管理平台最初开发编写时进行测试的一个阶段,就好比我们在建造一所高楼时,已经打好地基,我们要进行反复测试该地基是。
7、否可以使用,并没有安全隐患,并且盖好后是否可以支撑一定高度的楼层,同样,单元测试在平台开发编写时反复测试一个编写好的模块,是否有Bug,并保证这个模块能支撑起城市交通管理平台的大厦。0004 在没有单元测试的时代,开发者大多数的错误都是通过操作交通管理平台页面的时候发现的。当发现一个错误的时候,会根据异常抛出的地点来确定是哪段代码出现了问题。但是大多数时候,开发者不会所有方法中都使用Try块去处理异常(这一也是低效的)。因此一旦发现一个异常通常都是最顶层代码抛出的,但是错误往往又是在底层很深层次的某个对象中出现的。当开发者找到了这个最初抛出异常的方法的时候,可能无法得知这段代码到底是哪里出了问。
8、题。只能逐行代码的去查找,一旦这个方法中使用的某个对象在外部有注册事件或者有其他的操作正在与当前方法同步进行,那么就更难发现错误真正的原因了。发明内容0005 本发明的目的是克服了上述现有技术中的缺点,提供一种能够有效验证代码的行为和开发者所期望的一致、保证代码质量和可维护性及可扩展性、操作过程快捷方便、工作性能稳定可靠、适用范围较为广泛的计算机模块化软件系统中实现自动化单元测试的方法。0006 为了实现上述的目的,本发明的计算机模块化软件系统中实现自动化单元测试的方法如下:0007 该计算机模块化软件系统中实现自动化单元测试的方法,其主要特点是,所述的方法包括以下步骤:0008 (1)系统新。
9、建测试项目方案;0009 (2)系统在该测试项目方案中添加新的第一测试程序集命名,并添加相应的第一测试类;0010 (3)系统在该第一测试程序集中添加引用,加入动态链接库;说 明 书CN 103106137 A2/12页40011 (4)系统在该测试项目方案中添加新的第二测试程序集命名,并添加相应的第二测试类;0012 (5)系统在该第二测试程序集中添加引用;0013 (6)系统添加持久化类;0014 (7)系统在该测试项目方案中添加新的第三测试程序集命名,并添加所映射的文件;0015 (8)系统在该测试项目方案的配置文件中加入测试配置信息;0016 (9)系统在该测试项目方案中添加引用,并将。
10、数据库驱动程序加入第二测试程序集和第一测试程序集中;0017 (10)系统产生测试用例;0018 (11)系统在第二测试程序集中添加测试用例所对应的类代码;0019 (12)系统编译该测试项目方案,并进行运行,得到测试结果。0020 该计算机模块化软件系统中实现自动化单元测试的方法中的动态链接库为NUnit.Framework.dll动态链接库。0021 该计算机模块化软件系统中实现自动化单元测试的方法中的第二测试程序集为会话管理器SessionManage。0022 该计算机模块化软件系统中实现自动化单元测试的方法中的第二测试类为会话工厂SessionFactory。0023 该计算机模块化。
11、软件系统中实现自动化单元测试的方法中的添加持久化类,包括以下步骤:0024 (61)在数据库中定义表结构和相应的字段名称和字段类型;0025 (62)系统将该表结构生成相应的映射类。0026 该计算机模块化软件系统中实现自动化单元测试的方法中的模块化软件系统为交通管理平台软件系统。0027 采用了该发明的计算机模块化软件系统中实现自动化单元测试的方法,由于单元测试在整个的模块化软件系统测试过程中是最基本的测试,而且单元测试是相对廉价而简单的技术,从而能够证明某段代码的行为和开发者所期望的一致,而且使得代码更加完美、功能更完善、保证代码质量、保证代码的可维护性和可扩展性,使得操作过程快捷方便,工。
12、作性能稳定可靠,适用范围较为广泛。附图说明0028 图1为本发明的计算机模块化软件系统中实现自动化单元测试的方法的流程示意图。0029 图2为本发明的计算机模块化软件系统中实现自动化单元测试的方法的测试缺陷结果示意图。0030 图3为本发明的计算机模块化软件系统中实现自动化单元测试的方法的测试通过结果示意图。0031 图4为本发明的计算机模块化软件系统中实现自动化单元测试的方法中没有添加程序集Model时出错结果示意图。说 明 书CN 103106137 A3/12页50032 图5为本发明的计算机模块化软件系统中实现自动化单元测试的方法中没有添加Npgsql驱动程序时出错结果示意图。具体实施。
13、方式0033 为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。0034 单元测试是代码正确性验证的最重要的工具,也是交通管理平台测试当中最重要的环节。也是唯一需要编写代码才能进行测试的一种测试方法。在标准的开发过程中,单元测试的代码与实际程序的代码具有同等的重要性。每一个单元测试,都是用来定向测试其所对应的一个单元的数据是否正确。0035 请参阅图1至图5所示,该计算机模块化软件系统中实现自动化单元测试的方法,其主要特点是,所述的方法包括以下步骤:0036 (1)系统新建测试项目方案;0037 (2)系统在该测试项目方案中添加新的第一测试程序集命名,并添加相应的第一测试类;003。
14、8 (3)系统在该第一测试程序集中添加引用,加入动态链接库;该动态链接库为NUnit.Framework.dll动态链接库;0039 (4)系统在该测试项目方案中添加新的第二测试程序集命名,并添加相应的第二测试类;该第二测试程序集为会话管理器SessionManage,该第二测试类为会话工厂SessionFactory;0040 (5)系统在该第二测试程序集中添加引用;0041 (6)系统添加持久化类,包括以下步骤:0042 (a)在数据库中定义表结构和相应的字段名称和字段类型;0043 (b)系统将该表结构生成相应的映射类;0044 (7)系统在该测试项目方案中添加新的第三测试程序集命名,并。
15、添加所映射的文件;0045 (8)系统在该测试项目方案的配置文件中加入测试配置信息;0046 (9)系统在该测试项目方案中添加引用,并将数据库驱动程序加入第二测试程序集和第一测试程序集中;0047 (10)系统产生测试用例;0048 (11)系统在第二测试程序集中添加测试用例所对应的类代码;0049 (12)系统编译该测试项目方案,并进行运行,得到测试结果。0050 同时,该计算机模块化软件系统中实现自动化单元测试的方法中的模块化软件系统为交通管理平台软件系统。0051 在实际使用当中,在一个城市交通管理平台中,本发明可以做许多各式各样的测试,而且这些测试也是必须的。其中的某些测试需要用户大量。
16、参与;而某些则需要有专门的质量保证小组来进行;或者需要其他的一些昂贵资源。0052 单元测试在整个的交通管理平台测试过程中是最基本的测试,它是交通管理平台的成功,个人成功的一个不可或缺的部分,但对它,人们却又存在各式各样的误解。单元测试其实是相对廉价而简单的技术,但它能让你更高效地写出质量更好的代码。说 明 书CN 103106137 A4/12页60053 应用单元测试方法的好与坏直接影响到交通管理平台的质量,可能就是由于代码中的某一个小错误就导致了整个平台的质量降低一个指标,或者导致更严重的后果,如果我们应用好单元测试方法这种情况是可以完全避免的。0054 运行单元测试方法,是为了证明某段。
17、代码的行为和开发者所期望的一致。0055 所以单元测试方法的最终目的是令代码更加完美,功能更完善。保证代码质量。保证代码的可维护。保证代码的可扩展。0056 利用NHibernate进行数据库的增删改操作为例,本发明刚开始新建了一个程序集用来编写测试用例,在此程序集中建了一个类,具体如下:0057 (1)新建解决方案,命名为:NHibernateTest。0058 (2)在这个解决方案中添加新的程序集命名为DateUpdateTest并添加类DataTest。0059 (3)在这个程序集中添加引用,将NUnit.Framework.dll添加进来。并写入如下代码:0060 0061 0062 。
18、(4)本发明进行编译,会出错说:当前上下文中不存在名称” SessionFactory”,因为并没有建SessionFactory类。添加新程序集命名为SessionManage,并添加新类命名为说 明 书CN 103106137 A5/12页7SessionFactory。代码如下:0063 0064 0065 并添加NHibernate的引用。0066 (5)我们重新生成然后打开单元测试方法测试工具,打开文件-打开项目,将我们刚刚生成的DateUpdateTest.dll添加进来点击运行按钮。发现错误,请参阅图4所示,出错原因是我们还没有添加程序集Model即持久化类。0067 (6)添加。
19、持久化类,我在数据库定义了一个Student表,字段为id,name,sex.其说 明 书CN 103106137 A6/12页8中id为int型,name和sex为varchar类型。将这个表用工具生成映射类。0068 (7)新添加一个程序集命名为Model.将映射成的文件添加进来。0069 0070 选择Student.hbm.xml的属性中生成操作改为嵌入的资源。0071 (8)重新生成解决方案,并用单元测试方法重新测试发现得到了红色的条,发现出错了。原来还没有加入NHibernate的配置信息(当使用NHibernate时,需要在项目的配置文件中加入NHibernate的配置信息)。0。
20、072 0073 本发明将配置信息命名为App.config添加到程序集SessionManage中和程序集DateUpdateTest中,在进行测试。出现了相应的错误,具体请参阅图5所示。0074 其原因是没有添加Npgsql驱动因为用的是Postgres数据库所以添加引用将说 明 书CN 103106137 A7/12页9Npgsql驱动加入SessionManage程序集中和DateUpdateTest程序集中。0075 (9)重新生成解决方案,打开单元测试方法测试工具点击运行,已经变绿了,表明通过了,这就说明本发明中所编写的NHibernate没有问题了,但还得编写几个测试用例测试一下。0076 (10)编写插入数据测试用例,删除测试用例和更新测试用例。本发明在DataTest类中继续写入一下测试用例:0077 0078 说 明 书CN 103106137 A8/12页100079 重新生成解决方案编译没有通过,提示:当前上下文中没有存在NHibernateUtils。原来我们还没有编写NHibernateUtils类,在SessionManage程序集中添加新建类命名为NHibernateUtils,下面是NHibernateUtils类的代码:0080 说 明 书CN 103106137 A10。