小井土です。
> 渋川です。
渋川君、アイデアありがとうです。
> > > 正直な話、UIのテスト方法はまだ十分ではなく、課題であると思ってい
> > > ますので、良いやり方があったら、テストカタログで紹介したいと考えて
> > >います。
> >
> > そうなのですね。
> > UIに関しても簡単でよい方法があればぜひ紹介ください。
>
> いっそのこと、テストファーストしやすいGUIライブラリというものを考えてみ
> るのも楽しいと思います。実際に作るかどうかは別にして、頭の体操に。
>
> ★アイディアその1
>
> GUIライブラリ上で動くマクロ言語を搭載して、ユーザ操作等をシミュレーショ
> ン。MS Officeで、VBAでテスト書くようなもんです。受入テスト用に。ユーザ操
> 作をマクロ化できれば、バグの発生パターンをユーザに作ってもらうこともでき
> るかも。
私が作った昔のアプリケーションは、これと同じ機能を実装していました。
再現できるバグは、夜中に再実行してテストしていました。
> ★アイディアその2
>
> テスト時は実際に画面に表示しないで、画面の値を見たり書いたりできるモード
> を搭載する。Strategyパターンを派手にしたイメージです。
これは、大変そう。
メール送信のコンポーネントで、テキストに出力してチェックするというような
ものの画面版でしょうか。
> ★アイディアその3
>
> 表示用のデータの参照しか持たないGUIツールキット。つまりGUIのライブラリ自
> 身は状態は持たず、モデルのデータを参照してその通りに表示する。つまりモデ
> ル部分のテストだけでOK。単純な画面表示系ならば良いかも。ツリーコントロー
> ルとかは大変そう。
>
> ネタ元はFOXのデータターゲットです。
> http://www.asahi-net.or.jp/~cv8t-hdk/fox/fox-doc.ja/datatarget.ja.html
モデル部分のテストが重要なので、各画面ではテストなしになりますね。
似たような画面が多い場合、実装することがあります。
#経験あり。
> ★アイディアその4
>
> リンクするライブラリを変えるだけで、CGIやHTTPサーバになってくれる(Window
> を出す代わりにHTMLを出す)ようなお洒落なライブラリにする。そうすれば、
> WebUnitとかを使って通常のGUIのテストもできる。作るの大変そう。.NETフレー
> ムワークってこういう風になってるんでしたっけ?追っかけていませんが。
NUnit.ASPが似ている感じでしょうか。
> ★アイディアその5
>
> OSが発行するイベント、メッセージを、プログラマが同じように簡単に発行でき
> る仕組みを整える。他のアイディアとセットかな。テストメソッドの中で、ウイ
> ンドウをテスト用に初期化し、メッセージを送って、画面の表示内容をassert文
> でチェック。
.NETでは、SendKeys.SendWait( "123{ENTER}" );見たいにこれを再現することができます。
問題は、再生中にブレイクポイントを入れるとOSがハングする場合があります。
#今日、この方法でテストして、不用意にバングさせてしまいました。
なかなか面白ので、皆さん一度体験してみてください。
工夫次第でUIもそれなりにはテストできますが、まだ決定打がありません。
#結構、いろいろやってるな。