遅ればせながら。@IT で、επιστημηさんの連載、「C++開発者のための単体テスト入門」が始まりました。1ページ目でいわれている「ビッグ・バン テスト」は、○○社のベータ テストを揶揄っているのかなぁ?とか、思ったり思わなかったり。。。
επιさんのセッションを受けて思ったことなんだけど、こう、流ちょうに、その場その場にあわせてしゃべりたいなぁ。。。あ、書くのも。そんなεπιστημη様の記事で、一つだけ気になったことが。
テスト対象を明確にすることについて、サラッと流してる...
あるいは、「ビッグ・バン テストはテスト対象が広すぎて、何をテストするのか明確にならないことがある」ってことなのかも?
というのも、テストをする時って、テストをする対象を明確にして、テストをどのように実施したらテストできるのか、きちんと設計(計画)しておかないといけないと思うのです。
何をテストしようとしているのか明確にして、その対象をテストするためには何をしなければならず、しようとしていることで本当にテストできるのか検討し、そもそも、そのテストで仕様の何が満たされていることを確認できるのか。
あ、そっか。記事は、ユニット テストを対象にしているので、記事での「テスト対象」は「1メソッド」と、明確なんだ。早とちりでした。
いや、これで終わるわけにはいかなくて。
何でこんなことが気になったかというと、これ。「件名:コンテナ画像の手前のコントロール描画について」
フォーカスを持っているアプリケーションは、他のアプリケーションよりもちょっぴり高いプライオリティを持ちます。ユーザと対話しなければならないので、ユーザのアクションに反応するためにです。また、描画が必要なのは、テスト対象のアプリケーションだけではありません。ドラッグするアプリケーションも当然描画されますし、デスクトップや他の表示されているアプリケーションだって描画対象です。
だとすると、描画するための負荷は、テスト対象のアプリケーションだけでなく、そこに表示されているすべてのアプリケーション、およびウインドウズ デスクトップに対してかかるということです。これでは、アプリケーション(だけ)のテストをしているとはいえません。
つまり、テスト方法が間違っていると思うのです。
テストの設計が間違っているとどうなるか。επιστημηさんの記事から言葉を借りると、テストは“期待される振る舞い”と“実際の振る舞い”との相違、すなわち不具合を検出すること
です。この質問の場合、予想される「期待される振る舞い」は「MFC と同じであること」で、テストで検出したかったことは、「MFC アプリケーションと .NET Framework アセンブリでの、実行効率の差異」でしょうか。そうすると、テスト結果に影響を与える、他のアプリケーションという要因は取り除かなければなりません。また、作成した画面のLabelの手前を通るように、何か別なウィンドウをドラッグする
というテスト方法も、ドラッグするウインドウの大きさや、対象アプリケーションのどれくらいを覆うか、ドラッグのスピードという、実施段階での不確かな要素を多分に含みそうです。
たとえば、画面の左下から右上まで10秒かけて移動するを繰り返すのと、1秒で移動するを繰り返した場合、CPU の負荷が変わります。そうすると、テスト方法として、画面の広さ、背景画像、どれくらいの大きさの、どのアプリケーションを、どこからどこまで、どれくらいの速度で動かすのかを規定しないと、検査対象のアプリケーション以外での負荷が変わることになり、対象のアプリケーションの負荷としては同じ結果を得ることはできません。
また、ハードウェアなどの環境的な要因を取り除きたい。その意図は重要です。だったら余計にハード的な環境を明らかにしなければなりません。同じ環境でテストしないと、ハード的な要因によって現象が再現せず、直すことさえできなくなるのです。
あ、これ、テストに出るよ。情報処理技術者試験の、アプリケーション エンジニアの論文試験で、「テスト環境と実環境の差異を埋めるために、どのようなテストを計画しましたか」という問題が出たことがあります。あれ?プロジェクト マネージャの方だったかな?どっちでもいいや。とにかくですね。テストしようとしている内容が、本当に実効性のあるものなのか、検討することが必要です。そして、場合によっては実効性がある内容とするために、仕掛けをする必要もあるかもしれません。
この質問の場合は、たとえば最小化するときのアニメーションをしないようにして、最小化←→最大化で負荷がどう変化するか。アプリケーション内で、対象の panel の前にもう一枚 panel を置き、それを表示/非表示させて負荷がどう変わるか。そういう調べ方をしなければならないと思います。
投稿日時 : 2007年7月24日 21:59