在Visual Studio 2010中生成测试数据的简便方法

在Visual Studio 2010中主要是通过使用Database Edition模块来生成有意义的数据用户测试应用程序。在实际工作中,程序开发人员可以从现有的数据源生成数据。如根据一份销售定单的历史记录来扩充数据,也可以让系统自动生成随机数据等等。在数据生成的过程中,可以从多个角度对于生成的数据进行控制,以满足应用程序测试的需要。具体的来说,可以从如下几个方面来对需要生成的测试数据进行控制。
一、为测试数据指定对应的表。

  测试数据同其他数据一样,也需要保存在数据库对应的表中。所以在生成测试数据的时候,首要的一个任务就是为需要产生的测试数据设置关联的数据表。简单的说,就是说即将要生成的数据保存在哪一张表中。在实际测试的时候,这一步非常的重要。因为从保持数据库干净的角度来将,在应用程序测试的时候不是为所有的表产生测试数据。否则的话,以后清除这些垃圾数据会非常的不方便。所以总是为需要用到的表产生测试数据。

  另外需要注意的是,在为特定的表产生测试数据的时候,仍然需要受到以下几个限制。如指定的表中如果含有其他表中列的外键。那么如果需要为具有外键的表生成数据,则还必须为该键引用的表生成数据。简单的说,在生成测试数据的时候也受到外键的限制。再如,如果某些表具有禁止删除操作的触发器,则如果需要删除这些表中的行,那么这个触发器会回滚删除的操作。也就是说,测试数据很难删除。通常在这种情况下,程序开发人员在后续清除测试数据的时候,可能需要先禁用触发器。

  总之一句话,即使产生的是测试数据,但是实际上最终结果都是保存在数据库中。所以说在产生测试数据的时候,仍然需要受到数据库的种种规则限制。

  二、可以控制需要产生数据的行数。

  在生成测试数据的时候,程序开发人员还可以设置需要产生数据的行数。出于测试的需要,有时候可能只需要10多条记录即可。可是在某些特定的情况下,如测试报表的运行速度,则可能需要上万条的测试记录。在Visual Studio,程序开发人员就可以根据实际测试的需要,生成任意条测试用的记录。

  主要有两种方法来为表指定需要生成记录的行数,分别为绝对法与相对法。绝对法就是指在产生测试记录的过程中手工的指定需要产生记录的行数。利用专业术语就是说采用硬编码数字形式来设置要生成的行数。不过在有些特殊的情况下,可能需要采用相对的方法。如在测试采购模块的时候,有一张供应商表与采购定单表。其中在供应商表中生成10条测试记录,而需要给每个供应商设置3张采购定单。此时采购定单表中的记录就需要根据供应商表中的记录数量来生成。此时就需要根据相对法。相对法就是指相对于在另一个表中所生成记录数的比率来生成测试记录。这种情况在实际工作中经常碰到。如一个客户可能同时存在多个送货地址。此时在测试应用程序的时候,就需要根据客户表中记录的数量在客户送货地址表中产生若干条测试数据(如一个客户对应三个送货地址等等),以方便对这个功能的测试。

  在绝对法与相对法的帮助下,程序开发人员就不用手工的确定需要生成记录的行数,或者重复的一条条的生成。特别是在多个表之间如过存在关联的话,那么通过相对法来生成所需要的测试数据,将会非常的便捷。

三、可以控制为哪些列生成数据。

  在生成测试数据的时候,还可以根据实际情况指定为哪些列产生测试用的临时数据。在实际工作中,在测试用的表中可能会有一些大容量的数据类型。对于这些列是否有产生测试数据呢?这程序开发人员可以根据自己的需要来考虑。笔者的建议是,如果产生的记录数比较少,如只有几十条,那么生成也无所谓。但是如果产生的记录行数比较多,如有成千上万条,那么最好还是不要生成的好。因为此时生成测试数据时由于这些字段的影响,会耗费比较成的时间。所以在生成测试数据的时候,可以指定不为某些列、或者只为哪些列生成数据。

  除此之外,在为数据生成指定具体列的时候,需要注意一些限制条件。如在指定表中如果设置了主键,那么必须为主键列生成数据。如果某个列设置为不能为空,那么必须要为其产生数据。不过如果非空列或者关键字列已经设置了默认值,那么可以不指定。让数据库自动用默认值填充。其实这跟在数据库中插入数据的规则一样。Visual Studio在这里的作用就只是产生测试用的数据,然后由数据库利用插入语句负责将数据保存在数据库对应的表中。在2010的版本中,对于NULL列的测试数据做了一个补充。如现在某个列设置为允许为空。而开发人员出于测试的需要,想这个字段一半为空,一半不为空。或者说一个具体的比率。此时程序开发人员就可以在该列的属性中设置“NULL百分比”属性,指定需要填充数据的百分比。应用程序就会根据指定的值,随机的为记录填充数据。

  四、预览数据以判断即将产生的测试数据是否满足要求。

  当以上规则定义好之后,就可以产生测试的数据。有些程开发人员可能比较细心,想要在数据库中保存数据之前,先要查看一下数据,以判断是否按照开发人员的要求产生相关的数据。此时管理员就可以使用预览数据的功能查看实际生成的测试数据。注意通过预览数据功能产生的测试数据还没有最终保存在数据库中,而是保存在内存中。

  不过这里需要注意一个问题。即在预览数据的时候,并不会考虑到数据库中的相关约束。也就是说,即使预览数据是成功的,也并不一定能够保证将这些数据成功保存在数据库中。如现在开发人员指定一张表,而这张表中有非空的约束,并且没有指定默认值。而在设置规则的时候,没有为这个字段指定要生成数据。此时在预览数据的时候是可以的,因为此时还没有跟数据库进行关联。而真正的要将这些测试数据保存到数据库的时候,就会插入不了。因为违反了数据库的唯一性约束。类似的,如果数据类型不符或者数据长度不够等等,可以成功预览数据,但是却无法保存到数据库中。故在预览数据的时候,还需要判断一下,是否有违反数据库表的相关约束;或者说对应的数据类型与长度是否相符等等。

  总之,采用这个测试数据生成器,再配合这些丰富的控制规则,可以在最大程度上满足程序员程序测试的需要。在最短的时间内产生需要的测试数据。最后需要提醒的一句是,为了保证数据库或者应用程序在投入使用之前能够保证将垃圾数据清除干净,在生成数据的时候最好还是为局部的表生成的为好。而不要为整个数据库一次性生成。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13129063/viewspace-619816/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13129063/viewspace-619816/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值