ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

ソースコードの行数と単体テスト項目数の関係

2018-08-14 08:14:15 | Weblog
相関関係があるのはわかるけど、具体的に、たとえば、

ソースコード1000行だとすると、単体テスト項目数はいくつ?

ってこと。これの考え方




■まず、モジュール数を求める

 いくつのモジュールをつくるのか?ということ
 50行で1モジュールにしましょう!っていう規約があるとすると、1000行なら20モジュールくらい
 20行で1モジュールにしましょう!っていう規約があるとすると、1000行なら50モジュールくらい

ここ、どのくらいにするかで、テスト項目数が大幅に変わる。
なので、ここで、平均何行おきくらいに1モジュールにするか、大事
(モジュール数大事)




■2種類あるテストのうち、どっちするか決める

単体テストは、
(1)プログラムの処理(実際にはモジュール)を通過(C0)、IF/Switchの分岐通過(C1)を100%網羅と
(2)外部から変数を与えて、結果をアサーションする(Unitテスト)
という2種類がある。どっちか決める(テスト項目数が決まっている場合、とりあえず2つとも考えておき、
項目がどちらかだけで足りれば、足りるほうで、足りない場合は両方やるという手もある)




■C0・C1網羅の場合
 C1分岐のエビデンスをとる場合、IF文の分岐の数だけ、項目数は発生する
 ただし、ショット数(一連のテストケース数)は、IF文を何個かまとめて1ケースとなるため
 正常系+異常系数ケースとなる。これが、各モジュールにつきあるので、
 平均すると、モジュールの2~4倍くらいでしょうか・・・

■ユニットテストの場合(アサーションで確認)
 ログをエビデンスにすれば、アサーションにこだわる必要なし。
 各モジュールの同値ケースの場合分、テスト項目が増える関係にある。
 これも実質、平均すると、モジュールの2~4倍くらいでしょうか・・・




■結論
 どちらも、モジュールの2倍から4倍くらいでしょうか?

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする