「テストに『ベストプラクティス』ない」─ソフトウェアテストシンポジウム 2011基調講演でLee Copeland氏が語る

1月25、26日の2日間にわたって、東京、目黒雅叙園にて「ソフトウェアテストシンポジウム 2011 東京」⁠JaSST '11 Tokyo)が開催されている。来場者は昨年と同程度で延べ1,500名以上となる模様だ。毎年海外からソフトウェアテストにゆかりのある著名なエンジニアをスピーカとして招聘している同イベントだが、今年は『A Practitioner's Guide to Software Tedt Design』⁠邦題『はじめて学ぶ ソフトウェアのテスト技法』等の著作で知られるLee Copeland(リー・コープランド)氏が基調講演に登場した。

Lee Copeland氏
Lee Copeland氏

“Testing Trends and Innovation⁠と題された基調講演では、同氏がこれまで開発やテスト、プロセス改善に携わってきた経験から得られた、ソフトウェアテストにおけるさまざまな進化についての知見を披露した。

Copeland氏は世界で最も有名なソフトウェアテストイベント「STAR Conference」等6つのイベントのプログラム委員長を務めるほか、『Better Software』という雑誌の編集にも携わっている。この雑誌には世界中からソフトウェアの品質向上に関わるコアな投稿が集まっているが、最近のオファーの15%がインドからだという。⁠こうした活動を通して、ワールドワイドのコミュニティを作りたいと思っています。日本のエンジニアにもぜひ積極的に関わって欲しい」という自己紹介の後、本題に入った。

Copeland氏はイノベーションとは「何か新しく、他とは違うものを想像すること」と定義し、これを「プロセス」⁠Agileからの知見」⁠教育」⁠技術とツール」そして「改善」⁠Improvement)という視点から解き明かしていった。

まず、プロセスにおけるイノベーションとして、⁠文脈駆動」⁠Context-driven)という考え方を紹介した。これは同じ手法でも背景(文脈)によってその適用意味が変わってくることに着目している。テストは多様な形で行われており、ある製品について有効なテストが他の製品で適当と言えないこともある。こうしたことから、すべての製品に適用できる「ベストプラクティス」は存在しないし、あるべきではないと説く。

「学校に先生に『嘘を付くな、正直であれ』と教えられた経験が誰でもあると思います。でも教室に刃物を持って目を血走らせたような人間が入ってきて『ユウコはどこだ?』と聞かれたときに、あなたはその質問に正直に答えますか? 何かを適用するにはその背景を考えなければいけません。あなたの組織で使えるものでも、どんなコンテクスト、背景で使えているのかを常に考える必要があるのです。」⁠Copeland氏)

チェックはツールの中、テストは「頭の中」で起こっている

Copeland氏は次に「チェッキング」「テスティング」という言葉を取り上げた。チェッキングとは、既知の考えを確認することであり、それが真実かどうか、YES or NOを見るだけである。そのため自動化も容易という。これに対してテスティングとは、今までに無かった新しい情報を探し出す行為を指す。予期していないことを探るため、学びであるとも言える。これは自動化できないものだ。テストツールの中ではなく頭の中で起きているのだから。

「優れたテスターは常道から外れたことを見つけることができる。つまりコードに対して⁠ずる賢い⁠のです。」
「優れたテスターは常道から外れたことを見つけることができる。つまりコードに対して“ずる賢い”のです。」

次に注目すべきイノベーションとして紹介されたのはCloudsourced Testing(クラウドソーステスト)だ。これはクラウドソーシングの手法を使ったテストで、ネットを通じて世界中から数万人規模のテスト担当者を集め、プラットフォーム、テスト要件、環境などを指定してテストを行うというもの。米国にこの事業を手がける大手企業が2つあり、その1社であるuTestでは、専業、兼業のテスト技術者をいつでも3万人動員できるという。これらのテスト技術者への報酬は、1つの欠陥の発見につきいくら、といった単位で、あるいは有用な情報が提供された場合に、その情報に対して支払われる。すでに米国では大きな会社でも、既存のテストチームの手薄な面を補完するような目的で利用されているという。

続いて、テスト担当者のスキル向上にあたっての問題点について話しはじめた。Copeland氏がテストプロセスアセスメント(テストのやり方を評価する)を行った大きな組織(たとえばNY証券取引所)の担当者に「テストについてのお気に入りの本は?」と尋ねると「読んだことがない」という返事が返ってきた。米国の多くの組織でそうだという。⁠あなたが交通事故に遭って横たわっているとします。手術しようとする医者に『手術に関する本を読んだことがあるか?』と聞いて『無い』と言われたらきっと不安になりませんか?」⁠Copeland氏)

米国ではまだ「自分の職務スキルを向上させる責任は企業にある」と考えている人が多いとCopeland氏は嘆きながらも、それを変えていく動きとしてインドで始まった「The Weekend Testers」というコミュニティ活動が紹介された。これはその名の通り仕事から離れる週末にソフトウェアテストのスキル向上をめざしてざまざまな技術者がG-mailやSkypeで連絡を取り合いながら、アイデアや取り組みの紹介、ツールなどの情報を提供して学ぶ場である。今ではヨーロッパやアメリカにも活動が広がっているという。

プロセスの最後としてCopeland氏が紹介したのは探索的テスト(Exploratory Testing)だ。これは同氏が当日午後に行ったチュートリアルのメインテーマで、あらかじめテストケースを決定せず、テストを行いながらテストケースを決めていくやり方。といっても場当たりなテストと違い、大まかな計画、目的、そしてタイムボックスは定めた上で行われる。おかしな振る舞い、エラーを見つけたときは、さらに異なるインプットや状況を作ってテストを掘り下げていくというところから「探索的」と呼ばれる。これによりテスト設計、テスト実行、そして学習までも同時に行うことができる。

ソフトウェア開発の「V字モデル」ではテストケースの作成を、まだそのソフトウェアが形を表していない(ソフトウェアについての知識がない)時点で行うことになるが、これではあまり意味がないとCopeland氏は言う。あらかじめの手順どおりにテストしようとしたら、再現できない不具合に必ず行き当たる。そんなときたいてい「再現できないから二度と起こることは無いだろう」と思いがちだが、たいていの場合再び起こる。

これが探索的テストの場合は、前のテストの結果を見て次のテストケースを考えていくので、再現できなかった不具合にたどり着くことも多いという。テストの行き先が予測できないが、これこそが学ぼうとしているからだ。1時間あたりの不具合発見率を調べたところ、探索的テストのほうが効果的だったという調査結果もあるとのこと。

そして探索的テストが優れているのは、製品開発の開始とともにテストにかかることができる点だとCopeland氏は説く。頭の中で考えた製品モデルと実際の動きが違っていた場合、⁠それはなぜか?」から始めることに探索的テストのポイントがある。

アジャイルが一夜でテストファーストに変えた

Copeland氏が注目している技術にアジャイルがある。とくにテストファーストが重要と語る。テストファーストはコードのハッキングのテクニックでテスト要件がないという人もいるが、そうではないとCopeland氏は言う。⁠テストケースの中に要件ができるのです。そしてテストファーストで作ったテストの中に自動されたテストケースが残るので、これが次の開発に再利用できます。」⁠Copeland氏)

テストファーストが定着する前から、Copeland氏はコードを書きながらテストを行うべきという考えを説いていたが、なかなか理解されなかったという。⁠そしてアジャイルの本が出て読まれたとたん、皆がテストを最初に書くようになりました。一夜にして状況が変わったのです。Kent Beck氏(⁠⁠テスト駆動開発入門』の著者)は偉大です(笑⁠⁠。」⁠Copeland氏)

「大量のコードがあってもテストされていなければ⁠負債⁠でしかない。」
「大量のコードがあってもテストされていなければ“負債”でしかない。」

同氏がもう1つアジャイルの技術として注目しているのがATDD(Acceptance Test Driven Development=受け入れテスト駆動開発)だ。通常のTDDは単体テストで用いられるが、ATDDはその名の通り受け入れテスト(機能テスト)に適用される。Fitnessという自動化ツールを使うことで、ツールの中でテストケースを作りながら開発を進めることができる。よくある500ページに及ぶような要件定義書ができないが、要件定義はFitnessのコードの中に書かれるという。

このほかの注目トピックとして、書物やイベントを通したエンジニア教育、ブログを通した情報発信、オープンソースのテストツール、仮想化やクラウドコンピューティングの発展によるテストプラットフォームの進化が挙げられた。

そして最後に改善(Improvement)のジャンル注目しているものとして、Copeland氏はまずTPI(テストプロセス改善)を挙げた。そんなに新しいものではないが、それほど普及していないという。改善手法を20のキーエリアに分け、それぞれの達成レベルを表にして表すというもの。その結果に応じたアドバイス、サゼスチョンが行われる。もう1つはTMMiというCMMI(Capability Maturity Model Integration)互換の、いわばテスト能力の成熟度を測るモデルだ。

だがこうした評価により改善を探る手法は、米国ではなかなか受け入れられないという。⁠アメリカはプロセス指向ではありません。カウボーイの国ですから。西部劇なのです。⁠プロセスなんてくそ食らえ! 好き勝手にやらせろ』⁠笑)という文化です。でもヨーロッパでは流行りつつあります。日本でこれが有意義かどうかはわかりません。」⁠Copeland氏)

現状に満足してはいけない

講演の結びとして「未来のイノベーション」について語られた。Copeland氏自身は将来当たる技術を予測するのが苦手だと言う。⁠天文学でブラックホールなどが観測可能な限界線を⁠イベントホライズン⁠と言いますが、私のイベントホライズンは非常に短い。」

例として、氏の学生時代のエピソードが紹介された。Copeland氏は1960年代後半、在籍していたユタ大学で「ARPANET」という物理的な損傷に強い広域ネットワークの実験に携わっていた。ユタ大学はARPANET最初の4つのノードの1つだったが、当時Copeland氏はARPANETを間近に見ながら、今後どのようになるのかまったく見当がつかなかったという。お気づきのとおり、このARPANETが現在のインターネットの原型である。

このころCopeland氏と知り合った研究者で友人のAlan Kay氏の有名な言葉「未来を予測する最善の方法は、それを発明することだ」⁠"The best way to predict the future is to invent it. ")を引用して、Copeland氏は「これこそが目指すべきことだ」と言う。⁠決して満足してはいけないのです(Don't be satisfied.⁠⁠。イノベーションを続けることを忘れないでください。」と述べて講演を締めくくった。

「予測するより未来を発明しましょう!」
「予測するより未来を発明しましょう!」

おすすめ記事

記事・ニュース一覧