リリース判定その他・テストとバグの悩ましい関係

2018年1月9日リリース判定

リリース判定でバグの状況を見る時はテストの量と質の確認ができている事が前提です

リリース判定の時にソフトの品質の善し悪しを判定する一番直感的で判り易い方法が、バグが多いか少ないかです。バグが多いソフトは品質が悪くてバグが少ないソフトウは品質が良い、とっても判り易い判定方法です。ところで、バグってどうやって数えますか? 普通はテストを行って見つけたバグの数を数えますよね。

では、テストで見つかったバグがそのソフトのバグの数でしょうか? これはそうとは言いきれないですね。今までに実施したテストで見つかったバグの数は数えられますが、これら実施する予定のテストで見るかるかも知れないバグの数は数えられません。さらに、これから実施する予定のテストでも見つからないけど、どこかに潜んでいるバグもその数は全く判りません。

テストでは全てのバグを見付ける事はできません

バグはソースコードを作成した時にコードの中にこっそと潜り込んでいます。ソースコードの全ての領域で合計幾つのバグが潜んでいるのかは誰にも判りません。このような潜在しているバグを、①色々な環境を用意して、色々な条件を揃えてた上でソフトを実行するという実機確認を行ったり、②ソースコードを設計者が読み読み込んだり解析ツールを使ったりして解析するという机上検討の作業を行ったりして、見つけ出していくのがソフトのテスト作業です。しかし、これらの作業では見つけられないバグもあります。

まあ、要するに一般的に言っているバグの数というのは「テストで見つけたバグの数」であって「ソフトウエアに含まれる全てのバグの数では無いですよ」という至って当然の事です。 そしてこの事が、リリース判定の時にテストとバグの悩ましい関係として浮かび上がってきます。リリース判定の時にソフトウエアの品質を判定する重要な指標の1つがバグの数なのに、全てのバグの数が判らないので、これで全てのバグが見つかったかどうか判断できなくて、ソフトの品質の良し悪しの判定が難しくなるからです。

テストしなけりゃバグはゼロ

例えば、同じ程度の規模のソフトAとソフトBがあって、Aのバグの数が100件、Bのバグの数が200件だったとしたら、Aのほうが品質が良いのでしょうか? テストの質と量も比べてからでないと、そうとは断言できないところが悩ましいところです。

ソフトAはテストを1,000項目実施していて、ソフトBはテストを3,000実施していた結果が、先ほどのバグの件数だったとしたら、AとBはどちらが品質が良いのでしょうか? テスト1件あたりのバグの検出率を計算するとソフトAは 0.1件/ テスト ソフトBは0.07件/テストとなって、バグ検出率の観点からはソフトBのほうが品質が良さそうです。

まあ、要するにバグの件数は実施したテストの件数に左右されるという、至って単純な話です。なのでテストの量とバグの数とで、品質は以下のように分類されます。 ②と③は判定に問題が出る事は無いのですが、②と④は品質が良いか悪いのか、この情報だけでは判定が難しいので要注意です。

テストの量とバグの数とでソフトの品質がどうなるかを表で表すと以下のようになります。

テスト量とバグ数と品質の関係 大量のバグを発見 少量のバグを発見
大量のテストを実施 品質悪いの?

② Excellent

少量のテストを実施

③ Oh my God!

品質良いの?

能力の低いいテストでは見つかるバグはゼロ

ところで、大量のテストを実施した結果、余りバグが見つからなかったら、ソフトの品質は良いと安心して良いのでしょうか? 実はここにも落とし穴があります。 テストでバグが見つかるのは、バグを見つける能力の高いテストを実施した場合です。 例えば、入力範囲が 1~100 となっている入力項目のてすととして、1,2,3、、、、100 と100項目の入力テストをしても、多分バグは見つからないでしょう。 でも -1とか999999999とかの値を入力すると、バグが見つかる可能性があります。

要するに、バグを見つける能力の高い良いテストでなければ、いくらテストの数だけを増やしても、潜在しているバグを見つけ出す事は出来ないという、これまた当然の事です。テストの量とバグの数とでソフトウエアの品質がどうなるかを表で表すと以下のようになります。

テストの質とバグ数と品質の関係 大量のバグを発見 少量のバグを発見
良質のテストを実施 品質悪いの? ② Excellent
ダメなテストを実施 ③ Oh my God! 品質良いの?

ソフトの品質をバグ検出率(バグ/KLOC)で測るのなら

結局のところ、テストの質とテストの量とが、テストで見るかるバグの数に大きく影響するという、当然の事を整理してきただけですね。 ソフトの品質をバグの数あるいはバグ検出率で判断する時には

 ① テスト密度 (テスト件数 / KLOC) と

 ② テスト品質 (直接には測れない) とを睨んで

総合的に品質の善し悪しを判定しないといけませんよ、という事です。 これが正しいという判定方法が無いので、多くのソフトのテスト状況とバグ状況を見て、テストの量と質に関する勘を見に付けるしかなくなかなか悩ましいです。 テストとバグの悩ましい関係というお話でした。