つれづれなる技術屋日記

しがない技術屋。専門は情報工学で、「つれづれ技術屋」って呼んで。

バグカーブ 対数曲線や二次曲線での近似のお勧め

バグカーブ/バグ曲線とかソフトウェアの信頼度成長曲線って、ソフトウェア工学での大きなテーマである。ちょっとした会合や講演会の題材、あるいは学術論文でのネタになることも少なくない。 代表的な曲線は、ゴンペルツ曲線とかロジスティック曲線とかだろう。

ただし、ソフトウェアテスト(具体的にはシステムテストであるケースが多い)の初期に無理に曲線を当てはめてみて想定と大きく違ったり、 測定値と予想との乖離が気になることがある。前者はある意味仕方ないが、後者はもっといい近似曲線がないだろうかと考えてしまう。(ちなみに、ここでは、バグ発生のモデルではなく、あくまで曲線近似の世界のことを扱う。そのことや、近似が成長曲線でないので、ここでは”バグカーブ”と呼ぶことにする。)

ここ1,2年前くらいから、少し”もやっと”したものがあったが、 Day2の本を読んで納得した。以下の左が、Day2の統合テストでのバグカーブ。

f:id:honda-jimusyo:20200916120428j:plain f:id:honda-jimusyo:20200916120400g:plain


 
ちなみに、上の右の図は、  http://www.pmalignment.com/web/note/atz/atz43.html で紹介されているもので「ソフトウェア品質ガイドブック 森口繁一編 日本規格協会」に記載されている図とのこと。

1,2年前から少し”もやっと”していたのが、テスト開始初期段階のカーブ。上の2つのように、急に立ち上がるのが旧来と違っていて気になった次第である。自分の見聞きするケースにはそれが多く、ちょうど右での一般的な成長曲線のカーブを重ねた際に気になっていた。 もう○○年前の、ちょっと大きなプロジェクトでバグカーブを作成し、所謂S字カーブになり納得していた。理由付けとしては、テストメンバーが不慣れでバグの発生件数が少ない → 次第に増える → 終盤になるとバグ対策の効果でバグの発見自体が少なくなる。

それが昨今、初期段階に急な立ち上がりのカーブを目にする機会が増えた。最初、自分の見聞きするケースでは横軸を日数ではなくテスト件数にすることが多いからかとも思ったが、そればかりではなさそうと感じていた。ちなみに、昔に横軸を日数にしたのは、(紙ベースの時代でも)トラブルシートでのトラブル発生日を元に集計すれば求まったためである。しばらくしたら、BTS(バグトラッキングシステム)により、それらが自動的に集計できるようになった。

しかし、昨今は、テストの進捗管理の実施も普及してきたので、その日のテストの実施件数を把握している事が多い。 Day2の本を読んでもバグ件数の立ち上がりが急だったので、一般的にもそうだろうと考え、ある考えに行き着いた。

つまり、テストチームは事前に仕様書を読んだりテストケースの準備をしている。場合によっては、プレリリース版を入手してバグの多そうなところも分かっているかもしれない。しかもテスト技術が発達したり、テストエンジニアやテストグループのリーダーにスキルや進捗管理能力の高い人を配置するようになっている。そうすると、テスト開始と同時に、多量のバグレポートが発行される。これは、ある意味では必然である。

そうなると、バグ曲線はS字カーブよりも、下のような対数曲線等の近似がぴったりである。あるいは思い切っての近似としては、あるところまでは直前で、あるところからなだらかとか水平になると考えてよい。例えば水平になるのは、市場投入予定の2週間前からと想定するなどである。

下はその前提で、仮想的なテスト件数とバグ件数を近似曲線で示したもの。対数曲線近似と二次多項式近似を示している。対数曲線近似や二次多項式近似のメリットは、近似曲線としてエクセルに標準でついていることだろう。具体的には、エクセルでの近似曲線のオプションで指定する。(OpenOfficeでは対数曲線近似は行えても、自動的に係数表示しない? Rだと、近似曲線を記述する格好になると思われる。)

f:id:honda-jimusyo:20200916120404j:plain

 

f:id:honda-jimusyo:20200916120408j:plain


 
また下は、上記のデータをSPSS(ただし 15.0J)での回帰分析により、2つの曲線を描いたものである。

f:id:honda-jimusyo:20200916120412j:plain

 

f:id:honda-jimusyo:20200916120416j:plain


 
(ちなみにDay2でのバグカーブもX軸は件数。しかも2ヶ月程度で30万件強のテストを実施している。これはこれで驚きである。しかもバグ件数の想定が2619件で実績が2008件と、予測とのずれが少ないし、しかも絶対的にバグ率が小さい。)

企業によっては、公の資料としてゴンペルツ曲線などでの予想カーブを描かないと行けないなどがあるかもしれない。しかし、ソフトウェアテストの実務上は、対数曲線や二次多項式近似あるいは直線近似との乖離を監視するので良いと考える。特に、二次多項式近似あるいは直線近似の場合は、発見バグ数の予測によりカーブを求めることが容易である。工夫すれば、対数曲線での予測カーブを求めることも可能となり、実際の発見数との乖離を早期に見つけることが出来、差異に対する対応が行いやすくなる。 興味あれば、お試しあれ。

©2005-2020 ほんだ事務所(honda-jimusyo) All rights reserved.