自分が過去に仕事で関わっていた分野だからというわけではないが、ソフトウェアを開発することに加えて、そのソフトウェアをテストしてより完成度を高めていくことも重要である――と言っておきたい。

もちろん、開発に関わる当事者は誰しも、コーディングのミスに伴うバグや仕様そのものに起因するバグ(いわゆるスペックバグ)や不備・不具合をできるだけ避けよう、減らそうとしていると思う。しかし、神様がする仕事ではないから、いきなり完璧なものを作り出せるわけではないのが世の習い。すると、できたものをテストして問題点をいぶりだし、より完成度が高いものを作り上げていく作業が重要になる。

テストは論理的・計画的に

とはいえ、出来上がったソフトウェアを闇雲に動作させるだけのテストでは、完成度を高められるかどうか怪しい。ソフトウェアの仕様や目的に基づき、テストケースを洗い出したうえで、それらを順番に潰していく必要がある。

普通の負荷で普通の使い方をしていて、操作ミスもなく、設計通り・意図した通りに動かしている分には、不具合はあまり出てこない。テストによって不具合が出るのは、仕様から外れた使い方をした場面、想定を超える事態が発生した場合、むやみに高い負荷をかけた場合などが多いだろう。

だから、そうした場面を機能ごとに洗い出して、どうやって、どの程度まで "いじめる" かを決める必要がある。また、テストによって不具合が見つかった時に、それをどのような形で記録・修正・追跡するかという手順も決めておかなければならない。開発やテストに関わる人数が多くなればなるほど、それが重要になる。

そうなると、開発・テストに不慣れな人にとっては、「どういう風にしてテストケースを作っていくのか」「テストはどう進めたらよいか」といったところで行き詰まってしまうかもしれない。そこで、MSDNオンラインから、参考になる情報を探してみよう。

もっとも、検索機能で「テスト」とキーワードを指定するだけでは、大量のトピックがヒットして収拾がつかなくなる。本稿執筆の時点で試してみたら、30万7,000件もヒットしてしまったぐらいだ。これらをいちいち読んで調べていたら、日が暮れるどころの騒ぎではなくなってしまう。

とりあえず、筆者が検索したなかからピックアップしたコンテンツを示そう。

アプリケーションのテスト
http://msdn.microsoft.com/ja-jp/library/ms182409.aspx

これはVisual Studio 2010を対象にアプリケーションソフトのテストについて概要をまとめたMSDNライブラリのコンテンツだ。テスト作業の計画、実行、得られたデータの管理・追跡などの概要と関連トピックへのリンクがまとめられている。まずは、これをスタート点にしてみるのが良さそうだ。

それと並列する形で公開されているコンテンツにこういうものもある。

Visual Studio Application Lifecycle Management
http://msdn.microsoft.com/ja-jp/library/fda2bad5.aspx

現実問題として入念に開発とテストを繰り返しても、いざリリースして現場に送り出すと、「想定外の使われ方をしてトラブルを出す」あるいは「見落としていた不具合が露見する」といった事態を回避するのは難しい。そして、不具合を修正すればソースコードのバージョンが増えるので、コード管理という課題も発生する。

そうなると、「開発→テスト→修正→再テストと修正確認→リリース→コード管理→また不具合の露見→振り出しに戻る」というサイクルを回し続けることになる可能性が高い。このようなアプリケーションソフトのライフサイクル管理に関わる作業についてまとめたのが、上記のコンテンツだ。

開発者向けサイトといっても、開発ツールやテクノロジーなどに関する情報だけではない。テストに関するコンテンツも充実している

ソフトウェアがある限り、開発・テスト・更新版の再リリースといったライフサイクルを回し続ける必要がある

一方、本連載の第33回で取り上げたデバイスドライバの開発についても、こんなコンテンツがある。

ドライバーの検証とテストのツールについて
http://msdn.microsoft.com/ja-jp/windows/hardware/gg463259.aspx

これは、WDK(Windows Driver Kit)に含まれているテスト作業支援用の各ツールに関する解説へのリンクをまとめたもの。特にデバイスドライバはアプリケーションソフトと比べるとOSの中核部分に近いところで動作するうえ、不具合が生じた時の影響が大きいので、使えるものは何でも活用したい。

また、開発に用いるプラットフォームと実行に用いるプラットフォームが異なるWindows CE.NETについても、こんなコンテンツがある。

Platform Builder について
http://msdn.microsoft.com/ja-jp/library/cc395908.aspx

プラットフォームのデバッグおよびテスト
http://msdn.microsoft.com/ja-jp/library/cc395525.aspx

テストはツールを活用する

WDKの説明時に何気なく「ツール」という言葉を使った。実のところ、人力・手作業だけでテスト作業をカバーするのは難しいので、可能な限りツールを用いて自動的にテストを行ったほうが効率的だ。

そのうえで、ツールだけではカバーできない部分を補う、あるいはツールによる自動テストをフォローするために、人力によるテストを上乗せしたり、いろいろと想定外の使い方や事態を想定して(というのも変な言い方だが)人力によるテストで "いじめて" みたりするのが良いのではないだろうか。

そういう考え方があるためなのかどうか、MSDNオンラインではテストツールに関する情報も多数提供されている。キーワードに「テスト」だけを指定すると前述したように収拾がつかなくなるが、「テスト ツール」と指定することで、少なくとも検索結果の上位に出てくるコンテンツは、絞り込みが可能だ。といっても件数だけ見ると、「テスト」では25万1,000件だったのに対し、「テスト ツール」とスペースを挟むとOR検索になり176万件も出てきてしまったが(苦笑)。

大所帯のMSDNオンラインだけに、単に「テスト ツール」とキーワード指定して検索すると、とんでもない数になってしまう。適宜、追加のキーワードを指定して絞り込む必要がある

実は、スペースを抜いて「テストツール」とすると101件に激減したのだが、MSDNオンラインの表記方法の関係で、これでは肝心なコンテンツを見落とす可能性がある。下の英単語が分かれているものをカタカナ表記する場合、カタカナ表記でも対応する単語ごとにスペースを入れて区切っているからだ。

こうした事情があるので、目的のコンテンツを検索するには、単に「テスト」「ツール」だけでなく、開発ツールやプラットフォームに関するキーワードを追加指定して絞り込みをかけるのがベターだろう。

何しろ、マイクロソフトの開発者向け製品が対象にしているプラットフォームは幅が広いし、歴史があるだけに関わるテクノロジーも多い。そのすべてを検索対象にしたのでは数が多すぎる。

なお、MSDNオンラインのコンテンツ検索機能はbingのエンジンを使っているので、検索キーワードなどの指定方法はbingと同じだ。bingの使い方に馴染んでいれば、検索語の指定で戸惑うことはないだろう。