2015年5月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
無料ブログはココログ

« 【ソフトウェア信頼度成長モデルを少しまじめに考える③】直感的理解容易性のために忘れられがちであるが悩ましい前提③ | トップページ | 【ソフトウェア信頼度成長モデルを少しまじめに考える⑤】1つ目の仮定:J-M(Jelinski-Moranda)モデルの仮定② »

2009年3月16日 (月)

【ソフトウェア信頼度成長モデルを少しまじめに考える④】1つ目の仮定:J-M(Jelinski-Moranda)モデルの仮定①

先に挙げた書籍「ソフトウェア品質工学の尺度とモデル」には、ソフトウェア信頼度成長モデルのモデルの仮定を2組紹介している。
この2組の仮定のうちどちらかを十分に満たすような実際の開発案件があれば、ソフトウェア信頼度成長モデルを上手く導入できるであろう。

---------------------------------------------------------------------------
J-M(Jelinski-Moranda)モデルの仮定

1.テスト開始時点で未知のN個のソフトウェアの欠陥が存在する。
2.故障はランダムに起こる--故障間隔は独立である。
3.全ての欠陥は故障発生に等しく寄与する。
4.修正時間は無視できる。
5.各故障に対する修正は完全であり、欠陥修正中に新しい欠陥は混入しない。

---------------------------------------------------------------------------
なかなか、クリアすることが難しそうな仮定である。

1.は、まあ、そう仮定すればよいのであろうから満たすと言ってよいであろう。

2.は、つまり、テストケースの実施順に関わらず、同じテスト対象プログラムであれば、理論上は同じ形の曲線になることを意味する。
実際の開発現場でこれを実現することは少し難しい。
「ソフトウェア品質工学の尺度とモデル」でも触れられているが、あるバグが見つかったら類似バグが無いかをテストすることや、バグが多く見つかったプログラムに対し集中的にテストすることは通常の開発においてはよく行われる。
しかし、これは「故障はランダムに起こる--故障間隔は独立である」に反する可能性が高い。
また、重要な機能や複雑な機能などを先に集中的にテストすることも行われるが、これも。故障間隔の独立性に反する結果となる可能性がある。

テストケースの実施順に関わらず、同じテスト対象プログラムであれば、理論上は同じ形の曲線になることを満たすテストは限られてくる。
テストケースの挙げ方・実施順に恣意性があると、条件を満たすことが困難になるし、プログラムの新機能におけるバグと、性能上の問題、従来機能のデグレードによるバグが、ランダムに起こるようにテストすることは難しいであろう。新機能確認テストと、性能テスト、レグレッションテストは、通常、それぞれをフェーズに分けて実施されることが多いからである。

「2.故障はランダムに起こる--故障間隔は独立である」を満たすには、そもそも本質的にそれを満たすようなテストであるか、もしくはそれを満たすように注意深く設計されたテストをする必要がある。
これは、テストケースに「ここの部分は怪しいから最初に深めにテストしよう」とか「ここにバグが見つかったからちょっと重点的にテストしよう」といったテスト実施順番の恣意性が無いことを要求しているのである。
「2.故障はランダムに起こる--故障間隔は独立である」は、テスト実施順番に関わらず、同じ曲線になることを言っているのである。
リスクベースのテストとは両立しないと思われる。

 ・そもそも本質的にそれを満たすようなテスト
    プログラムの個々の機能には着目せず、業務面に着目して設計されたテストがこれに当てはまるであろう。
    具体的には、実際にはそのプログラムが使用法に準じた使われるのと同じ方法で

    たとえば、プログラムが対象とする業務について1日を通しての業務処理を何日分も廻すテストやカーナビソフトのテストで実際に車に積んで色々な場所を何時間も走って行うテストがこれに該当しよう。
    しかし、「そもそも本質的にそれを満たすようなテスト」というものは、あまり実施されることが無いのではないだろうか。
    そもそも業務処理の日廻しやカーナビの実走の段階で曲線が立ちあがって後に寝ることがグラフで分かるようなプログラムはそれまでのテストで何やっていたんだという危険なプログラムであろう。

    モジュールテスト、結合テスト、初期のシステムテストでそもそも本質的に「2.故障はランダムに起こる--故障間隔は独立である」を満たすテストとはどのようなテストなのであろうか。解があれば教えてほしい課題である。

 ・それを満たすように注意深く設計されたテスト
    テストケースの一覧から乱数等を使ってランダムにテストの実施順を決定してテストすることで、機能のまとまり毎にテストすることによる故障発生可能性の偏りを回避しようとするようなテストがこれに該当するかもしれない。

    自動化されたテストツールで行うテストであれば単に実施順を入れ替えるだけで対応は楽だが、人手でのテストであれば、テスト実施者にとってはなかなか嫌なテストであろう。
機能のまとまり毎にテストすることは、類似操作が並んでいることが多く、テスト実施に習熟しやすいが、都度、違う部分のテストを行うのは、設定等の準備も都度発生するであろうし、操作も一々再確認しなければならないであろうからテストに集中するのが大変であると予想される。

    但し、一定程度の自動化が進んだテストであればこれは可能であるので、その場合は「2.故障はランダムに起こる--故障間隔は独立である」ようにテストを実施することは可能である。

« 【ソフトウェア信頼度成長モデルを少しまじめに考える③】直感的理解容易性のために忘れられがちであるが悩ましい前提③ | トップページ | 【ソフトウェア信頼度成長モデルを少しまじめに考える⑤】1つ目の仮定:J-M(Jelinski-Moranda)モデルの仮定② »

ソフトウェア開発品質・生産性私見」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1048600/28626582

この記事へのトラックバック一覧です: 【ソフトウェア信頼度成長モデルを少しまじめに考える④】1つ目の仮定:J-M(Jelinski-Moranda)モデルの仮定①:

« 【ソフトウェア信頼度成長モデルを少しまじめに考える③】直感的理解容易性のために忘れられがちであるが悩ましい前提③ | トップページ | 【ソフトウェア信頼度成長モデルを少しまじめに考える⑤】1つ目の仮定:J-M(Jelinski-Moranda)モデルの仮定② »