loadrunnerはQTPスクリプトを呼び出して性能テストを実現する(現場の特殊な需要の解決策)

15181 ワード

春節の正月に家に帰る時、現場はまた問題が発生して、同時に情況の下でカーソルが間違っています.メールで週末に残業して実際の生産環境をシミュレートする方法を研究しなければなりません.大体の需要は抄表段の番号と電気料金の年月に基づいて当該抄表段の下のユーザーの納付状況を調べ、1つの抄表段には数百~2千のユーザーがいる.異なる抄表セグメントにおけるユーザの納付状況を同時に照会し、その抄表セグメントにおける各ユーザの納付状況を順次印刷する必要がある.
このような問題に対して、最初はよく解決したと思います.スクリプトにループ制御文をつければいいと思いましたが、実際のテストでloadrunnerがサーバーにデータを提出するときにIDが1つあるのは不規則で、急に退屈して、前の考えはこのように絶望しました.よく考えてみると、印刷インボイスは1台のパソコンに1台のプリンタが直結している.つまり、1つの足でシミュレーションすることはできず、スクリプトに分布式の感念を与える必要があり、スクリプトは1台のマシンで実行するように制御する必要がある.これにより、各スクリプトは相対的に独立しています.これでQTPを思いつき、QTPを使ってスクリプトを作成し、loadrunnerでスクリプトの実行を制御することで、現場のニーズを満たすことができます.
添付:QTPスクリプトは以下の通り:
SystemUtil.CloseProcessByName "iexplore.exe"

SystemUtil.Run "iexplore.exe","http://172.19.201.188:7001/web/"

set ChildObjects = CreateObject("Scripting.Dictionary")

    With ChildObjects

         .Add "Browser", Browser("CreationTime:=0")

         .Add "Page", .Item("Browser").Page("index:=0")

         .Add "Username", .item("Page").WebEdit("name:=username")

         .Add "Password", .item("Page").WebEdit("name:=password")

         .Add "Submit", .item("Page").Image("index:=0")

         .Add "Frame", .Item("Page").Frame("name:=barFrame")

         .Add "LinkMenu", .Item("Frame").Link("text:= ")

         .Add "Linkitem", .Item("Frame").Link("text:= ","index:=0")

         .Add "TreeMenuFrame",.Item("Page").Frame("name:=TreeMenuFrame")

         .Add "WebTable", .Item("TreeMenuFrame").WebTable("text:= .*","index:=0")

         .Add "PageFrame",.Item("Page").Frame("name:=PageFrame","index:=1")

         .Add "mrSectNo",.Item("PageFrame").WebEdit("name:=mrSectNo")

         .Add "rcvblYm",.Item("PageFrame").WebEdit("name:=rcvblYm")

         .Add "WebButton",.Item("PageFrame").WebButton("name:= ")

    End With



ChildObjects.item("Username").Set "YYY" 

ChildObjects.item("Password").Set "1" 

ChildObjects.item("Submit").click

ChildObjects.item("LinkMenu").click 

ChildObjects.item("Linkitem").click 

ChildObjects.item("WebTable").ChildItem(1,2,"Image",192).click

ChildObjects.item("mrSectNo").Set "0000006511"     

ChildObjects.item("rcvblYm").Set "201211"     

ChildObjects.item("WebButton").click



Services.StartTransaction "start"

With Browser("CreationTime:=0").Page("index:=0")

    For N= 1 To .Frame("name:=PageFrame","index:=1").WebEdit("name:=tatolRecord").GetROProperty("value")

        .Frame("name:=PageFrame","index:=1").WebCheckBox("index:="&N).Set "ON"

        .Frame("name:=PageFrame","index:=1").WebButton("name:= ").click

         Set Wsh=CreateObject("WScript.Shell")

         Wsh.SendKeys "^+{F4}"

        .Frame("name:=PageFrame","index:=1").WebCheckBox("index:="&N).Set "OFF"

    Next

End With

Services.EndTransaction "start"

注:loadrunnerでQTPスクリプトを実行するには、QTPスクリプトでトランザクションを設定する必要があります.たとえば、Services.StartTransaction"start"とServices.EndTransaction「start」がloadrunnerでQTPスクリプトを呼び出すには、1、各マシンにloadrunner、QTPツールをインストールします.
2、各機器のQTPについて、Tools-Options-Runの「Alow other Mercury products to run tests and components」設定をチェックする.
3、各端末は必ずloadrunnerのLR Agent Process及びQTPのTOOS-REmote Agentエージェントサービスをオンにしなければならない.
4、loadrunnerを起動した後、LRで実行する時にQTPスクリプトを選択し、QTPスクリプト格納ディレクトリのファイル拡張子は.usrのファイル.注意:loadrunnerでQTPスクリプトを実行する場合、GUI Vuserは1つしかありません
5、異なるグループを追加し、各グループのスクリプトはそれぞれリモートマシンによって実行される.
以上の手順とシーン設定が完了すると、loadrunnerコンソールでシーンを実行できます.これにより、各端末がQTPスクリプトを呼び出し、自動化テストを同時に実行することができ、同時にテストをループする目的を達成することができます.