`
yh_private
  • 浏览: 37783 次
  • 性别: Icon_minigender_1
  • 来自: 长春
最近访客 更多访客>>
社区版块
存档分类
最新评论

我们到底要怎样才能保持测试数据不变。

阅读更多
一. 数据不稳定,我们能否使用不稳定的数据来写测试?
由于我们的测试环境是基于开发数据库,所以数据经常有变化,尤其是统计功能,基本不能对其进行测试。
办法一:我们使用Spring-mock提供的事物来解决测试过程中出现的脏数据以及解决测试过程中会改变数据库状态。
问题一:由于使用Spring-mock在做测试的时候需要准备大量数据,比如对一个查询进行测试,这个查询关联两张表,就会出现如下场景:
对这两张表进行准备数据,new 出很多VO,将关联信息写在VO中,然后调用不同DAO进行持久,之后测试目标代码,如果得到相同结果测试通过。
这样需要在onSetUp方法中写很多VO的初始化代码。并且很多统计涉及的表并不止两张。造成初始化的工作量很大,导致大家不喜欢写测试。

方法二:就使用现有数据+Spring-mock。这样我们在插入、修改、删除操作时使用Spring_mock,统计或者查询的时候使用数据库中现有数据。
问题二:由于使用开发数据库中的现有数据进行测试,导致开发数据库中数据一旦更变就会出现测试跑不通的情况。程序员又要回来修改以前的测试代码,而且是因为数据库中数据变化导致错误。很影响程序员写测试的积极性。导致大家又不写测试了。

方法三:使用DBunit和Spring-mock进行测试。DBunit负责保证测试时数据不变,Spring-mock提供事物处理。
问题三:由于DBunit在团队中普及度并不是很高,如果使用需要培训。而且需要程序员自己去维护XML,虽然提供了导出的接口和方法,但维护起来相对比较麻烦,而且在进行单元测试时需要插入的数据太多,导致测试效率低下(一张表的单表维护大概要3倍以上的时间)。总之属于很耗费资源而且成本偏高。并且一但表结构改动,相关的测试数据需要重新维护一次。

方法四:使用TestDB+Spring_mock,TestDB保证本身数据不变化。培训成本为0。
问题四:如果使用TestDB来测试,如果表结构改变,就需要同步开发数据库以及测试数据库。如果进行了同步,相关的数据也会变化。导致测试失败。




以上是在我们测试的时候所遇到的一些问题,不知道大家都是如何解决测试数据不变问题的。简单总结过后发现自己心情好多,希望大家可以提供一些意见和方法。我们都是为了写出健壮的代码,正确的行为,获得重构的勇气。
加油!!!
分享到:
评论
3 楼 yh_private 2008-07-31  
郁闷,竟没人理偶,难道大家在做测试的时候都不会遇到上述问题?还是偶的问题太简单了呢?谁给冒个泡????
2 楼 yh_private 2008-07-29  
gigix 写道
yh_private 写道
方法四:使用TestDB+Spring_mock,TestDB保证本身数据不变化。培训成本为0。
问题四:如果使用TestDB来测试,如果表结构改变,就需要同步开发数据库以及测试数据库。如果进行了同步,相关的数据也会变化。导致测试失败。

其实看看Rails怎么做的就已经很明白了。


对于克隆数据库,JAVA方面可以使用DBunit。可是怎么解决表结构变化的呢?还是需要有人去维护。如果初始化数据比较多那初始化数据的代价比较高,通常是很花费时间。对于开发者一个测试要跑上20几秒是什么心情呢。
但主要还是没有办法应对变化。
对Rails的测试理解很肤浅,回去补课 
1 楼 gigix 2008-07-29  
yh_private 写道
方法四:使用TestDB+Spring_mock,TestDB保证本身数据不变化。培训成本为0。
问题四:如果使用TestDB来测试,如果表结构改变,就需要同步开发数据库以及测试数据库。如果进行了同步,相关的数据也会变化。导致测试失败。

其实看看Rails怎么做的就已经很明白了。

相关推荐

    软件测试网络文章集合

    应有一个良好的工作计划,对测试用例及测试的数据要有做良好规划,使测试有章可循,我认为软件测试就是在受控制的条件下对系 统或应用程序进行操作并评价操作的结果。 软件测试是整个软件开发过程中一段非常重要的...

    .net 按照word模板替换制定内容 含图片 保留格式不变

    .net 按照word模板替换制定内容,含图片,保留格式不变,附件是代码 可以直接使用,测试通过,如果不能运行 可以安装Office组件

    JESD22-A117C

    数据保持测试:数据保持测试是为了评估 EEPROM 存储器芯片在长期存储数据时的性能。这个测试会在编程后的一段时间内(通常是数年或更长时间)检查 EEPROM 中的数据是否能够保持不变。这有助于确定 EEPROM 芯片在非...

    硬件工程师面试题集

    Time)是指触发器的时钟信号上升沿到来以前,数据能够保持稳 定不变的时间。输入数据信 号应提前时钟上升沿(如上升沿有效)T 时间到达芯片,这个T 就是建立时间通常所说的 SetupTime。如不满足 Setup Time,这个数据就...

    常见的硬件笔试面试题目1

    如果不满足建立和保持时间的话,那么DFF将不能正确地采样到数据,将会出现metastability的情况。 如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量...

    硬件工程师面试试题集.rar

    不能被这一时钟打入触发器,只有在下一个时钟上升沿到来时,数据才能被打入 触发器。保持时间(Hold Time)是指触发器的时钟信号上升沿到来以后,数据保 持稳定不变的时间。如果Hold Time 不够,数据同样不能被打入...

    硬件工程师面试试题集

    不能被这一时钟打入触发器,只有在下一个时钟上升沿到来时,数据才能被打入 触发器。保持时间(Hold Time)是指触发器的时钟信号上升沿到来以后,数据保 持稳定不变的时间。如果Hold Time 不够,数据同样不能被打入...

    硬件工程师经典笔试题集锦30页.pdf

    如不满 足 Setup Time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿到来时,数据才能被打 入 触发器。保持时间(Hold Time)是指触发器的时钟信号上升沿到来以后,数据保持稳定不变的时间。如 果 ...

    常见电子类硬件笔试题整理(含答案)

    如不满足setup time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器。 保持时间是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。如果hold time不够,数据同样不能被...

    listView 联动 同步实现

    为了实现以上功能,我测试写了许多事件,尝试在各大国内论坛、博客查询相关帖子,皆不能满足需求。 最后,换个思路,用三个listview实现该功能,同时通过联动来同步滑动过程中的同步,最终实现了需求,也花费了...

    单片机系统RAM故障的几种测试方法介绍

    在地址信号为全O的基础上,每次只使地址线Ai的信号取反一次,同时保持其他非检测地址线Aj(i≠j)的信号维持0不变,这样从低位向高位逐位进行;接着在地址信号为全1的基础上,每次只使地址线Ai的信号取反一次,同

    电子类各大公司的笔试题

    保持时间是指时钟跳变边沿后数据信号需要保持不变的时间。如果不满足建立和保持时间的话,那么DFF将不能正确地采样到数据,将会出现 metastability的情况。如果数据信号在时钟沿触发前后持续的时间均超过建立和保持...

    数据结构——利用 Stack类 为其设计外部函数 delete_all功能

    void delete_all(Stack<T> &s, const T &x)——删除栈s中所有等于x的数据项,保持其他数据项顺序不变。 输入:input.txt,其第一个字符为x,其后按栈底到栈顶的顺序依次给出栈中字符,字符间用空格、回车或制表符...

    fpga 面试题

    如不满足setup time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器. 保持时间是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间.如果hold time 不够,数据同样不能被打入...

    OK3W文章系统数据迁移至天人文章系统工具ACCESS数据库SEO版 v1.1.rar

    * 迁移至天人文章管理系统后请先测试数据完整、统一之后再正式上线使用 * 会员数据迁移后使用会员的email的账号(@之前的字符,不足5位前面补数字0,例如pp@163.com,则000pp是密码,又例如petty@163,则petty是...

    片机课程设计温度测试系统设计.doc

    定义一个保持按键,当按下该键时 ,将当前的测试值保持不变(按键不动作时为正常测量显示)。温度显示格式为:XXX 。 温度测量范围为:20~100 二 系统设计 2.1 硬件设计 2.1.1总体设计框图: 根据课题,温度采集部分...

    单片机课程设计-温度测试系统设计.doc

    定义一个保持按键,当按下该键时 ,将当前的测试值保持不变(按键不动作时为正常测量显示)。温度显示格式为:XXX 。 温度测量范围为:20~100 二 系统设计 2.1 硬件设计 2.1.1总体设计框图: 根据课题,温度采集部分...

    excell表格合并工具-office表格合并工具-wps表格合并工具-表格合并代码及示例(python)

    这是一个表格合并的工具(代码),可以合并office生成的、以及wps生成的表格,合并后表格还能保持原来的格式(包括字体、颜色等)。使用场景是:老师给每个学生发了一个表格样板,这个表格具有一样的表头和格式,让...

    易和阳光购物商城 v1.1a Bulid 090413 Access.rar

    第2步: 用CuteFTP或LeapFTP上传软件上传所有解压缩后的文件及文件夹到您的网站空间根目录下(原样目录结构请保持不变); 第3步: 请在网页浏览器地址栏内输入网店后台地址:http://这里是您的网站域名/admin/ 后台...

    数据结构课程设计----通讯录管理系统.doc

    5)测试数据 姓名1:smj 电话1:123 QQ:123 邮箱:123@163.com 姓名2:yyf 电话2:456 QQ:456 邮箱:456@163.com 姓名3:vigoss 电话3:789 QQ:789 邮箱:789@163.com 修改用:姓名:cold 电话:1 QQ:1 邮箱:1@163.com 三、概要...

Global site tag (gtag.js) - Google Analytics