このアプリケーションのマニュアルやヘルプを作成するために、画面のキャプチャーを取ろうとしていますが、フォームが数百あることと、表示させるまで複雑な手順が必要であったりして、手動で取るには果てしない作業量が必要になります。
・テストプロジェクトを作ってテストシナリオ自動実行させる
・マウス操作をシミュレートするツールを使って自動実行させる
・ソースコードはあるため、全フォームをロードしてキャプチャするプロジェクトを作る
など、いろいろと方法があるかと思いますが、何か良い方法はないでしょうか?
表示させるまで複雑な手順が必要
マウスを駆使しないと表示できないような画面だと厳しいですが、キーボード操作で表示可能な画面であれば、Windows 自動化ソフトで自動化するのも手かと思います。
Windows 自動化ソフトの中でも個人的にお勧めなのは「UWSC」です。このソフトの特徴としては、
と言った特徴があります。以下は参考 URL です。
■ Windows 自動化ソフト「UWSC」
■ UWSC 基礎文法最速マスター
自動化の例としては、以下のような仕組みでテストを自動化(画面表示と結果の画面ハードコピーの取得の自動化)をしたことがあります。
以下は、自動化の為のExcelシートのサンプルです。
項番 | テストケース名 | メニュー名 | 操作内容 | 備考 |
---|---|---|---|---|
1-1 | ヘルプ表示 | ヘルプ\バージョン情報 | 操作内容無し。画面表示のみ | |
1-2 | 置換ダイアログ | 編集\置換 | aaa,bbb | 「,」は[TAB]キー送信とする |
ADO によるデータソースへの接続サンプルは、以下を参照のこと。
■ ADODB.Connection - UWSCグループ
また、フリーソフト等を使うのがダメという場合であれば、
「UIオートメーション」(.NET Framework 3.0 以上が必要)を使うと、自動化処理をC#等で記述可能です。
■ UIオートメーションによる自動UIテストの実践 - @IT
http://www.atmarkit.co.jp/fdotnet/special/uiautomation/uiautomation_01.html
こちらも類似記事ですが、Windows PowerShell から Win32 API を使用して自動化する参考記事になります。
■ テストの実行: Windows PowerShell での UI テスト自動化
手動で取るのが1番速くて適切ですね。
リフレクションを使ってFormを呼び出すのはいかがでしょうか?
テストプロジェクトを作るか、そのアプリケーションにテスト関数を追加すればいいと思います。
http://dobon.net/vb/dotnet/programing/createinstancefromstring.html
こちらのページでは指定したクラスのインスタンスを作って表示させています。
ShowDialogではなくShowにすれば一気に開くことも可能です(100個がまとめて開くのも大変ですが)
GetTypeの変わりにGetTypesを使ってクラスをすべて取得して、BaseTypeでFormを継承しているか確認するといいと思います。(ただし、「Formを継承したクラス」を継承したフォームの場合などは再起などでBaseTypeにFormが含まれているかなどを確認する必要があるようです。)
これですべてのフォームを表示できるので、あとはそれをキャプチャツールなりDrawToBitmapなりでキャプチャしていく、というのはどうでしょうか。
うまく回答になっていないようでしたらすいません。
マウスを駆使しないと表示できないような画面だと厳しいですが、
キーボード操作で表示可能な画面であれば、Windows 自動化ソフトで
自動化するのも手かと思います。
例えば、UWSC だとBASIC ライクなマクロや COM や DLL 呼出しが使える上に、
メニュー選択やキーボード操作に特化した命令も用意されており、
比較的手軽に自動化が行えます。
例えば、Excel に
・表示したいメニュー名
・操作内容(入力値)
等を入れて、順番にメニューを表示して、表示内容を Excel の別シートに貼り付けるようなことも自動化できます。
<参考情報>
■ Windows 自動化ソフト「UWSC」
http://www.uwsc.info/
■ UWSC 基礎文法最速マスター
http://uwsc.g.hatena.ne.jp/cx20/20100131
フリーソフト等を使うのがダメという場合であれば、
「UIオートメーション」(.NET Framework 3.0 以上が必要)を使うと、自動化処理をC#等で記述可能なようです。
UWSC よりコーディング量が多そうなので、ちょっと面倒そうですが・・・
(すみません、使ったことが無いので、記事をパッと見た感想です。)
■ UIオートメーションによる自動UIテストの実践 - @IT
http://www.atmarkit.co.jp/fdotnet/special/uiautomation/uiautomation_01.html
コメントありがとうございます。
有益な情報ありがとうございます。頂いたコメントのコピペでかまいませんので、ぜひ回答として入れて頂けないでしょうか?