`
bantouyan
  • 浏览: 147310 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ClearQuest缺陷之当前时间

阅读更多

      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的开发维护人员。

1
7
分享到:
评论

相关推荐

    clearcase,clearquest的使用(下)

    ClearCase是一款强大的版本控制系统,它能够帮助团队管理代码库中的各种变更,确保在多人协作开发环境下代码的一致性和完整性。在UCM模式下,ClearCase提供了一种结构化的方法来管理软件生命周期,包括版本的创建、...

    ClearQuest安装手册[整理].pdf

    Rational ClearQuest是一款由IBM开发的高级缺陷跟踪和变更管理系统,广泛应用于软件开发过程中的版本控制和协作。 1. **安装说明**: 安装Rational ClearQuest的过程通常涉及到几个关键步骤。首先,用户需要找到...

    Rational ClearQuest 安装配置使用手册_[张磊].pdf

    - **方式**:通过ClearQuest客户端或Web界面登录系统。 #### 9. ClearQuest中Schema的修改 - **编辑Schema**:通过Designer工具对现有的Schema进行修改,如添加字段、调整布局等。 - **版本控制**:支持Schema的...

    缺陷管理工具的比较,主要包括bugzilla等工具

    Bugzero是一个多功能、基于网络的bug缺陷管理和跟踪系统,能够记录、跟踪,并归类处理软件开发过程出现的Bug和硬件系统中存在的缺陷。它也是一个完整的服务管理软件,包括集成服务台热线流程管理(Help Desk)。 ...

    ClearQuest的配置方法[归纳].pdf

    ClearQuest是一款由IBM Rational公司开发的强大的缺陷跟踪和变更管理工具,广泛应用于软件开发过程中的问题管理和协作。本文将详细解析ClearQuest的配置步骤,帮助你顺利搭建和使用该系统。 首先,安装完成后,我们...

    软件测试工程师经典面试题.docx

    `pwd`显示当前目录,`cd`改变目录,`mkdir`创建目录,`mv`移动或重命名文件,`rm`删除文件或目录,`cmp`和`diff`比较文件,`pack`和`unpack`压缩和解压文件,`vi`是全屏幕编辑器,提供命令模式和输入模式,`...

    项目管理课程设计报告

    而 Rational ClearQuest 则是一款强大的问题跟踪和变更请求管理工具,它能够帮助团队追踪问题、缺陷和变更请求,确保项目的质量和进度。 课程设计的目标是让学生熟练掌握这两款工具的使用,具体包括: 1. 熟悉 ...

    clear case 配置

    IBM Rational ClearQuest是一款高效且高度灵活的变更和缺陷跟踪系统,专为软件开发生命周期中的变更管理设计。这个系统能够在整个开发过程中捕捉、追踪并管理各种变更请求,从而提高软件交付的质量和效率。无论是在...

    软件测试培训--ROSE

    5. 工具集成:ROSE与其他IBM Rational工具(如ClearQuest用于缺陷管理,RequisitePro用于需求管理)紧密集成,提供端到端的软件开发流程支持。 通过"软件测试培训--ROSE",学习者可以深入理解软件测试的原理和实践...

    软件测试与维护:13-软件测试自动化.pdf

    此外,还有Rational提供的整体解决方案,包括TestManager(测试管理平台)、Robot和RobotJ(自动化测试工具)、ClearQuest(缺陷跟踪工具),以及Purify(软件纠错工具)等。 Rational测试产品结构提供了测试的全...

    IT项目开发的75条管理守则 .doc

    - 开发人员在编写新代码之前,应优先解决当前存在的缺陷。通常情况下,个人未解决的缺陷数量不应超过10个或15个。 18. **缺陷严重程度的定义** - 应事先定义缺陷的严重程度标准,如蓝屏和数据丢失属于最高级别,...

    测试员杂志第五期

    - **缺陷跟踪**:通过Rational ClearQuest管理缺陷生命周期,提高问题解决效率。 - **测试自动化**:利用Rational Functional Tester实现测试自动化,减少重复劳动。 - **性能测试**:使用Rational Performance ...

    软件配置管理:基于UCM方式

    ClearCase是IBM推出的一款强大的版本控制系统,它可以跟踪文件和目录的更改,支持多用户协作,并能管理多个版本的软件组件。在UCM模式下,ClearCase提供了基线、视图、活动和流等概念,这些都为有效地管理软件配置...

    如何用正确的方法来写出质量好的软件的75条体会

    - **实践**: 在编写新代码之前,优先解决当前存在的缺陷。 #### 18. 明确定义缺陷严重程度 - **重要性**: 明确的严重程度定义有助于优先处理关键问题。 - **实践**: 通常将严重程度分为三个等级,例如:蓝屏和数据...

Global site tag (gtag.js) - Google Analytics