WinActorでのテスト時間削減をするために必要なツールの説明です。
WinActorのノードでは
①NTTAT_v7.x.x.ja/01_WinActor制御/07_デバッグ/デバッグ:変数値保存
②NTTAT_v7.x.x.ja/03_変数/01_csvファイル読み込み/csvファイル→変数値
が用意されています。
この2つのノードを使用することでテスト時間の削減が可能です。
例
処理の前半ではWebからデータのダウンロードを実施。これに30分時間がかかる
処理の後半ではダウンロードしたデータの編集を実施。これに5分かかる
今回、処理後半の編集処理の修正/テストを実施する
普通にテストすれば「前半30分+後半5分」の時間が必要ですが、
これを上記の2つのノードを使用することで毎回5分でテストが実施できます。
やり方
・最初の1回だけ、処理前半終了後に上記の①のノードにて変数値を保存
・後半の実行前に上記の②ノードを追加
・以後のテストは後半部分のみ実行
(あたかもシナリオ先頭から実行しているのと同じ状態)
※注意 前半処理のアウトプットなどは退避/配置しておく必要があります
※その他
・エラー時に変数値を出力しておけば、エラー時の再現テストに応用がききます。
・文言検索がやりやすいです。
・改行付きデータも対応しています。
ツールの説明
上記の①②のアウトプットファイルはそれぞれのフォーマットが異なります。
ツールでは①outputファイルを②に変換するツールです。
また、ファイル内容を見やすく表示、その場で変更することもできます。
ツールは「hta」を使用しています。
(hta:Microsoftが標準で提供している簡易ブラウザのアプリケーション)
実行結果
①変数一覧
WinActorの「変数一覧」を[Ctrl+A]で全体をコピーしてファイル化してください
②WinActorの実行時の変数一覧
WinActorのノードで取得したファイルを指定してください
(NTTAT_v7.x.x.ja/01_WinActor制御/07_デバッグ/デバッグ:変数値保存)
③インポート用のファイル
インポート用のファイルを指定してください
実行方法
・ソースをコピーして「xxxx.hta」でファイルを作成してください。
・ファイルをダブルクリックで起動してください。
※実行時に
が表示されます。こちらは「いいえ」で応答してください。
このスクリプトでは「応答しない」という事にはなりません。
※読込で2回、出力で1回 表示されます。
・「読込」押下で変数が表示されます。
・「出力」押下で②を更新しつつ、③が生成されます。
ソース
<html>
<head>
<title>テスト時間短縮</title>
<HTA:APPLICATION
APPLICATIONNAME="WinActor変数ファイル表示&インポート用ファイル変更"
SCROLL="yes"
SINGLEINSTANCE="yes"
>
<script language="VBScript">
' --- テキスト読み込み---
Sub Window_onLoad
window.resizeTo 700,800
End Sub
'--- テキスト読込 ---
Sub ReadText
Dim ITEM(10000),VALU(10000)
Set objFso = CreateObject("Scripting.FileSystemObject")
Set d = CreateObject("Scripting.Dictionary")
'--- ①変数使用箇所 パス入力確認 ---
If document.getElementsByTagName("input")(0).value = "" then
msgbox "ファイルを指定して下さい。", 16, "エラー"
Else
Sleep 1000
Set objFile = objFso.OpenTextFile(MyTextBox1.Value, 1)
cnt = 1
'--- ①変数使用箇所csvファイル読込 ---
Do while Not objFile.AtEndOfStream
inpf = objFile.ReadLine
'--- 2行目以降でレコードにタブがある場合 ---
If InStr(inpf, vbTab) > 0 And cnt > 1 Then
c = split(inpf,vbTab)
If Not d.Exists(c(2)) And C(2)<> "" then d.add c(2), ""
End if
cnt = cnt + 1
Loop
End If
'--- 辞書配列全体表示 ---
'X = ""
'keys = d.Keys
'For Each key In keys
' X = X & key & ": " & d.Item(key) & VbCrLf
'Next
'msgbox X
'--- 実行時の変数一覧 パス入力確認 ---
If document.getElementsByTagName("input")(1).value = "" then
msgbox "ファイルを指定して下さい", 16, "エラー"
Else
Sleep 1000
Set objFile = objFso.OpenTextFile(MyTextBox2.Value, 1)
cnt = 0
'--- ②変数一覧読込 ---
Do while Not objFile.AtEndOfStream
inpf = objFile.ReadLine
'msgbox "レコード:" & inpf
'--- 先頭と文末は除外 --- vbLf(またはChr(10)
If inpf <> "---------------------" And inpf <> "--------------------- Current variable" Then
'--- ②において変数名が存在する行 「=」が存在する行 ---
If InStr(inpf, "=") > 0 Then
cnt = cnt + 1
'msgbox "行数:" & cnt & " レコード:" & inpf
'--- ①に存在する変数名か判断 ---
If d.Exists(Left(inpf, InStr(inpf, "=") -1 )) Then
'--- 変数名セット ---
ITEM(cnt) = Left(inpf, InStr(inpf, "=") -1 )
'--- 変数値セット ---
VALU(cnt) = Right(inpf, Len(inpf) - InStr(inpf, "="))
Else
'--- 改行コード付き値 ---
VALU(cnt) = VALU(cnt) & "<br>" & inpf
End If
Else
VALU(cnt) = VALU(cnt) & "<br>" & inpf
'msgbox "行数:" & cnt & " 値:" & VALU(cnt)
End If
End If
Loop
'--- 出力ファイルのヘッダ ---
OUTP = "<span contenteditable><TABLE width=100% border><TR><TD>変数名</TD><TD>値</TD></TR>"
'--- 出力レコード ---
For i = 1 To cnt
OUTP = OUTP & "<TR><TD>" & ITEM(i) & "</TD><TD>" & VALU(i) & "</TD></TR>"
Next
'--- 出力ファイルのフッタ ---
For i = 1 to 5
OUTP = OUTP & "<TR><TD></TD><TD></TD></TR>"
Next
OUTP = OUTP & "</TABLE></span>"
TableArea.innerHtml = OUTP
objFile.Close
End if
Set dic = Nothing
Set objFile = Nothing
Set objFso = Nothing
End Sub
'--- テキスト出力---
Sub WriteText
Sleep 1000
Set objFso = CreateObject("Scripting.FileSystemObject")
'--- パス取得済確認 ---
if document.getElementsByTagName("input")(2).value = "" then
msgbox "ファイルを指定して下さい", 16, "エラー"
Else
If document.getElementsByTagName("TABLE").length = 0 then
msgbox "読込が完了していないと出力はできません", 16, "エラー"
Else
'--- ②変数ファイルの上書き ---
Set objFile = objFso.OpenTextFile(MyTextBox2.Value, 2, True)
Set TABLE = document.getElementsByTagName("TABLE")(0)
i = 1
While TABLE.rows(i).cells(0).innerText <> ""
objFile.WriteLine TABLE.rows(i).cells(0).innerText & "=" & TABLE.rows(i).cells(1).innerText
i = i + 1
Wend
'--- インポート用ファイル作成 ---
Set objFile = objFso.OpenTextFile(MyTextBox3.Value, 2, True)
Set TABLE = document.getElementsByTagName("TABLE")(0)
'--- 変数名 ---
i = 1
Line = ""
While TABLE.rows(i).cells(0).innerText <> ""
Line = Line & TABLE.rows(i).cells(0).innerText & ","
i = i + 1
Wend
objFile.WriteLine Line
'--- 変数値 ---
i = 1
Line = ""
While TABLE.rows(i).cells(0).innerText <> ""
Line = Line & """" & TABLE.rows(i).cells(1).innerText & """" & ","
i = i + 1
Wend
objFile.WriteLine Line
objFile.Close
'--- Excel処理 全体選択後にフォーマットを数値にする(指数表示させない)---
Set exl = CreateObject("Excel.Application")
exl.Application.Visible = true
exl.Application.Workbooks.Open(MyTextBox3.Value)
exl.Cells.Select
exl.Selection.NumberFormatLocal = "0"
exl.ActiveWorkbook.Save
exl.Quit
End if
End if
Set objFile = Nothing
Set objFso = Nothing
Set exl = Nothing
End Sub
Sub Sleep(millisec)
Dim dstart
dstart = timer * 1000
Do while True
if timer * 1000 >= dstart + millisec then Exit Do
Loop
End Sub
</script></head>
<body>
①変数一覧 ※WinActorの変数一覧をCtrl+Aで全コピーしてテキストコピーを作成
<input name="MyTextBox1" type="file" size=100 id="selfile1"><p>
②WinActor実行時の変数一覧 ※WinActorシナリオの01_WinActor制御/07_デバッグ/デバッグ:変数値保存の結果<p>
<input name="MyTextBox2" type="file" size=100 id="selfile2"><p>
③インポート用csvファイル ※WinActorシナリオの03_変数/01_csvファイル→変数値<p>
<input name="MyTextBox3" type="file" size=100 id="selfile3"><p>
--------<P>
<input type="button" value="読込" name="run_button1" onClick="ReadText">
ファイルパスを指定し、読込ボタンを押下して下さい。<br>
内容に修正がある場合は修正後に出力ボタンを押下して下さい。<p>
<input type="button" value="出力" name="run_button3" onClick="WriteText"> (※出力は上書きです。読込後しか上書き出来ません)
<p>
<p>
<span id=TableArea></span>
<p>
</body>
</html>
※※※※
過去の記事
「WinActor変数ファイル表示(HTAを使用したテキストファイル表示)」
を機能アップさせたツールです。