.NET FrameworkでC#とVB.NETが混在したWindows Formsアプリケーションを開発しています。

このアプリケーションのマニュアルやヘルプを作成するために、画面のキャプチャーを取ろうとしていますが、フォームが数百あることと、表示させるまで複雑な手順が必要であったりして、手動で取るには果てしない作業量が必要になります。

・テストプロジェクトを作ってテストシナリオ自動実行させる
・マウス操作をシミュレートするツールを使って自動実行させる
・ソースコードはあるため、全フォームをロードしてキャプチャするプロジェクトを作る

など、いろいろと方法があるかと思いますが、何か良い方法はないでしょうか?

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/09/14 10:32:40
  • 終了:2011/09/19 13:00:37

ベストアンサー

id:cx20 No.2

cx20回答回数603ベストアンサー獲得回数1072011/09/16 03:48:17

ポイント200pt

表示させるまで複雑な手順が必要

マウスを駆使しないと表示できないような画面だと厳しいですが、キーボード操作で表示可能な画面であれば、Windows 自動化ソフトで自動化するのも手かと思います。


Windows 自動化ソフトの中でも個人的にお勧めなのは「UWSC」です。このソフトの特徴としては、

  • マウスやキーボード操作の記録(スクリプト化)、再生が行える
  • スクリプトはBASIC ライクなシンプルな構文なので編集が容易
  • COM オブジェクトや DLL の呼出しが可能
  • メニュー選択やキーボード操作と言った、自動化に特化した命令(関数)が豊富に用意されている
  • 無料(デバッガが付属した有償版もあります)

と言った特徴があります。以下は参考 URL です。

■ Windows 自動化ソフト「UWSC」

http://www.uwsc.info/

■ UWSC 基礎文法最速マスター

http://uwsc.g.hatena.ne.jp/cx20/20100131

自動化の例としては、以下のような仕組みでテストを自動化(画面表示と結果の画面ハードコピーの取得の自動化)をしたことがあります。

  1. 「テストケース名」「表示したいメニュー名」「操作内容(キーボードの入力内容を記載)」をExcelのシートに記載
  2. テスト対象のアプリケーションを起動
  3. テストケース一覧(Excelシート)を ADO 経由で読み出し
  4. 「メニュー表示」「操作内容」のキーボード操作を実行
  5. 結果を別のExcelに貼り付けて保存
  6. 3~5を順次実行

以下は、自動化の為のExcelシートのサンプルです。

項番テストケース名メニュー名操作内容備考
1-1ヘルプ表示ヘルプ\バージョン情報 操作内容無し。画面表示のみ
1-2置換ダイアログ編集\置換aaa,bbb「,」は[TAB]キー送信とする

ADO によるデータソースへの接続サンプルは、以下を参照のこと。

■ ADODB.Connection - UWSCグループ

http://uwsc.g.hatena.ne.jp/keyword/ADODB.Connection

また、フリーソフト等を使うのがダメという場合であれば、

「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 テスト自動化

http://msdn.microsoft.com/ja-jp/magazine/cc163301.aspx

その他の回答(1件)

id:matamunesama No.1

matamunesama回答回数6ベストアンサー獲得回数02011/09/15 13:12:39

手動で取るのが1番速くて適切ですね。

id:mstkwb

わざわざ回答頂いたところ申し訳ありませんが、手動でやらないで良い方法を質問しています。

2011/09/15 13:33:50
id:cx20 No.2

cx20回答回数603ベストアンサー獲得回数1072011/09/16 03:48:17ここでベストアンサー

ポイント200pt

表示させるまで複雑な手順が必要

マウスを駆使しないと表示できないような画面だと厳しいですが、キーボード操作で表示可能な画面であれば、Windows 自動化ソフトで自動化するのも手かと思います。


Windows 自動化ソフトの中でも個人的にお勧めなのは「UWSC」です。このソフトの特徴としては、

  • マウスやキーボード操作の記録(スクリプト化)、再生が行える
  • スクリプトはBASIC ライクなシンプルな構文なので編集が容易
  • COM オブジェクトや DLL の呼出しが可能
  • メニュー選択やキーボード操作と言った、自動化に特化した命令(関数)が豊富に用意されている
  • 無料(デバッガが付属した有償版もあります)

と言った特徴があります。以下は参考 URL です。

■ Windows 自動化ソフト「UWSC」

http://www.uwsc.info/

■ UWSC 基礎文法最速マスター

http://uwsc.g.hatena.ne.jp/cx20/20100131

自動化の例としては、以下のような仕組みでテストを自動化(画面表示と結果の画面ハードコピーの取得の自動化)をしたことがあります。

  1. 「テストケース名」「表示したいメニュー名」「操作内容(キーボードの入力内容を記載)」をExcelのシートに記載
  2. テスト対象のアプリケーションを起動
  3. テストケース一覧(Excelシート)を ADO 経由で読み出し
  4. 「メニュー表示」「操作内容」のキーボード操作を実行
  5. 結果を別のExcelに貼り付けて保存
  6. 3~5を順次実行

以下は、自動化の為のExcelシートのサンプルです。

項番テストケース名メニュー名操作内容備考
1-1ヘルプ表示ヘルプ\バージョン情報 操作内容無し。画面表示のみ
1-2置換ダイアログ編集\置換aaa,bbb「,」は[TAB]キー送信とする

ADO によるデータソースへの接続サンプルは、以下を参照のこと。

■ ADODB.Connection - UWSCグループ

http://uwsc.g.hatena.ne.jp/keyword/ADODB.Connection

また、フリーソフト等を使うのがダメという場合であれば、

「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 テスト自動化

http://msdn.microsoft.com/ja-jp/magazine/cc163301.aspx

  • id:taknt
    手動でとるのが一番。
  • id:TinqWill
    自信がないのでコメントのほうでさせていただきます。

    リフレクションを使ってFormを呼び出すのはいかがでしょうか?
    テストプロジェクトを作るか、そのアプリケーションにテスト関数を追加すればいいと思います。

    http://dobon.net/vb/dotnet/programing/createinstancefromstring.html
    こちらのページでは指定したクラスのインスタンスを作って表示させています。
    ShowDialogではなくShowにすれば一気に開くことも可能です(100個がまとめて開くのも大変ですが)

    GetTypeの変わりにGetTypesを使ってクラスをすべて取得して、BaseTypeでFormを継承しているか確認するといいと思います。(ただし、「Formを継承したクラス」を継承したフォームの場合などは再起などでBaseTypeにFormが含まれているかなどを確認する必要があるようです。)

    これですべてのフォームを表示できるので、あとはそれをキャプチャツールなりDrawToBitmapなりでキャプチャしていく、というのはどうでしょうか。

    うまく回答になっていないようでしたらすいません。
  • id:cx20
    > 表示させるまで複雑な手順が必要

    マウスを駆使しないと表示できないような画面だと厳しいですが、
    キーボード操作で表示可能な画面であれば、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
  • id:mstkwb
    TinqWillさん、cx20さん
    コメントありがとうございます。
    有益な情報ありがとうございます。頂いたコメントのコピペでかまいませんので、ぜひ回答として入れて頂けないでしょうか?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません