「ソフトウェアテストとは、ツールではなく、頭で行うもの」JaSST '11 Tokyoでリー・コープランド氏が基調講演

» 2011年01月25日 00時00分 公開
[内野宏信,@IT]

 ASTER (ソフトウェアテスト技術振興協会)が1月25日、26日に開催しているソフトウェアテストシンポジウム「JaSST '11 Tokyo」(Japan Symposium On Software Testing)で、世界的に有名なソフトウェア技術者、リー・コープランド氏が基調講演を行った。氏は、“イノベーション”と評価すべき、開発やテスト分野における複数の手法・事象を紹介する中で、「テストにベストプラクティスはない」と指摘、「各社が状況に応じて、あらゆる手法を使いながら“自社に最適”な取り組みを行う」ことの重要性を示唆した。

テストとは、ツールではなく、テスターの頭で行うもの

 コープランド氏はSoftware Quality Engineering社に所属し、幾多のコンサルタント実績を持つ世界的に有名な技術者。日本では「はじめて学ぶソフトウェアのテスト技法」(日経BP社/2005年)の著者としても知られている。今回は「テスティングトレンドとイノベーション」と題して講演を行い、昨今の開発現場のトレンドと、「プロセス」「アジャイル開発」「教育」「技術とツール」「プロセス改革」という5つの分野で注目されている、近年の“イノベーション”と言える手法や事象について解説した。

写真 Sofatware Quality Engineering社の技術者、「はじめて学ぶソフトウェアのテスト技法」の著者として、世界的に有名なリー・コープランド(Lee Copeland)氏

 氏がまず紹介したのは「プロセス」における「Context-driven School」という考え方だ。これは「“文脈や背景”を考えてテストを行う」ことの重要性を説くもの。というのも、どんなソフトウェアも、開発される背景や、持つべき機能、使われる目的、環境などはそれぞれが異なる。コープランド氏はその点を指して、「仮にベストプラクティスという言葉を“どんなものにも適用できるもの”と定義するなら、テストにベストプラクティスはない。“文脈や背景”を考え、それに最適な形で柔軟にテストを行うことが重要だ」と述べ、これが具体的にはどういうことなのか、ユニークなたとえを用いて解説した。

 「例えば、大学で哲学の講義中、教授が『常に正直であること』の重要性を生徒たちに教えていたとする。そこに突然、刃物を持った強盗が押し入ってきて『Aはどこにいる! Aを出せ』と叫んだとしよう。そんなときも“正直であること”が大切だからと、Aの居場所を教えるのが正しいと言えるだろうか? 同様に、いくらテストプラン、テストケースを書くことが大切だからといっても、あまり時間が取れないときには、すぐにテストに取り掛かるべきだろう。つまり、すべての条件、状況、目的に適用できるベストプラクティスなどなく、“背景・文脈に応じた臨機応変な対応”が大切ということだ」

 また、「“チェック”と“テスト”の違い」についても解説。チェックとは「既知のものを確認すること」「仕様通りに機能するかを確認すること」だが、テストとは「未知のもの、予期していないもの、新しいものを探す行為だ」という。「つまり、テストとは一種の“学習”。真の“テスト”とは、テスターの頭の中で、あらゆる予測を立てながら行うものであり、決してツールの中で行うものではない。換言すれば、決して自動化できない取り組みが本当のテストだ」と述べ、テストという行為の本質を指摘した。

大切なのは、自社に最適な方法を選ぶこと

 そうした前置きのうえで、コープランド氏は“近年のイノベーション”と言える複数の手法・事象を紹介した。具体的には、テスト計画を作らず、一定時間内でテスターが自由にあらゆるテストを行い、エラーなどが見つかれば、さらに掘り下げてテストをしていく「探索的テスト」、先にテストケースを書いて逐一テストを行いながら実装コードを書いていく「テストファースト開発」、システム全体が要求仕様どおりに機能するか否かを試すテストケースを、ユーザー側が用意する点に特徴がある「受け入れテスト開発(Acceptance Test Driven Development)」などだ。

 このうち、テストファースト開発では「テストケース作成を通じて、仕様が明確になる」「必ずテストケースが作られるため、それがそのままドキュメント資産となる」といったメリットがあることや、「受け入れテスト開発」では、ユーザー側が作るテストケースが“究極の仕様書”と言えることなども解説。現在は、テスト/開発手法のバリエーションが充実しており、その特徴に応じて選択の幅が広がっていることをあらためて示した。

 また、仮想化技術によってテスト環境をスピーディに用意できるようになったが、そのほかにも、テストを効率化するさまざまな手段があることを解説。オープンソースのテストツールや、状況に応じて不特定多数のテスターを募ってテスト作業を委託する手法『クラウドソーシング(crowd sourcing)』などを紹介した。「テストプロセスの改善」についても、テストプロセスを評価して段階的に改善していく「TPI(Test Process Improvement)」や「TMMi(Testing Maturity Model integlation)」などの手法があることを挙げ、「“自社にとってベストな方法で行う”ために、あらゆる手段を積極的に検討すべき」と主張した。

「未来を予測する最良の方法は、作ってしまうことだ」

写真 会場となった東京・目黒雅叙園の広大なホールを満席にした技術者ら

 このほかコープランド氏は、個人レベルで取り組むべき点にも触れた。例えば「教育」分野の“イノベーション”として、週末に各企業の技術者が集まり、皆で1つのソフトウェアをテストして、その手法やアイデアを交換し合う「Weekend Testers」と呼ばれる取り組みがあることを紹介。「会社では、ある規定された方法でしかテストを行わない。この点で、会社が育ててくれると考えるのは間違いだ。自ら進んで学習し、自分自身でスキルを高め、その幅を広げていくことが大切だ」とアドバイス。

 さらに、講演の締めくくりでは、「これまであらゆる“イノベーション”が創出されてきたが、今後はどんなものが登場してくるだろう?」と、来場者らに問い掛けたうえで、「The best way to predict the future is to invent it――未来を予測する最良の方法は、それを作ってしまうことだ」と、オブジェクト指向プログラミングの基礎を築いた功績者、アラン・ケイの言葉を引用。「次のイノベーションの創出は、ここにいる皆さんにかかっている」と力説し、開発の手法、ツール、開発に携わる「人」のすべてに、大きな可能性が広がっていることを示唆した。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ