Excel単体テスト仕様書からIE/EXE自動操作用のVBSコードを自動生成する。

#はじめに

SIerにおけるWebシステム開発では、操作中の画面のスクリーンショットやデータベース内のデータをEXCELファイルに貼り付け、動作が正しい事を保証するエビデンスとして残す習慣があります。
その作業を自動化する手段として、[Selenium Webdriver](http://docs.seleniumhq.org/projects/webdriver/)やそれに類する製品がありますが、現場によってはセキュリティポリシーの問題で導入できない事があります。
そのセキュリティポリシーを守った上で、先の作業を自動化するアプローチとして、[PaperTester](https://github.com/nezuQ/PaperTester)を作りました。
InternetExplorer用マクロ（VBScriptコード。キー入力を再現する事でEXEも操作できる）をExcel単体テスト仕様書からWindows標準機能（ExcelVBAなし）で自動生成します。

#PaperTesterの概要

![PTXL_SRT.gif](https://qiita-image-store.s3.amazonaws.com/0/38787/69150c7e-e376-7fba-5c26-ded19b9a071d.gif)

>InternetExplorer(IE)/EXEの操作内容をExcel単体テスト仕様書（PaperTester.xlsx）に記入していくと、 ワークシート関数で自動操作用のVBScriptコードを生成します。
>生成されたコードをテンプレートコード（Execute_PaperTester.vbs）に埋め込み実行する事で、 IE/EXE操作用ライブラリ(PaperTester.vbs)が呼び出され、IE/EXEが自動操作されます。
>又、スクリーンショットとSQL文の実行結果がエビデンス記録ブック（EvidenceTemplate.xlsx）に貼り付けられます。

参照：[GitHub - nezuQ/PaperTester](https://github.com/nezuQ/PaperTester)

#デモ

![PTDEMO.gif](https://qiita-image-store.s3.amazonaws.com/0/38787/882beece-e35f-21bb-39cc-8adfde20d8f9.gif)

>demoフォルダをWindowsPCにダウンロードし、Execute_PaperTester.vbsをダブルクリックして下さい。
>IEが起動し、デモ用のWebページの画面項目が自動操作されます。
>又、メモ帳が起動し、自動操作されます。
>その後、スクリーンショットやダミーデータベース（_database.xlsx）の値がエビデンス記録ブック（EvidenceTemplate.xlsx）に貼り付けられます。

 * [demoフォルダ](https://github.com/nezuQ/PaperTester/tree/master/demo)
 * [デモ用のWebページ](http://bl.ocks.org/nezuQ/raw/9719897/)

参照：[GitHub - nezuQ/PaperTester](https://github.com/nezuQ/PaperTester)

#操作方法
![PTEXP_01.gif](https://qiita-image-store.s3.amazonaws.com/0/38787/98951552-85f4-270f-647e-d2afac697720.gif)

![PTEXP_02.gif](https://qiita-image-store.s3.amazonaws.com/0/38787/fa9b1848-2e0b-874b-fbf4-0f8ac7e9d578.gif)

>PaperTester.xlsxの書き方
>　1.テストケース名を記入する。テストケース番号は自動的に割り当てられます。
>　2.確認内容・想定結果を記入する。
>　3.操作名・引数を記入する。入力できる値はdataシートに説明があります。
>　4.その他項目を任意で記入する。
>Execute_PaperTester.vbsへのコードの埋め込み方
>　1.PaperTester.xlsxの操作コマンド列の値を一括でコピーし、Execute_PaperTester.vbsの"本処理"の箇所に貼り付ける。
>　2.同ファイルの"設定値"の箇所にある pt.ConnectionString に接続文字列を記入する。※SQL文を発行しない場合は未記入にする。
>　3.上書き保存する。
>テスト（IE/EXE自動操作）の実行方法
>　1.Execute_PaperTester.vbsをダブルクリックする。
>　2.IE/EXE起動時にIE/EXEが最前面に来なかった場合は、IE/EXEをクリックし、最前面に移動する。
>　3.終了メッセージのポップアップを待つ。※Alt + F4 で処理を強制終了できる。（非推奨）

参照：[GitHub - nezuQ/PaperTester](https://github.com/nezuQ/PaperTester)

#操作コマンド一覧（[PaperTester.vbs](https://github.com/nezuQ/PaperTester/blob/master/PaperTester.vbs)）

>  * IEを開く  
> OpenIE  
>  * IEを取得する（最初のもの）  
> GetIE 0
>  * IEを取得する（最後のもの）  
> GetIE -1
>  * EXEを起動する  
> Run "%0"
>  * IE/EXEを閉じる  
> Quit
>  * 戻る  
> GoBack
>  * 全画面表示を行う  
> FullScreen
>  * 全画面表示を止める  
> NormalScreen
>  * 画面を最大化する  
> MaximumWindow
>  * 画面を最小化する  
> MinimumWindow
>  * 画面を標準表示にする  
> NormalWindow
>  * 待機する  
> Sleep %0
>  * URLで遷移する  
> Navigate "%0"
>  * 次のIEをアクティブにする  
> ActivateNextIE
>  * 前のIEをアクティブにする  
> ActivateBeforeIE
>  * 指定フレームをアクティブにする  
> ActivateFrame %0
>  * 元ドキュメントをアクティブにする  
> ActivateDocument
>  * フォーカスを当てる  
> Focus "%0"
>  * 入力する（Value使用）  
> ValueInput "%0"
>  * 入力する（Copy&Paste使用）  
> PasteInput "%0"
>  * 入力する（SendKeys使用）  
> KeyInput "%0"
>  * クリックする  
> Click "%0"
>  * 文字列をペーストする  
> Paste "%0"
>  * キー入力する  
> SendKeys "%0"
>  * スクリーンショットを撮る（画面全体）  
> FullScreenShot "%0"
>  * スクリーンショットを撮る（アクティブ画面のみ）  
> ScreenShot "%0"
>  * スクリーンショットを撮る（画面全体, 表示箇所のみ）  
> FullScreenShot4VisibleArea "%0"
>  * スクリーンショットを撮る（アクティブ画面のみ, 表示箇所のみ）  
> ScreenShot4VisibleArea "%0"
>  * SQL文を発行する  
> ExecuteSQL "%0"
>  * 画面項目を検証する（検証NG時は処理中断）  
> ValidateAttribute "%0"
>  * 画面項目を検証する（検証NG時は処理続行）  
> Record2ValidateAttribute "%0"
>  * 画面タイトルを検証する（検証NG時は処理中断）  
> ValidateTitle "%0"
>  * 画面タイトルを検証する（検証NG時は処理続行）  
> Record2ValidateTitle "%0"
>  * Javascriptを実行する  
> ExecuteJS "%0"

参照：[GitHub - nezuQ/PaperTester](https://github.com/nezuQ/PaperTester)

#関連ページ
Qiita - Excelスクショ問題の解決策を現役エンジニアが本気で考えた。

http://qiita.com/nezuq/items/d2ff540cdba00d41bfda
http://qiita.com/nezuq/items/8b9438108b5195a3c0bf