「WACATE 2010 冬」参加レポート(その1)――三浦半島でデシジョンテーブルを使ってみよう
こんにちは、第3バイオリンです。
先日、ソフトウェアテストのワークショップ「WACATE 2010 冬」に行ってきました。WACATEに参加するのはこれで3回目です。参加するたびに、新しい気付きがあり、新しい仲間に出会うことができます。今回もたくさん学んで、たくさん考えてきました。
さっそく、レポートで振り返りたいと思います。
■ 日時と場所
日時:2010年12月18日~19日
場所:マホロバ・マインズ三浦(神奈川)
前回の「WACATE 2010 夏」のときは前夜祭にも参加しましたが、今回は前日が会社の忘年会だったので、残念ながら参加することができませんでした。Twitterで前夜祭に参加した方のツイートを見る限り、とても盛り上がっていたようです。
そんな参加者たちの様子を尻目に、わたしは忘年会を終えたその足で深夜バスに乗り込み、翌朝に三浦海岸へと向かいました。かなりの強行スケジュールですね。テストエンジニアはタフでなければ生きていけない、優しくなければ生きる資格がないのです。
■ 今回のテーマ
「WACATE 2010 冬」のテーマは「温故知新」。
わざわざ説明するまでもないことかもしれませんが、「温故知新」とは、「論語」の中でも有名な言葉で、「先人の知識や歴史を研究・探求することで、新しい知見を発見することができる」という意味です。
ソフトウェアテストの歴史や、今では当たり前のように使われているテスト技法をもう一度見つめ直すことで、新しい気付きを得よう、というテーマでした。
■ ポジションペーパーセッション
オープニングで諸注意を受けた後、WACATE実行委員の井芹洋輝さんが司会を務めるポジションペーパーセッションが始まりました。井芹さんは、前回までは一般の参加者としてWACATEに参加していたのですが、今回からは実行委員として参加されました。初めての司会ぶり、なかなか良かったです。
このセッションでは、事前に提出したポジションペーパー(立場表明書)をもとに、自己紹介を行います。前回、他の参加者のポジションペーパーを見て「わたしももう少し、ネタの要素を取り入れよう。せめて、型どおりではない、わたしにしか書けないポジションペーパーを書こう」と決意しました。
わたしはコラムニストです。そこで、今回はコラム風のポジションペーパーにしてみました。結局文字ばかりになってしまいましたが、他の誰にも真似できないポジションペーパーになったという自負はありました。
さて、このポジションペーパーを使って自己紹介をするわけですが、1人あたりに与えられた持ち時間は3分です。
そのため、短時間で、ポジションペーパーに込めた想いや主義主張を効果的に伝えるのがこのセッションのポイントになるわけですが、そのあたりの準備をほとんどしていなかったため、単にポジションペーパーをさっと読み上げるだけのような感じになってしまいました。
今までに作成したポジションペーパーは文章が短めだったので、ぶっつけ本番でなんとかなってきましたが、今回はかなり長文だったのでうまくいきませんでした。
同じ班の他の人はみんなプレゼンが上手で、中にはiPadを使ってプレゼンをした人がいました。なるほど、ポジションペーパー以外のアイテムを使うというのも1つの手ですね。
3分間でポジションペーパーの内容をいかに説明するか。これは次回の宿題にします。
■ BPPセッション「WACATEとスキーに見る加速効果の共通性についての一考察」
「WACATE 2010 夏」でベストポジションペーパー賞を受賞された、小田部健さんのセッションです。
小田部さんはアウトドア派。しかも釣り、写真撮影、スキー、etc……とても多趣味でいらっしゃいます。今年はハワイで初めてスカイダイビングにも挑戦されたそうです。そんな小田部さん、今回は冬ということもあり、WACATEのテーマである「加速」を、「スキーの加速」と結びつけて考察を行ってみました。
スキーにとって加速は大切です。いかに早く最高速度まで加速し、その速度を維持するかが肝心です。そのために大切なことは、余計な力を入れずに、楽で自然な姿勢をすることです。そうすれば、力を無駄遣いすることなく、滑るという行為について100%の力を注入することができます。これは、自分を成長させるときも同じだ、と小田部さんは語りました。
さて、上手に加速できる姿勢を取るには体のバランスが大切です。そこでバランスの鍛錬を体感するために、参加者全員がその場に立って片足立ちで体を左右に回してみる、という実習を行いました。参加者が自ら体を動かすセッションは初めてだったので、新鮮でした。
実習の後は心のバランスのお話が続きました。先に余計な力を入れずに、と言いましたが、気持ちが後ろ向きだと必要な力すら発揮することができません。スキーで斜面を滑るときの姿勢は、少し前のめりなくらいが一番よい姿勢です。自分から前に突っ込むくらいの勢いでいれば、転ぶことに対する恐怖心はなくなります。
それから、小田部さんは「心のインナーマッスル」を鍛えることをお話ししました。「心のインナーマッスル」とは何でしょうか。小田部さんは、「直感的な判断」のことだと語りました。心のインナーマッスルを鍛えるために、日常生活の中で、目の前で起こっていることに対して「もし……だったらどうするか」を考えてみることを提案しました。
また、スキー競技では途中にあるポールを上手に曲がりながらゴールを目指します。つまり、途中で小さな目標をクリアしつつ、ゴールを目指すというわけです。ポールを上手に曲がるコツ、それはポールの少し手前で曲がり始めること、1つのポールを曲がった瞬間、すぐ次のポールを曲がることを考えることです。モタモタしていたらコースアウトしてしまいます。
目標となるポールをうまく曲がること、それ以前に目標を見つけることについてのコツはチャンスをうまくつかむことだと小田部さんは語りました。チャンスは生ものです。一度つかみ損ねたら次はありません。チャンスをつかむための準備を怠らないこと、チャンスを一度つかんだら勢いを止めないことが大切です。最後に小田部さんは、WACATEにはチャンスがたくさんある、そのチャンスをつかんで、別のフィールドにも活動の場を広げていってほしい、と締めくくりました。
わたし自身も、WACATEで多くの人と出会い、そこから得たチャンスを生かして新しいことにチャレンジしている最中です。小田部さんのセッションを聞いて、これからもバランスを取りつつ加速していきたいと思いました。
■ 技法を勉強する前に
WACATE実行委員の鈴木三紀夫さんのセッションです。
まずは、ソフトウェアテストのライフサイクルについての説明から始まりました。ソフトウェアテストにも、計画、分析、設計……といったフェイズがあります。このセッションでは、テスト設計についてのお話が中心でした。
しかし、特に今回驚いたのは、「テスト計画はプロセスの一部。プロセスが変われば計画も変わる」というお話でした。計画を途中で変更するということについて、はじめは違和感を覚えましたが、計画とは何が分かっているか、何が分からないのかを見極めるためのものと説明され、納得しました。
途中で、「皆さんが普段使っているテスト技法を付箋紙に書いて、用意した台紙に貼ってみてください」という課題が出ました。台紙には、縦軸と横軸が引いてあり、4つのエリアに分割されていました。縦軸は「並列処理/単一機能」、横軸は「網羅的/ピンポイント」です。
班のメンバー各自が知っている技法を付箋紙に書き出し、4つのエリアに貼っていきました。1つの班には5~6人のメンバーがいるので、重複もありましたが、人によっていろいろなテスト技法の名称が出てきました。会社や業種によって、同じような技法でも呼び方が異なるというケースも見られました。
また、班ごとにも傾向がかなり異なっていました。なかには、どの分布にも分類できずに台紙に貼れない付箋紙がたくさん出てきた班もありました。
技法を学ぶ前に、「自分が使ったことのある技法」について整理できたうえ、他の人との違いを知ることができたのは良い経験でした。
■ ワークショップ「デシジョンテーブルを使いこなそう」
WACATE実行委員の加瀬正樹さんのセッションです。
まずは、デシジョンテーブルの説明から始まりました。デシジョンテーブルとは、入力条件と出力条件の組み合わせを表にすることで、テストケースを作成する技法です(こちらを見ると、行が入出力条件、列がテストケースとなっています)。
テスト設計においてデシジョンテーブルを使用することの大きな利点は、次の3つです。
- 複雑な入出力条件の組み合わせを漏れなく整理しやすい
- プログラムの論理構成を表現できる
- 入出力条件を整理することで、仕様のバグも検出できる
デシジョンテーブルを使ううえでの注意点は、「入力、出力いずれも上から処理の順番、判定の順番に書くこと」です。つまり、プログラムでいうところのifやswitchの分岐条件の順番に書いていくということです。わたしは元プログラマなので、後の演習で、この部分はよく理解できました。
デシジョンテーブルの説明のあとは、問題を読んで実際にデシジョンテーブルを作る演習に入りました。出題されたのは割と単純な問題だったので、全員同じデシジョンテーブルができるのかと思っていましたが、条件の分け方が人によって異なりました。
例えば、「12月中、毎週月曜に割引」という条件で、割引が適用される日時の条件については「12月」と「月曜」に分ける人と、「12月の月曜」と一緒にする人がいました。
実際にどう分けるかは、内部処理も関わるところですが、単純な問題でも「簡単なことだし、自分がこう考えるから相手もそうだろう」とはいえないということを思い知りました。
■ ワークショップ「どんなテストが必要か考えよう」
WACATE実行委員の近江久美子さんと井芹洋輝さんのセッションです。
先の加瀬さんのセッションに続いて、テスト設計における技法(この場合はデシジョンテーブル)の使いどころを考えてみよう、という内容でした。
問題は「Myersの三角形」のプログラムのテストケースの作成でした。「Myersの三角形」をご存じない方もいらっしゃるかと思いますので、簡単に説明します。
- 3つの整数(三角形の3辺)を入力する
- 3辺の長さが、三角形として成立しない数値であればエラー
- 三角形として成立する場合、3つの数値が等しければ「正三角形」、2つの数値が等しければ「二等辺三角形」、それ以外の場合は「不等辺三角形」を出力する
この「Myersの三角形」(詳細な仕様はこちらをどうぞ。下の方に書いてあります)は、テストの世界ではかなり有名な問題で、第1回のWACATEでも取り上げられました。このあたりも「温故知新」ですね。
さっそく、班ごとに仕様書が渡されました。しかし仕様書をよく見ると、TBD(仕様未決定)となっている箇所がありました。ワークショップ中に仕様がFIXするので、それも見越してTBDとなっている仕様をどう扱うか考えてください、と説明がありました。なかなか凝っていますね。
その仕様書をもとに班のメンバーで考えたデシジョンテーブルと、デシジョンテーブルを作るために考えた処理フロー、その他工夫したことなどをまとめて、模造紙に書きました。
わたしの班では、デシジョンテーブルが複雑になりすぎないように、仕様ごとにテーブルを分割し、時間を有効に使うためにテーブルごとに担当者を決めて分業するスタイルを取りました。それでも最後の方は、とにかく時間に追われて、模造紙ができあがったのは終了時間間際でした。
WACATEのワークショップは何度も経験してきましたが、いつも最後の方には時間が足りなくてヒーヒーいってしまいます。しかしそれもまた、充実していて楽しいひとときでした。
最後に近江さんと井芹さんから、班ごとに作成した模造紙は、翌日壁に貼り出します、とお話がありました。
加瀬さんのセッションでも個人によってデシジョンテーブルに違いが見られたのです。班ごとになると、もっといろいろな違いがあるんだろうなと思いながら、1日目のセッションは終了しました。
第1回のレポートはここまでです。次回は、1日目の夜の様子をお送りします。