ステップ数は本当に役に立たないのか

ステップ数の話をすると、プログラムでは1行に複数の処理が記載できるので同一の1行としてカウントしてしまうのは問題ではないのかという意見や、上級者と初級者では同じ処理のプログラムでもステップ数は大きく変わってきてしまうので意味が無いのではないかという意見を良く聞きます。しかしそれは全く問題ではありません。本当の問題はそのような疑問を持つ人たちの多くが根本的に指標の利用方法を間違っているということです。

指標がノルマになってしまっている問題


多くのプロジェクトではステップ数に対してテスト密度というものがきめられています。例えば150件/KLOCという値が決められているので1000行の処理を書いたら必ず150件以上のテストを実施しなさいねということになります。すると同じ処理を500行に削減して書いたらテストは75件実施すれば良いということになってしまいますがそうではありません。実はこの指標の利用方法が根本的に間違っています。指標がノルマになってしまっているからです。


私のプロジェクトのメンバにはテスト密度はあくまでも指標なのでテストケースはホワイトボックステストブラックボックステストを加味して適切なケースを挙げてくださいと言っています。そもそもテスト密度はノルマでは無いのでテストケースを考える際に意識する必要はありません。適切なケースを挙げた後に初めて指標値を確認します。そこで指標値とテストケース数に差異がある場合は何故差異があるのかを確認するのです。

複数の処理が1行で書かれている場合


複数の処理が1行で書かれている場合、テストケース件数が指標値よりもかなり多くなってしまいます。ケース数が少ない場合に限らず多すぎる場合も確認の対象です。確認を行うとその原因が複数の処理が1行で書かれているからだとわかります。特にコーディング規約の無いプロジェクトであれば処理が過密に記載されているだけで品質に問題は無いので問題ないとなりますし、コーディング規約で1行にはできるだけ1つの処理を記載するといったガイドラインがあるようなプロジェクトであれば問題コードとして修正の対象となります。

初級者が冗長な処理を記載している場合


初級者が冗長な処理を記載している場合、テストケース件数が指標値よりもかなり少なくなってしまいます。テストケース件数が少ないので確認を行うとソースコードが冗長に記載されている事がわかります。冗長ではあるけれでも処理的には問題なく正しく動作するのであればそのまま問題無いとなる場合もありますし、メンテナンス性を考えると今後問題になるような場合は修正しましょうということになります。


本来の指標の利用方法はこのように過度にプログラムが凝縮されて記載されていないか、初心者が冗長なプログラムを書いていないかといったプログラミング上の問題点を検知するための手段です。そのため、そのような実装がされているプログラムをそのままのステップ数で数える事になんら問題は無いのです。


Next >> なぜアジャイル開発ではステップ数を数えないのか


目次に戻る