レポート

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

この記事を読むのに必要な時間:およそ 0.5 分

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氏は説く。頭の中で考えた製品モデルと実際の動きが違っていた場合,⁠それはなぜか?」から始めることに探索的テストのポイントがある。

コメント

コメントの記入