51Testing软件测试论坛

标题: 如何自动添加defect fixed date [打印本页]

作者: Dracula.chen    时间: 2008-9-25 11:09
标题: 如何自动添加defect fixed date
Defect经过开发人员修复后,开发人员把状态标为fixed,我在QC里加了一个fixed date,但是如何让这个date自动记录defect状态何时变为fixed呢?
作者: redforce    时间: 2008-9-25 18:28
工作流可以实现
Sub Defects_Bug_FieldChange(FieldName)
  if FieldName="BG_STATUS"   then
     if Fields("BG_STATUS").Value = "fixed"    then
        Fields("BG_USER_02").Value=now()
      end if
  end if
End Sub
注:BG_USER_02是fixed date这个字段的名称。具体的名称可以去qc里找;这个方法只能记录日期,到天,不能到时分秒
作者: Dracula.chen    时间: 2008-9-26 11:01
多谢楼上!
另外,我如何学习写工作流代码?有没有成套的资料可供学习?
作者: redforce    时间: 2008-9-26 12:04
说实话我也不知道怎么学
我就知道工作流代码是vb写的
碰到问题了我才去自己写代码
作者: redforce    时间: 2008-9-26 12:12
补充一点,新家的那个字段的类型选择string,这样就能记录到时分秒了
哈哈,自己顶自己一下
作者: Dracula.chen    时间: 2008-9-26 13:43
标题: 回复 2# 的帖子
麻烦再问一下,Sub Defects_Bug_FieldChange这个子函数总得有地方调用它吧?
这个是系统默认的子函数么?如果不是的话,我定义了它,没有地方会调用它,也不会起作用吧

另外,我查看现有的脚本里,有一个Sub Bug_FieldChange(FieldName),是不是我直接修改这个子函数就可以了?不用在定义一个新的Defects_Bug_FieldChange了?

对VB一窍不通,对QC也是一知半解,唉,见笑了...

[ 本帖最后由 Dracula.chen 于 2008-9-26 14:10 编辑 ]
作者: redforce    时间: 2008-9-26 14:16
应该是直接修改Sub Bug_FieldChange(FieldName)这个函数了
我用的是td。可能td和qc的函数名不同
作者: Dracula.chen    时间: 2008-10-10 11:58
牛人,我代码写成如下
==========================
  If Bug_Fields.Field("BG_STATUS").Value = "Fixed" Then
     Bug_Fields.Field("BG_USER_18").Value=now()
  End If
  If Bug_Fields.Field("BG_STATUS").Value = "Reopen" Then
     Bug_Fields.Field("BG_USER_19").Value=now()
  End If
==========================
可是当我reopen bug时,bug的fixed date也变成reopen时间了,难道if逻辑有错误么?
请指教!
作者: redforce    时间: 2008-10-13 15:08
If Bug_Fields.Field("BG_STATUS").Value = "Fixed" Then
     Bug_Fields.Field("BG_USER_18").Value=now()
     else if Bug_Fields.Field("BG_STATUS").Value = "Reopen" Then
             Bug_Fields.Field("BG_USER_19").Value=now()
     end if
end if
这样试试
作者: Dracula.chen    时间: 2008-11-4 11:35
原帖由 Dracula.chen 于 2008-10-10 11:58 发表
牛人,我代码写成如下
==========================
  If Bug_Fields.Field("BG_STATUS").Value = "Fixed" Then
     Bug_Fields.Field("BG_USER_18").Value=now()
  End If
  If Bug_Fields.Field("BG_STATUS") ...

不是逻辑问题,而是QC的问题,当状态为fix时,改变bug的任何字段都回引起fixed date的改变。我想加一个限制,就是fixed date只有在点save的时候才update,不知道如何写这个条件?麻烦高人了~不胜感激
作者: redforce    时间: 2008-11-4 17:58
这个我还真不知道怎么解决
作者: threeg    时间: 2009-11-30 14:54
工作流自定义很高深,
不懂
作者: hbjfx    时间: 2012-3-30 11:45
1、首先在Customize Project Entities的DEFECT中增加
两个字段,New Field会自动生成一个“field name”,修改Field Label为“fixed date”,修改Field tape为date(出现提示确定就可以)记录field name的值,我这里生成的是BG_USER_04,
2、进入Set Up Workflow-Script Editor-Defects module script-Defects_Bug_FieldChange
将以下代码粘入:
   
'增加fixed字段到列表,fixed、closed、reopen date 时间
Sub Defects_Bug_FieldChange(FieldName)
  On Error Resume Next
  '增加closed修改时间
  if Bug_Fields.Field("BG_STATUS").Value="Closed" then
     Bug_Fields.Field("BG_CLOSING_DATE").Value=now()
  '增加fixed修改时间
  ElseIf Bug_Fields.Field("BG_STATUS").Value="Fixed" then
         Bug_Fields.Field("BG_USER_04").Value=now()、
  '增加reopen修改时间
  ElseIf  Bug_Fields.Field("BG_STATUS").Value="Reopen" then
          Bug_Fields.Field("BG_USER_05").Value=now()
  End If
  On Error GoTo 0
End Sub

保存后。返回即可!
作者: sharon0000    时间: 2012-9-21 10:42
为什么我的TD目录底下没有Set Up /Workflow-Script Editor-Defects module script-Defects_Bug_FieldChange
作者: sharon0000    时间: 2012-9-21 10:42
为什么我的TD目录底下没有Set Up /Workflow-Script Editor-Defects module script-Defects_Bug_FieldChange
作者: sharon0000    时间: 2012-9-21 10:42
为什么我的TD目录底下没有Set Up /Workflow-Script Editor-Defects module script-Defects_Bug_FieldChange
作者: sharon0000    时间: 2012-9-21 10:42
为什么我的TD目录底下没有Set Up /Workflow-Script Editor-Defects module script-Defects_Bug_FieldChange,要怎样才能打开VB编辑器?
作者: sharon0000    时间: 2012-9-21 10:43
为什么我的TD目录底下没有Set Up /Workflow-Script Editor-Defects module script-Defects_Bug_FieldChange,要怎样才能打开VB编辑器?
作者: sharon0000    时间: 2012-9-21 10:43
为什么我的TD目录底下没有Set Up /Workflow-Script Editor-Defects module script-Defects_Bug_FieldChange,要怎样才能打开VB编辑器?
作者: Roberts    时间: 2012-9-24 14:05
回复 10# Dracula.chen

     你这个问题可以这么解决:QC提供了很多固化的过程,我这里解释下什么叫过程,过程就是事务,可以这样来描述一个过程:“当操作什么....(原因),然后触发什么...(结果)!”
你上面写的Bug_Field_Change只是其中的一个固化过程,表示“当缺陷详情对话框中某一字段内容发生变化(原因),然后触发fixtime字段值等于当前时间(结果)”,这也就是你看到的为什么
缺陷详情对话框中另一字段内容发生变化,都会触发fixtime进行赋值,其实要解决该问题,也是有办法,也就是指定某字段变化才触发进行赋值,可以在If中再增加一个条件:
   if bug_fields.field("bg_status").ismodified = true then .....
这样就限定住只有bg_status这个字段变化了,才触发后续动作,而非所有的字段,明白了吗,我在解释下,.ismodified是“bg_status”字段的一个属性,所有QC中的可见的字段都有这个属性,这个属性
用来表示该字段是否变化了。
   采用我上面讲的,添加上面的IF条件,应该就可以解决你的问题了
   然后你刚才也提到,能否在最终提交的时候再去改fix_time赋值,这样的思路很好,这样也可以解决你的问题,这样你只要用到另外一个过程,canpost或者是afterpost过程就可以了
   多研究下QC的管理员手册,如果是英文的看的头疼,可以去网上下中文的,你用的还是TD8.0,现在QC都出到QC11了,QC11都有中文的了,很多资料可以供你参考的




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2