wenservices  global_number loadrunner

golba-1000: AEACFSJI-YASEKJJKEAHJD-BCLBR


 --------------------------------------------------------------------------------------

前言:

  我使用TD時間也不是非常長,和牛人相比那是天壤之別!只是我有幸配置TD。相信不是哪么多測試人員有這種鍛煉的機會!

  在我配置的過程中,發現關于工作流(workflow)的資料非常之少,給我配置起來帶來了很大時間上的浪費??墒枪ぷ髁鲄s是TD功能寬度和自定義級別最大的,如果不學會來使用,TD很多應該能實現的功能都可能大打折扣或者不能使用。當然,本著對初學者和不太懂的人以借鑒的思想,我盡量寫的簡便通俗易懂點

  一、基礎篇:

  為了能夠更好的開始講解工作流,我先說明些東西。這些內容是基礎。請耐心看,如果你已經知道可以跳過。

  1.作流其實就是TD中提供的一種可以達到編程效果的一個編輯器。我們可以直接編輯腳本,不用單獨編譯。

  2.工作流腳本是使用VB語言編寫的,所以它支持如msgbox類的輸入輸出函數。

  3.您需要明確知道你想在什么時候執行你的腳本。比如Defects_Bug_New里面的語句只在你新建缺陷的時候執行,其他時候是不執行的。

  再比如Defects_Bug_FieldChange就是在缺陷內容發生改變了的時候執行的語句。

  4.一般默認的東西我們不要亂作修改。如:

Sub Defects_Bug_FieldChange(FieldName)
    On Error GoTo 0
End Sub

  這些內容我們就要保留。

  5.同樣的Sub可以存在多個,也就是說如Sub Defects_Bug_FieldChange(FieldName)這樣的函數我們可以編寫幾個,不必要修改系統原來的Sub Defects_Bug_FieldChange(FieldName)

  6.文中提到的,TD數據庫中使用的字段(如BG_BUG_ID)。是那里來的?

  它是在你需要輸入USER ID和Password那個頁面(/start_a.htm),右上角有個叫CUSTOMIZE的鏈接,點擊下,用admin用戶登陸,在“Customize Project Entities” -> “DEFECT”里面的System Fields或者User Fields里面隨便選擇一個字段,右邊查看里面“Field Name”后面的就是數據庫中使用的字段了的名字了。比如你選擇Subject,對應的Field Name就是BG_SUBJECT.

  7.工作流中的GoTo語句不能像VB里面那樣使用。因為標簽是無效的。

  8.理論上來講,TD中的大部分功能東西都能通過這里編輯,比如按鈕。事件。當然前提是你夠熟悉。

  9.如果要腳本起作用,只要退出再登陸進TD.腳本就會立刻起作用。

  二、工作流的實踐一 ——新建缺陷時候的默認值

  需求說明:我們在打開添加缺陷的頁面的時候(特別是使用了自定義字段的時候)我們最希望的就是給這些不是非常重要的,但是又不希望沒有內容的字段,有些默認值。哪么我們第一個來做的就是這個需求。請先看代碼。

Sub Defects_Bug_New
     On Error Resume Next
         Bug_Fields("BG_DETECTION_VERSION").Value = "Ehome 2.0"
  On Error GoTo 0
 End Sub

  這段代碼,你只要復制到工作流腳本中去,哪么你在添加缺陷的時候,版本這個字段里面就會自動有一個內容Ehome 2.0。這段代碼中的Defects_Bug_New代表新建缺陷的時候執行的腳本,Bug_Fields("BG_DETECTION_VERSION")具體缺陷字段。這是最簡單的工作流腳本了。你明白了沒有?

-------------------------------------------------------------------------------------------------

 

三、工作流的實踐二 ——記錄修改人和修改時間

  需求說明:我們希望在開發修改了一個缺陷的狀態為“修改完成“的時候,記錄下修改他的人,和修改時間。方便我們管理。同樣,請先看代碼:

Sub Defects_Bug_FieldChange(FieldName)
    On Error Resume Next
    if FieldName = "BG_STATUS" Then
        if Bug_Fields("BG_STATUS").Value = "P1-修改完成待驗證" then
            Bug_Fields("BG_RESPONSIBLE").Value = User.UserName
            Bug_Fields("BG_USER_02").Value = now()
        end if
    end if
    On Error GoTo 0
End Sub

  這段代碼內容就多了幾行,里面Defects_Bug_FieldChange(FieldName)代表的是缺陷字段發生改變的時候執行的語句。里面的BG_STATUS代表缺陷狀態,BG_RESPONSIBLE代表負責人(Syestem Fields表里的),BG_USER_02代表用戶自定義字段(User Fields里的)。User.UserName代表當前操作的用戶名,now()代表當前時間。剩下的東西就很容易看懂了吧。

  三、工作流的實踐三 ——不修改我的缺陷必須說理由

  需求說明:有時候開發很懶,不喜歡寫說明,哪么對我們測試來說,沒有任何說明就返回我們。使我們很不好處理問題。哪么我們希望當程序員如果修改缺陷狀態為”不修改””遺留”的時候,讓程序員必須輸入說明。

Sub Defects_Bug_FieldChange(FieldName)
    On Error Resume Next

    dim i
    i=""
    msg1 ="遺留或不修改此缺陷需要輸入說明!"
    title1 ="輸入說明"

     If FieldName = "BG_STATUS" Then
         if (Bug_Fields("BG_STATUS").Value = "P2-待遺留" or Bug_Fields("BG_STATUS").Value = "P3-暫時不修改") and Bug_Fields("BG_DEV_COMMENTS").Value = "" then
             do
                 i= InputBox(msg1,title1)
                 if i="" then
                     msgbox"必須輸入說明"
                 else exit do
                 end if
             loop
             Bug_Fields("BG_DEV_COMMENTS").Value = i
          end if
      end if
    On Error GoTo 0
    End Sub

  這段代碼內容就稍微多了點點,并且使用了VB的函數。我就簡單的說下思路吧,具體解釋,只要你看懂了上面的工作流。相信這個里面的代碼也不是很復雜。

  1.開始聲明和定義一些需要使用的變量。和內容。

  2.判斷修改的字段是不是缺陷狀態(BG_STATUS)

  3.再判斷修改成的內容是不是遺留或者不修改

  4.最后判斷說明(BG_DEV_COMMENTS)里面是不是沒有內容

  5.如果是的話,就打開輸入函數輸入說明(InputBox(msg1,title1))

  6.做個循環,如果沒有輸入說明,就提示必須輸入說明(msgbox"必須輸入說明")

  7.最后吧輸入的內容賦值給保存說明的字段(BG_DEV_COMMENTS)

-----------------------------------------------------------------------------------------
 

涉及的代碼:
'針對提交一個新缺陷進行設置
Sub Defects_Bug_New
  WizardFieldCust_Add ' Added by wizard
'設置自定義添加的字段默認不可見
    Bug_Fields.Field("Rejected Reason").IsVisible = False
'設置Priority與Severity的默認值為"2-Medium"
    Bug_Fields.Field("Priority").Value ="2-Medium"
    Bug_Fields.Field("Severity").Value ="2-Medium"
.....
'設置自定義的時間型字段值的默認值為當前時間
Bug_Fields.Field("BG_USER_07").Value=date
'設置當tester1進入系統提交缺陷時,默認的接受人員會自定義設置為developer1
    If Bug_Fields.Field("Detected By").Value ="Tester1" then Bug_Fields.Field("Assigned To").Value ="Developer1"
End Sub


'針對缺陷字段值發生改變時進行設置
Sub Defects_Bug_FieldChange(FieldName)
  On Error Resume Next


'當處理bug時,如果status字段值更改為Rejected,Rejected Reason字段顯示并為必填項
  If (Bug_Fields.Field("Status").IsModified and Bug_Fields.Field("Status").Value= "Rejected") Then
     Bug_Fields.Field("Rejected Reason").IsRequired = True
     else
     End If

  On Error GoTo 0
End Sub

 


Function Defects_ActionCanExecute(ActionName)
    On Error Resume Next    dim td
    dim ReqF
    dim ReqL

'判斷按鈕是不是自定義得按鈕...
    if ActionName = "Link_Bug_Req" then
       '彈出窗口,接受輸入的需求名
       RequirementName = InputBox("Enter the Requirement Name:", "Associate Defect to Requirement")
       '如果是數字或者空則抱錯
       if (IsNumeric(RequirementName)) and Len(RequirementName) > 0 then
          MsgBox "That is not a valid Requirement Name!"
          exit function
       '如果按的是確定按鈕,我們首先校驗數據
       elseif Len(RequirementName) > 0 then
          '創建 TDConnection對象.
          set td = TDConnection
          '創建ReqFactory對象.
          set ReqF = td.ReqFactory
          '創建ReqFactory的List對象.通過SQL校驗需求名是否存在
          set ReqL = ReqF.NewList("select * from REQ where RQ_REQ_NAME='" & RequirementName & "'")
          '如果放回的需求總數為零,則表示需求不存在
          if ReqL.Count = 0 then
             MsgBox "That Requirement Name does not exist!"
             exit function
          '如果不是則把需求名放到自定義得字段中去
          else
             Bug_Fields("BG_USER_02").Value = RequirementName
          end if
          '清除對象
          set ReqL = nothing
          set ReqF = nothing
          set td = nothing
       end if
    end if
'=====================================================================================
    Defects_ActionCanExecute = Project_DefaultRes
    On Error GoTo 0
End Function



柴油發電機
發電機
柴油機
柴油發電機
13636374743(上海)
13291526067(嘉興)