Date_Time类型字段记录Entity关于时间方面的信息,是一种必不可少的类型,然而,Date_Time类型字段若不谨慎设计,有时候会带来意想不到的Bug。下面说一下我所遇到的Bug。
Schema中主Entity叫Issue,Issue有一个Date_Time类型的字段叫submitDate,用于记录提交Issue的时间。我们有一条业务规则是Issue必须在某个截止时间之前一周提交,如果小于一周则必须使用下一个截止时间。Schema上线后部门主管找我们说这条规则没有正确实现,因为发现了提交时间距截止时间小于一周的Issue。然而测试表明无法提交这样的Issue,出现这样的Issue令我们百思不得其解。后来,经过与用户的交流,原因才真相大白。最初我们的Schema是这样设计的,在defaultValue hook中确定submitDate的Value,在submit action的validation hook中验证submitDate的value。这样设计看起来似乎没有什么问题,然而有些用户创建好Issue后并不马上提交,甚至会等到第二天再提交,这样问题就出来了,对于这些迟迟没有提交的Issue,validation hook验证submitDate的Value时submitDate的值与当前时间相比已过去了相当长的时间,这就造成了不符合规则的Issue的出现。找到原因后修改了Schema才修正了这个Bug。
像刚才这种Bug只是Schema设计者的问题,有经验后就不会再犯了。然而,由CQ没有提供获取当前时间的API而造成的Bug很难通过Schema修复。下面我再说一个所经历的比较离奇的Bug。
有一个脚本负责将CQ中Issue的改动同步到另外一个系统,后来发现经常遗漏数据,即某些改动没有被同步。我们的设计是这样,脚本每十分钟运行一次,将上次同步之后发生的改动同步到另外一个系统,同步的依据是Issue的ChangeLog中记录的时间。检查脚本的Log发现,遗漏的改动没有出现在查询结果中,而重新运行Log记录的查询却能找到这些遗漏的ChangeLog。这种匪夷所思的现象令我们非常困惑,难道用脚本运行查询与我们手动运行查询会不一样么?直觉与随后的验证都告诉我们这种猜想不正确。重新审查脚本,没有找到任何错误。然而遗漏数据的现象还是接二连三的出现,万般无奈下只好再写一个核对脚本,一旦发现遗漏就手动补齐。后来在一个偶然的机会才找到原因,当时正在测验另外一套系统,无意间发现有一笔Issue的ChangeLog非常奇怪,即ChangeLog中记录的时间与ChangeLog生成的顺序不一致,后生成的ChangeLog记录的时间反而早于先生成的ChangeLog。这个奇怪的现象令我立即想到了同步脚本所遇到的麻烦,经过推理验证后确定原因就在这里。由于CQ没有提供获取当前时间的API,我们只好用perl脚本获取,而这个时间是运行CQ的服务器上的时间,并不能保证就是标准时间。我们的CQ运行在多台服务器上,这些服务器中恰好有一台的时间比其他服务器慢五分钟,这就导致了遗漏数据的发生。确定原因后让IT修正了时间,Bug就解决了,然而我们却不敢撤掉核对脚本,因为不敢保证今后服务器的时间不会再发生异常。
其实产生这个Bug最根本的原因是CQ没有提供获取当前时间的API,这项缺失还为某些员工提供了弄虚作假的可能性,而且很难阻止与检测。QA部门对于同一条Bug最先提出的Issue纳入绩效考核,但其余的不予考虑,所以QA部门内的同事都积极争取Bug的第一提交权。问题是Issue的提交时间记录在submitDate这个字段,无论如何设计Schema无法保证这个字段的时间记录的就是标准时间。如果不幸某个同事了解到这种缺陷,那他就可以通过调整机器上的时间欺上瞒下,即把自己机器的时间往前调,这样他即使不是第一个提交的Issue,然而根据Issue的submitDate计算他仍是最先提交的。这个Bug也不是没有办法解决,但一是没有发现有人这样做,二是解决这个Bug有点得不偿失,所以一直随之任之。
为了减少Schema设计者的麻烦,IBM的Rational团队应该给ClearQuest增加一个获取当前时间的API,否则这种麻烦会继续困扰着CQ的开发维护人员。
分享到:
相关推荐
Rational的ClearQuest就是其中比较强大的一种缺陷跟踪工具。ClearQuest类似一个开发平台,可以很方便的配置各种需要的选项。 我这里单纯的把CQ用于缺陷管理,其实有些浪费了。在Rational的套件中,ClearQuest应该是...
ClearQuest_中文使用说明书.doc
IBM Rational ClearQuest是一个缺陷和变更追踪系统,组织和自动化处理与提交、分配、追踪、测试和发布变更请求相关的过程。Eclipse是一个可扩展的平台,其为工具集成提供了一个媒介。ClearQuest的Eclipse插件使你...
ClearQuest基本使用手册,适合初学者对CQ工具的了解和使用
Rational Clearquest 基本使用
很多大公司现在都用ClearQuest,ClearCase管理代码版本和BUG。资源是公司内部关于ClearQuest,ClearCase的操作使用指南,对使用ClearQuest,ClearCase有很好的指导意义
ClearQuest的配置方法
Rational ClearQuest操作手册.pdf
自己亲自测试安装,历时1周时间,IBM rational ClearQuest 8 最详细的安装步骤文档。参考无数网上资料,分类加工整理。数据库采用oracle。
clearcase clearquest集成使用指南 1 ClearCase和ClearQuest的集成 4 2 集成过程 4 2.1 创建CQ Enabled Project 4 2.2 设置策略 6 2.3 关联活动 7 2.4 在ClearQuest界面执行ClearCase的一些操作 9 2.5 如何取消...
Rational ClearCase是一个业界领先的软件配置管理工具,Rational ClearQuest则是IBM Rational在变更管理和缺陷跟踪方面的软件。业界对于变更管理软件和配置管理软件的集成有着强烈的需求,因此IBM Rational也提供了...
Clearquest是Rational开发的一种缺陷跟踪工具,它类似一个开发平台,可以很方便的配置各种需要的选项,用于对缺陷的提交、处理以及统计。它最显著的优点是可以对缺陷和记录的变化进行跟踪管理,体现了一个缺陷的完整...
IBM提供的官方API 包含多种实体,支持VBS 以及PEAR脚本开发
软件配置管理:基于UCM方式。包括clearcase,clearquest的使用等内容
ClearCase/ClearQuest使用手册
Rational ClearQuest使用说明书1-7.
1、CLEARQUEST客户端安装及设置 2、基本操作 3、高级使用 4、帮助
这是一份参考别人并加以自己编辑的Rational ClearQuest的使用手册,内容讲解比较详细。...Rational的ClearQuest就是其中比较强大的一种缺陷跟踪工具。ClearQuest类似一个开发平台,可以很方便的配置各种需要的选项。
有图片 一步一步指导安装配置 有图片 一步一步指导安装配置
关于ClearQuest 配置指南,详细内容请下载查看。