細々と働くエンジニアが、細々と何かを書いていきます。

テストど素人、WACATEに参加した(6):「テストの効率を高めるには」

»

 ※予告からタイトルを変更しました。

 暫くはコンスタントに更新していた本レポート。公私ともに忙しくなったことと、他の話題で記事を書きたくなったことなどが理由で遅くなりました。すみません。レポート6回目です。2日目の様子をお伝えします。メインはグループワークの内容を取りまとめ発表することですが、その作業の前に2つほど、グループワークの内容からは若干離れた内容のセッションが行われました。

■リスクベーステストについて

 ベストポジションペーパーセッションとして、前回(2009年冬)のWACATEでベストポジションペーパー賞を受賞し、今回のWACATEで発表することになった永田 敦さんの発表です。

 リスクベーステストとは、リスクが大きいものほど早期かつ重点的にテストを行おうというものです。ここでいう「リスク」の定義は、「障害発生の頻度×障害の影響度」という2つの側面から定義します。障害が起こりやすく、顧客への影響が大きいものを優先しようということです。

 そのためには、テストの計画段階からリスクベースで考える必要があります。早期からステークホルダ(関係者)に参加してもらい、リスクベースでテストを行うことを宣言し、どこを重点的にテストするか or どこはテストをしないかを決め、スケジュールや要員を見積もって、etc……。

 そして、テストを行い、残留しているリスクを基に製品が出荷できるかの判定を行います。

■fault-proneモジュールの予測について

 ゲスト講師として招かれた、東洋大学の野中 誠さんによる発表です。

 そもそも欠陥の80%は、約20%のモジュールに存在するということが言われています。だったら、その20%のモジュールを特定すればいいのではないか、と考え、統計学的手法を用いてその特定を行うことをfault-proneモジュール予測といいます。

 統計学的な予測方法としては、モジュールの複雑度や他のモジュールからどれだけ呼び出されるか(結合度)、コードの行数などの観点(説明変数といいます)をモジュールごとに整理し、その情報を集めることで、とあるモジュールの説明変数がこうであるならこのモジュールはバグがありそう or なさそうというのを判定します。1か0かの判定です(目的変数といいます)。

 もう少しわかりやすい例でいうと、ある女性が結婚したいと思っているとします(このような例えばかりですみません)。彼女には何人もの男性がアプローチをかけているとします。そのとき、どのような観点で男性を選ぶか、ということです。例えば、「年収」という説明変数を基に判断したい場合、年収1000万以上の男性でなければ嫌だというなら、年収が7桁の男性は目的変数は1(候補から脱落)ということになります。まあ年収1000万以上なんて言ってる時点でほとんどの男性の目的変数が1になるとは思いますが。

 集めた情報を基に、統計学の式に当てはめて分析を行うわけです。本セッションでは「ロジスティック回帰分析」というものを紹介していました。

 Wikipediaから数式を拝借しました。このような式にあてはめるそうです。難しいですね……。このような式を用いて分析をし、欠陥のありそうなモジュールを特定していきます。

 ところで、最後に野中さんが、このような言葉を言っていました。

 「正確に誤るよりも、漠然と正しくありたい」

 経済学者のケインズという方の言葉だそうです。データに拘りすぎると、本質を見誤る可能性があるから気をつけましょう、ということです。

■テストの効率化のために

 2つのセッションに共通していることは、「いかにテストを効率的に行うか」という点です。ソフトウェアやシステムは複雑化の一途を辿っています。その一方で、納期やコストといった資源は絞られる一方。そのため、複雑多岐に渡るソフトウェアのすべてのケースをテストなんてしていられない、と。では、少しでも重大な欠陥を残さずに出荷するためには、どうすればいいか、というときに有効なのが「リスクベーステスト」であり、「fault-proneモジュール予測」です。

 この「いかにテストを効率的に行うか」の観点に、テスト素人の僕は目からうろこが落ちました。言われてみれば確かにそうなんですが、すべてのケースをテストするわけにはいかないんですよね。今まで、小さなWebサービスの運用業務を中心に作業をしていて、大規模の案件をやったことがなかったのもあり、「全部テストすればいいんじゃないの」という考えでいました。その点を反省しました。

 いかに効率的にテストを行うか、そのための研究を行うことって、大事なんだなと、勉強になりました。

 今回はここまでです。次回はグループワークの発表について書いていく予定です。

☆★☆

 次回予告:「僕は糸井重里ではない」

Comment(0)

コメント

コメントを投稿する