...

バグのパターンを用いたテストの提案 - JaSSTソフトウェアテスト

by user

on
Category: Documents
19

views

Report

Comments

Transcript

バグのパターンを用いたテストの提案 - JaSSTソフトウェアテスト
ソフトウェアテストシンポジウム 2006
JaSST’06: Japan Symposium on Software Testing 2006
バグのパターンを用いたテストの提案
-バグのナレッジマネジメント-
河野 哲也†
西 康晴‡
†電気通信大学大学院電気通信学研究科システム工学専攻 〒182-8585 東京都調布市調布ヶ丘1-5-1
E-mail:
†{kouno,nishi}@se.uec.ac.jp
あらまし 我々の生活に欠かせない携帯電話や家電製品は、内部に組み込まれたソフトウェアによって多機能化
され、付加価値を高めている。現在、ソフトウェアのテストには莫大な工数がかかっているが、その多くの原因は
増加した機能を組み合わせてテストすることにより、指数関数的にテスト項目数が増加してしまうからである。よ
って、テスト項目数の急激な増加を抑えつつ、多くのバグを検出することが急務となっている。そこで、本研究で
はバグを分析することでテストを改善させる方法を提案する。まず初めに、類似のバグに分類しバグのパターンを
抽出する。そして、バグのパターンをテストの観点とすることにより、バグの検出率を向上させる。
キーワード ソフトウェアテスト、フィードバックテスト、パターン、ナレッジマネジメント
The Pattern of Bugs Using for Testing Improvement
-Knowledge Management of Bugs-
TetsuyaKOUNO†
YasuharuNISHI†
†Department of Systems Engineering,The University of Electro-Communications,
1-5-1 Chofugaoka, Chofu, Tokyo 182-8585
E-mail:
Japan
†{kouno,nishi}@se.uec.ac.jp
Abstract Our lives depend on software. Most electronic products such as mobile phones and DVD recorders are
controlled by embedded software. Nowadays, testing phase takes enormous effort. We should avoid combinations of functions.
This paper proposes the method improving testing. First, we extract a pattern of bugs. Second, we detect a lot of bugs for using
the pattern.
Keyword Software Testing, Feedback Testing, Pattern of Bugs, Knowledge Management
1. は じ め に
た機能を組み合わせてテストすることにより、指数関
我々の生活に欠かせない携帯電話や家電製品は、内
数的にテスト項目数が増加してしまうからである。そ
部に組み込まれたソフトウェアによって多機能化され、
れが顕著に表れているのが、携帯電話である。テスト
付加価値を高めている。しかし、身の回りにあるソフ
項 目 が 50 万 件 を 超 え て い る と い う 極 め て 深 刻 な 事 例
トウェアには多数のバグが存在し、我々の生活は脅か
も あ る [1]。よ っ て 、テ ス ト 項 目 数 の 急 激 な 増 加 を 抑 え
されている。例えば、自動車は組み込みソフトウェア
つ つ 、多 く の バ グ を 検 出 す る こ と が 急 務 と な っ て い る 。
によって数十の電子制御ユニットが制御されている
そこで、すべての組み合わせテストを実施しようと
[1]。も し 、エ ン ジ ン を 制 御 し て い る ソ フ ト ウ ェ ア に バ
するのではなく違うアプローチが必要である。
グがあれば、生活に支障をきたすのは説明するまでも
Davis[2] は 「 バ グ は 偏 在 す る 」 と い う 経 験 則 を 示 し 、
ない。
Kaner[3]は 実 際 的 な テ ス ト 戦 略 に つ い て 「 バ グ の 出 方
しかし、ソフトウェアの品質が十分に管理できてい
を深く理解したうえで、バグが出そうなテストを行う
るとは到底言うことはできない。実際に組み込みソフ
べ き で あ る 」と 述 べ て い る 。Craig[4]は ソ フ ト ウ ェ ア の
トウェアのバグによるリコール問題が後を絶たない
リ ス ク に 基 づ く テ ス ト を 示 し 、 Black[5]は 不 具 合 モ ー
[1]。 と は い え 、 開 発 現 場 で は テ ス ト に 全 体 の 3~ 5 割
ド を 品 質 リ ス ク と し て 捉 え た FMEA 手 法 を 提 案 し て い
の工数をさき、血のにじむような努力をしているのも
る 。西 [6]は テ ス ト を 網 羅 的 に 行 う の で は な く 、ピ ン ポ
事実である。
イ ン ト 化 す る こ と が 重 要 で あ る と 主 張 し て い る 。ま た 、
テストに莫大な工数がかかる多くの原因は、増加し
河 野 [7] は バ グ の パ タ ー ン に 着 目 し た テ ス ト の 改 善 を
提案しているが、設計したテストケースがどれくらい
のバグを検出できるかは示せていない。
ターンを抽出する。ここで、修正のコメントの記述を
一方で、現場の経験豊富なテスト技術者は、ある程
そろえるとパターン抽出が容易になると言われている
度バグが出ればノウハウ的にバグの傾向をつかみ、明
[9]。 以 上 の 手 順 よ り 複 数 の パ タ ー ン (バ グ の パ タ ー ン
示的ではなく勘と経験で多くのバグを見つけている場
群 )を 抽 出 す る 。
合もある。つまり、バグの特徴や性質を把握し、バグ
3.2. バグのパターンの構 造 化
の多そうな部分が理解できれば効率的なテストが実施
テストケース設計時に一つ一つのパターンを観点
できる。バグの傾向を表出化させ、それをテスト工程
として扱うのではなく、パターン群を構造化しそれを
へフィードバックさせるのである。つまり、バグのナ
観点として扱う方が適切である。なぜなら、パターン
レッジマネジメントを行うのである。
群の中には似ているパターンもあれば、全く異なるパ
そこで本研究では、バグの特徴、性質の傾向に着目
ターンも存在する。それらが混在した状態で扱うより
し、バグのパターンを用いたテストを提案する。そし
は構造化を図った状態で扱う方が分かり易いからであ
て、実際のソフトウェアのバグに適用する。適用で得
る。本研究では、パターンを構造化したバグのパター
られたパターンについてプロダクト・アフォーダンス
ンツリーを提案する。
という概念を用いて考察する。
2. パ タ ー ン 抽 出 に 用 い る 情 報
バグのパターン群を似ているパターンに分類し、抽
象 化 の 概 念 を 用 い 新 た な パ タ ー ン を 抽 出 す る 。つ ま り 、
バグのパターン抽出にはあらゆる情報を用い検討
パターンの集まりからパターンを抽出しているのであ
することが望まれるが、テスト工程で扱える情報には
る。そして、新たなパターン群よりパターンを抽出す
限りがある。本研究では次の情報が扱えるものしてパ
る 。こ の よ う に 子 (似 て い る パ タ ー ン )が 親 (新 た な パ タ
ターン抽出を行う。
ー ン )を 作 り 、ま た 親 が そ の 親 を 作 る と い っ た 逆 親 子 関
・バグレポート
係が成立する。この逆親子関係を明示したものがバグ
・ 仕 様 書 (要 件 定 義 書 )
のパターンツリーである。
バグレポートとはテスト技術者がバグを検出した
時、データベースにバグに関する情報を登録するもの
作業工程
である。データベースによりバグレポートの一元管理
が 行 え る 。通 常 バ グ レ ポ ー ト の 情 報 に は 、バ グ の 概 要 、
作業へのインプット
バグレポート
パターン抽出
作業のアウトプット
複数のバグのパターン
仕様書
再現性、バグ内容及び再現方法、担当者、修正のコメ
ン ト 等 [4]が 記 載 さ れ て い る 。バ グ の 概 要 、バ グ の 内 容
及び再現性、担当者についはテスト技術者が記入し、
修正のコメントは設計の技術者、プログラマが記入す
パターンの構造化
複数のバグのパターン
バグのパターンツリー
る 。開 発 側 か ら の 唯 一 の 情 報 は 修 正 の コ メ ン ト で あ る 。
この項目の情報が最も重要と考えるテストチームも多
い [8]。
バグのパターンツリー
テストケース設計
仕様書
3. バ グ の パ タ ー ン を 用 い た テ ス ト の 提 案
バグのパターンを用いたテストでは、図 1 のプロセ
ス [7]を 提 案 す る 。バ グ の 特 徴 、性 質 を パ タ ー ン と し て
抽出し、得られた複数のパターンをバグのパターンツ
テストケース
テスト実施
製品
テストケース
バグ
リーとして構造化を図る。次に、バグのパターンツリ
ーを観点としテスト設計を行う。テスト実施では、テ
ストケースに従い製品をテストする。
3.1. バグのパターン抽 出
一言にバグのパターンといっても様々なパターン
図 1
バグのパターンを用いたテストプロセス
3.3. テストケース設 計
バグのパターンツリーを観点とし、仕様書の中から
バグを作りこんでいるであろう部分を検索し、それを
が考えられるが、本研究ではバグを作り込むメカニズ
テストするテストケースを設計する。
ムによるパターンを抽出する。
3.4. テスト実 施
バグレポートの修正のコメントから、どのようにし
テストケースに従い製品をテストし、バグが検出さ
てバグが作り込まれたのかのメカニズムを明らかにす
れればバグレポートを登録する。この作業は通常のテ
る。そして、バグを同じようなメカニズムまたは似た
スト実施と同様である。
ようなメカニズムに分類する。本質的に何が同じなの
か、何が似ているのか分析し、抽象化の概念を用いパ
4. 適 用
4.3. テストケース設 計
組 み 込 み ソ フ ト ウ ェ ア の GUI 部 分 で あ る メ ニ ュ ー 機
バグのパターンのツリーを観点として、テスト技術
能でのバグを対象とし、バグのパターンを用いたテス
者によりテストケース設計を行った。仕様書の中から
トを適用する。また、テストケースレビューにてテス
バグのパターンツリーに該当する部分を検索し、それ
トの精度を検討した。
をテストするテストケースを設計した。
4.1. バグのパターン抽 出
4.4. テストケースレビュー
バグが作り込まれたメカニズムを明らかにした結
パ タ ー ン を 用 い ず に 設 計 し た テ ス ト ケ ー ス (テ ス ト
果、数件が同じようなメカニズムとして分類できた。
ケ ー ス 群 A)と 本 適 用 で 設 計 し た テ ス ト ケ ー ス (テ ス ト
図 2 のようにパターン抽出を容易にするため、バグレ
ケ ー ス 群 B)の 精 度 を 検 討 す る 。
ポートの修正のコメントをそろえた。その結果「~
テ ス ト ケ ー ス 群 A は 1834 件 、 テ ス ト ケ ー ス 群 B は
時・・・場 合 が あ る こ と を 考 慮 し て い な か っ た 」と 書 き
208 件 で あ っ た 。 ま た 、 テ ス ト ケ ー ス 群 A で 検 出 し た
換えることができた。
バ グ は 39 件 、 テ ス ト ケ ー ス 群 B で 検 出 す る で あ ろ う
こ こ で 抽 象 化 を 行 う 。「 ~ 時 ・ ・ ・ 場 合 が あ る 」 を
「・・・・・する場合がある」と置き換える。
「・・・・・す る 場 合 が あ る 」の だ か ら 通 常 は「・・・・・
す る 」と は 違 う こ と を す る の で あ る 。つ ま り 、「・・・・・
バ グ は 18 件 で あ っ た 。 検 出 率 は テ ス ト ケ ー ス 群 A で
2.1%、 テ ス ト ケ ー ス 群 B で 8.7%と な っ た 。 よ っ て 、
約 4 倍の精度向上となり、良好な結果が得られた。
5. パ タ ー ン 「 例 外 」 の 考 察
する場合がある」のは「例外」の時なのである。よっ
4 章の適用で抽出したパターン「例外」について考
て 図 3 に 示 す よ う に 、こ こ で 抽 出 で き た パ タ ー ン は「 例
察する。バグを作り込むメカニズムを整理すると「パ
外 」で あ る 。バ グ を 作 り 込 ん だ メ カ ニ ズ ム は 、”「 例 外 」
タ ー ン は エ ラ ー モ ー ド を 誘 発 す る 」と い え る 。こ こ で 、
を 考 慮 し て い な か っ た ”と い え る 。
エラーモードとは人間の作業ミスを一般化したもので
“Aの操作”
“Aの操作”
”B未接続“
“C使用”
時
時
時
時
“aの状態が変わる“
“bが変更される“
“cを参照する“
“dを参照する“
場合があることを
考慮していなかった
場合があることを
考慮していなかった
場合があることを
考慮していなかった
場合があることを
考慮していなかった
図 2
あ る 。本 適 用 で は 、”パ タ ー ン「 例 外 」が エ ラ ー モ ー ド
「 考 慮 漏 れ 」を 誘 発 し て い る ”と 説 明 で き る 。そ こ で 本
章 で は 、「 プ ロ ダ ク ト・ア フ ォ ー ダ ン ス 」[10]と い う 概
念 を 用 い た 時 、「 例 外 」と は ど う い っ た も の な の か 検 討
し、パターンとエラーモードの関係を明らかにする。
5.1. プロダクト・アフォーダンス
修正のコメントの記述をそろえた例
「プロダクト・アフォーダンス」とは、米国の心理
学 者 Gibson が 提 案 し た ア フ ォ ー ダ ン ス [11]を 拡 張 し た
例外
ものである。
ア フ ォ ー ダ ン ス と は 、afford(ア フ ォ ー ド )の 意 味 す る
・・・・・・
・・・・・・
・・・・・・
バグX1
バグX2
バグXn-1
「 ~ が で き る 、~ を 与 え る 」か ら き た 造 語 で あ り 、「 も
・・・・・・
のをどう使うかは、そのものが情報をアフォードして
図 3
バグXn
い る (与 え て い る )」 と い う 概 念 で あ る 。 例 え ば 、 椅 子
「例外」パターンの抽出
は “ 座 る ” と い う 情 報 を ア フ ォ ー ド し 、 床 は “ 立 つ ”、
4.2. バグのパターンの構 造 化
あるいは“歩く”という情報をアフォードしている。
本適用で抽出したパターン「例外」は、親のパター
アフォーダンスという概念は、デザインの良し悪し
ン に 該 当 す る も の で あ っ た 。よ っ て 、「 例 外 」よ り 子 の
と し て よ く 議 論 さ れ る [12]。ま た 、安 全 性 に お い て は 、
パターン、孫のパターンと順に導出した。図 4 に示す
製品を扱う場合のヒューマンエラーの起こし易さをア
ようなバグのパターンツリーが構築できた。
フ ォ ー ダ ン ス の 概 念 を 用 い て 検 討 し て い る [13]。
本研究では、ヒューマンエラーを引き起こす原因は、
例外
製品がアフォードしている情報と製品の実際の取り扱
A1
A2
いとの間に生じるギャップによるものであるとする。
例えばドアに取り付けられた水平のバーは引くことを
B2
B3
B4
B5 B6
C1 C2 C3
C4
C5
C6 C7 C8 C9 C10 C11
B1
B7
B8
B9
アフォードしている。しかし、実際の取り扱いは押し
て開ける場合はヒューマンエラーを引き起こしやすい
だ ろ う 。「 引 く 」と「 押 す 」と い う ギ ャ ッ プ が 生 じ 、そ
れが原因でヒューマンエラーを引き起こしたのである。
図 4
パターンツリー
プ ロ ダ ク ト ・ ア フ ォ ー ダ ン ス と は 、「 ど の よ う に 実
装 す る か は 、仕 様 書 自 身 が 情 報 を ア フ ォ ー ド し て い る 」
論が得られた。
という概念である。つまり、仕様書はどのように実装
パターンを明らかにしテスト工程へフィードバッ
するのかといった情報をプログラマにアフォードして
クさせることで多くのバグの検出が可能になる。パタ
いる。そして、実際に実装すべき情報とアフォードし
ーンはテストでの大きな武器となり、テスト工程の改
ている情報との間にギャップが生じると、プログラマ
善が行える。
にはエラーモードが誘発されバグを作り込んでしまう
のである。
例えば、一般によく見かけられるバグに、機能が使
わ れ な く な っ た と き の 処 理 (非 機 能 要 件 )の 抜 け が あ る 。
これを、プロダクト・アフォーダンスの概念で説明す
今 後 の 課 題 と し て は 、 プ ロ ダ ク ト ・ア フ ォ ー ダ ン ス
に着目したパターン抽出プロセスの検討、そのほかの
パターン抽出、新たなテストプロジェクトへの適用な
どが挙げられる。
謝
辞
る 。仕 様 書 と い う も の は 、「 使 う 機 能 の 処 理 を 実 装 す る
本 研 究 を 進 め る に あ た り 、 (株 )ベ リ サ ー ブ の 江 澤 宏
こ と 」を ア フ ォ ー ド し て い る 。つ ま り 、「 機 能 が 使 わ れ
和様、浅岡正美様、山崎太郎様には大変お世話になり
なくなった時の処理を実装すること」はアフォードさ
ま し た 。各 位 に 対 し 心 か ら 感 謝 い た し ま す 。ま た 、(株 )
れず、そこにギャップが生じ、エラーモード「抜け」
ベリサーブの皆様にも感謝いたします。
を誘発させているのである。
5.2. プロダクト・アフォーダンスにおいての「例 外 」
仕様書にたくさんの同じ処理の項目があり、その中
に 1 つだけ例外的に違う処理が含まれていた場合があ
る と す る 。こ の 仕 様 書 は 、「 た く さ ん の 同 じ 処 理 を 実 装
す る こ と 」を ア フ ォ ー ド し 、「 1 つ だ け 例 外 的 に 違 う 処
理を実装すること」はアフォードされないのではない
だろうか。
例 え ば 、50 項 目 中 49 項 目 は 同 じ 処 理 を 割 り 当 て 、1
つの項目だけが例外的に違う処理の割り当てが仕様書
に あ る と す る 。こ の 仕 様 書 は「 50 項 目 す べ て を 同 じ 処
理で実装すること」をアフォードしている。しかし、
実 際 に 実 装 す べ き 情 報 は「 同 じ 処 理 を 49 項 目 に 割 り 当
て 、1 項 目 は 違 う 処 理 を 割 り 当 て る 」で あ る 。こ こ で 、
アフォードしている情報と実際に実装すべき情報との
間にギャップが生じ、エラーモード「考慮漏れ」を誘
発させているのである。
5.3. パターンとエラーモード
プロダクト・アフォーダンスの概念で、パターンと
エラーモードを説明する。仕様書の中でアフォードさ
れない性質がパターンである。そのパターンによりギ
ャップが生じ、それが原因でエラーモードを誘発させ
るのである。
6. あ と が き
本研究では、バグの特徴、性質の傾向に着目し、バ
グのパターンを用いたテストを提案した。実際のソフ
トウェアのバグに適用し、パターン抽出、パターンの
構造化、テストケース設計を行った。テストケースレ
ビューにてテストの精度を示し良好な結果が得られた。
また、本適用で抽出できたパターンは「例外」であ
った。この「例外」をプロダクト・アフォーダンスと
いう概念を用い考察した。その結果、アフォードされ
ない性質がパターンであり、そのパターンによりギャ
ップが生じ、エラーモードを誘発させているという結
文
献
[1] 日 経 ビ ジ ネ ス (2005):”ソ フ ト が 危 な い 品 質 崩 壊
ク ル マ も 電 機 も 鉄 道 も ”,日 経 B P 社 , 2005 年 4 月
25 日 ・5 月 2 日 合 併 号 , pp.30-44.
[2] Davis,A.(1995):201Principles of Software Development, McGraw-Hill.( 松 原 友 夫 訳 (1996):” ソ フ ト ウ
ェ ア 開 発 201 の 鉄 則 ”, 日 経 BP 社 )
[3] Kaner, C. Bach , J . Pettichord, B.(2002): Lessons
Learned in Software Testing,John Wiley & Sons. (テ
ス ト 技 術 者 交 流 会 訳 (2003):”ソ フ ト ウ ェ ア テ ス ト
293 の 鉄 則 ”, 日 経 BP 社 )
[4] Craig, R. Jaskiel, S.(2002):“Systematic Software
Testing”,Artech House. ( 宗 雅 彦 監 訳 成 田 光 彰 訳
(2004): “体 系 的 ソ フ ト ウ ェ ア テ ス ト 入 門 ”, 日 経
BP 社 )
[5] Black, R. (2002):“Managing the Testing Process
Second Edition”, John Wiley & Sons. (テ ス ト 技 術
者 交 流 会 監 訳 ト ッ プ ス タ ジ オ 訳 (2004): “基 本
か ら 学 ぶ テ ス ト プ ロ セ ス 管 理 ”, 日 経 BP 社 )
[6] 西 康 晴 , 河 野 哲 也 (2005):”障 害 モ ー ド ク ラ ス ツ リ
ー に よ る テ ス ト の 改 善 と プ ロ セ ス の 改 善 ” , 4th
Workshop of Critical Software , pp.29-34.
[7] 河 野 哲 也 ,西 康 晴 (2005): “バ グ の パ タ ー ン に 着 目
し た テ ス ト の 改 善 ”, 日 本 品 質 管 理 学 会 第 77 回
研 究 発 表 会 , pp.253-256.
[8] Kaner, C. (1999):“Testing Computer Software
Second Edition”, John Wiley & Sons. (テ ス ト 技 術
者 交 流 会 訳 (2001): “基 本 か ら 学 ぶ ソ フ ト ウ ェ ア
テ ス ト ”, 日 経 BP 社 )
[9] 西 康 晴 (2003): “不 具 合 の 分 析 と フ ィ ー ド バ ッ ク
に よ る テ ス ト の 設 計 ”, Japan Symposium on
Software Testing 2003 , pp.49-54.
[10] 西 康 晴 , 河 野 哲 也 (2005):”ソ フ ト ウ ェ ア ・ ハ ー ド
ウェア複合システムにおける信頼性情報データ
ベ ー ス の た め の デ ー タ 構 造 の 検 討 ”, 電 気 通 信 大
学大学院情報システム学研究科シンポジウム,
pp.14-17.
[11] 佐 々 木 正 人 (1994):”ア フ ォ ー ダ ン ス -新 し い 認 知 の
理 論 ”, 岩 波 書 店 .
[12] Norman, Donald A(1988):”The Psychology of
Everyday Things”,Basic Books.(野 島 久 雄 訳 (1990):”
誰 の た め の デ ザ イ ン ?認 知 科 学 者 の デ ザ イ ン 原 論 ”,
新曜社)
[13] 芳 賀 繁 (2000):” 失 敗 の メ カ ニ ズ ム ”, 日 本 出 版 サ ー
ビス
Fly UP