トレンド情報 / 記事を探すCOLUMN

ステップカウンタのおすすめ3つ!単体テストで必要なステップ数をカウントする

執筆者:Qbook編集部

ステップカウンタのおすすめ3つ!単体テストで必要なステップ数をカウントする

単体テストで欠かせないカバレッジの計測・把握には、ソースコードのステップ数をカウントすることが有用です。開発現場では常にテスト品質とテスト工数を天秤にかける必要がありますが、ステップ数を把握することは適正品質を判断しテスト項目を調整することに役立ちます。

今回の記事では、ソースコードのステップ数とその他重要な概念について解説した上で、ステップ数をカウントする意義をご説明します。さらに、具体的なツールであるステップカウンタもいくつかご紹介します。

ステップとは

stepcounter.main1_2019_2_8

ソフトウェア開発における「ステップ」は、プログラムの規模を表すために用いられる数値の1つです。

そして、通常はステップというと「LOC(Lines of Code)」というソースコードの行数を基準に導き出された値を用いて表現します。

単純にソースコードファイルの改行数をそのままステップ数として定義する場合もあります。しかし、コードにはコメントや中括弧のみで構成されるような、厳密にはコードの規模や複雑さに影響を与えない行も含まれています。したがって、プログラミング言語の記述方法に応じてステップ数の数え方が異なる場合も多くあります。

ステップ数は、「物理ステップ数(Physical Lines of Code)」と「論理ステップ数(Logical Lines of Code)」の2つに大別されます。

物理ステップ数は単純にソースコードのファイルの総行数のことをさします。物理ステップ数は、どんな言語を用いたとしても一定で、数え方も一通りです。

一方、論理ステップ数は物理ステップ数から空行やコメントの行など、ソースコードの規模や複雑さに影響しない行を除いた総行数をさします。

物理ステップ数に対して論理ステップ数は、計算方法が言語や計算担当者によって異なる場合が多いようです。どのような基準で算出したのかを明確にする必要がありますが、有効なソースコードの規模や複雑さをより的確に表現できるのは論理ステップ数だと言えるでしょう。

テスト密度とは

単体テストにおけるステップ数について取り上げる際に欠かせないのが、「テスト密度」という概念です。テスト密度とは、テスト対象のステップ数に対してどの程度のテストが実行されるのかを割合で示した値です。テストを計画する際にテスト対象のシステムが達成すべき適正品質を実現するため、システムの規模に応じた適切なテスト工数を判断する指標となります。

こちらの値は、(テスト項目)÷(テスト対象の総ステップ数)によってパーセンテージで表します。

開発現場によっては、テスト密度の数値を設定し、これをクリアすることをテスト設計時の必須要件として設ける場合もあります。しかし、短い行数のシンプルなコードに対して少ない項目のテストで良いとは必ずしもいいきれませんし、冗長なコードだからと言ってテスト項目を増やすことが最適とも言えません。

テスト密度の数値のみで厳密なテスト項目数を管理するのではなく、テスト密度の考え方を1つの情報として取り入れて、単体テストのカバレッジおよびテスト品質の向上に役立てるのが良いでしょう。

ステップ数を数える必要性

stepcounter.main2_2019_2_8

ステップ数は、プログラムの規模を測る客観的な指標として用いられることがあります。この数に即して、対象のソースコードがどの程度の規模・ボリュームを判断します。

しかし、ステップ数はソフトウェアの規模を表す指標とはいえ、ステップ数を計測することだけでソフトウェアの規模を正確に測ることができるわけではありません。なぜなら、コードの総行数が必ずしもシステムの規模や複雑性を忠実に表現している訳ではないからです。

すなわち、ステップ数が多いシステムと不具合の出現率は必ずしも相関しない、といえます。ステップ数を軸としたテスト要件・項目の設計だけでは、テスト品質を適正なレベルまで引き上げることは難しいでしょう。

ただし、ステップ数を計測すること自体は、システムにかけるべきコストと適正品質を見極めるという観点では重要です。ソフトウェアの規模や複雑さを測る指標のあくまで1つだということを踏まえれば、他の指標や考え方と組み合わせ、情報を比較検討することで有効利用できます。

システムを構成する言語が異なっていたり、アーキテクチャの違いがあったりする場合、1つの指標で単純な比較をすることはやや軽率といえるかもしれません。したがって、例えば内部機能の複雑さをより利用者目線で計測するFP法など、ステップ数とは別の考え方と併用して判断指標の1つとするのが、最も有効な活用方法だと言えるでしょう。

おすすめのステップカウンタ4選

機械的に計測可能なステップ数は、ツールの活用が必須です。ツール自体は非常に多く提供されていますが、言語や操作性などのツールの特徴を踏まえることでより利用用途に合ったツールを選ぶことができます。

今回は、有用なツールを3つご紹介します。全て無償で利用できますので、開発状況に合ったものをぜひ導入してみてください。

StepCounter

GUIとCUIの両方に対応した、使いやすさと機能性を兼ね備えたツールです。比較的幅広い言語に対応しており、測定結果をcssやxmlなど様々な形式で出力できるので、データの比較分析に流用することも可能です。

Eclipseプラグインとしての利用も可能ですので、ステップ数をカウントした結果の差分を比較することもできます。本ツールがあれば必要な測定・分析は可能になるでしょう。

CLOC

WIndows・Macの両方で利用可能な、シンプルな操作性のツールです。コマンドラインで利用できるツールで、必要な機能を絞ったわかりやすい操作性が特徴です。

空行・コメント行・実質のコード行数の測定・結果出力・差分比較の基本的な機能が揃っていますので、使いやすさを重視しつつステップ数の概念を導入してみたい方におすすめのツールといえます。

Blue Step Counter

幅広い言語に加え、Microsoft Visual Studioのプロジェクトファイルにも対応した非常に高機能なツールです。また、独自のコメント形式を採用している場合でも、カスタマイズすることで対応可能です。拡張性が高く高機能なため、自社のプログラムにより適した形でステップ数を測定したい場合は本ツールを利用することをおすすめします。

おわりに

今回の記事では、単体テストのカバレッジを考慮する上で欠かせないステップ数という概念と、ステップ数を計測ツール「ステップカウンタ」を中心にご紹介しました。

品質とコストのトレードオフが発生しがちなテスト工程では、適切なテスト品質を設計することが非常に重要であり、そこで用いることができるのがステップ数という概念です。システムの規模や複雑さを測る1つの客観的な指標であるステップ数は、より正確な判断を下すために他の指標と組み合わせて活用するのが良いでしょう。

ステップカウンタはツールを用いて計測しますが、非常に多くのツールが提供されているのでどれを選ぶべきか迷うことがあるかもしれません。その場合は、使用言語が適切であること、開発環境への導入がしやすいこと、カウントしたい対象行数などを柔軟に選択できること、といった観点に注目し、ツールを選んでみましょう。

ステップ数やテスト密度といった指標を用い、テストの品質を適切に設定できるよう、取り組んでみてください。

資料ダウンロード

ライター:Qbook編集部

ライター

バルテス株式会社 Qbook編集部。 ソフトウェアテストや品質向上に関する記事を執筆しています。