株式会社コンピューテックス Copyright 2016 Computex Co.,Ltd. 2017.11
カバレッジ と 単体テスト カバレッジとは プログラムがどれだけ実行されているかを示す指標です プログラム全体に対して実行された比率をカバレッジ率で表します カバレッジの基準として 一般的にC0 C1が使われております C0カバレッジは 全体のうち何 % が実行されたかで求めます C1カバレッジは 条件判断文で真 偽の両方が成立すれば100% となります これらの値を100% に近づけていく事により 実行していないコードがなくなっていきます C0 カバレッジ : 命令網羅率 命令コードを実行した事をあらわす指標 C1 カバレッジ : 分岐網羅率 分岐条件の真 偽をあらわす指標 単体テスト カバレッジと言えば単体テストをイメージされる方も多いと思います 例えば 関数を一つ動かすと考えた場合 引数や変数の値を定義しておかなければ テストとして意味がなくなってしまう事もあります 単体テストはできるに越した事はありませんが 無理に行わなくても統合テストできっちりカバレッジ率を意識しておけば 品質は十分上がると考えられます 下位関数の呼び出しは? 関数呼び出しは? 引数の値は? I/O の値は?
カバレッジ導入への戸惑い 今のテストで十分? とあるプロジェクトのシステムテストでカバレッジを測定してみました すると 結果はC0カバレッジ率が60% までしか達成できていませんでした これは最終的なテストで一度も通過していないコードが40% もあったという事になります 十分と思っていたテストケースでも これだけの漏れがあるという事が分かります 費用対効果が見えない? 不具合は 通過しにくいところに潜んでいる事が多いです カバレッジをやってみなければ 未通過コードがどこにあるという事を知るすべがありません 製品リリース後に こういった不具合が見つかった時のダメージを考えて 費用が妥当かどうかを検討する必要があります 余計な工数が増える テストの工数とテストケースが用意されているなら CodeRecorderでカバレッジを有効にして いつもどおりのテストをやってみましょう テストを行った分のカバレッジ率は CodeRecorderが自動的に測定します ただし テスト漏れが新たに発見される事がありますので その分の追加テスト工数が増える事はあります
未通過コードはどうする? 単純なテスト漏れ エラー処理 不要 未使用コード 本当の不具合 それぞれの運用ルールを決めて処理します どうしても通過しない条件の場合 理由を明らかにしてカバレッジ率から除外する デバッガで無理やり通す 不要なコードの場合 基本的には削除する カバレッジ率から除外して記録に残す
CodeRecorder は プログラムの見える化として いろいろな機能を実装しています 関数の呼び出し状態の可視化 関数の実行時間の計測 カバレッジなどがあります それでは CodeRecorder を使用してのカバレッジについて紹介していきます
カバレッジ ウィンドウ カバレッジ ウィンドウは 個々のカバレッジ率を表示するだけでなく ファイル単位やプロジェクト全体のカバレッジ率も表示します また フィルタで表示を絞り込む事もできます フィルタを行うツールバー 項目をグループ化 全体のカバレッジ率 ファイル内のカバレッジ率 各関数のカバレッジ率 C0 カバレッジ率 C1 カバレッジ率
カバレッジ率の表示 警告色表示 指定したカバレッジ率にしたがって警告色表示します グラフ表示 カバレッジ率を棒グラフで表示します カバレッジ率のグループ化 カバレッジ率でソート このように カバレッジ率をいろいろな方法で確認する事ができます
カバレッジ ウィンドウでは カバレッジ率の表示のほかに 担当者 や 備考 を 設定する事ができます 担当のソースや関数に 担当者 を設定 絞り込みも可能! 担当者を設定すればリターン先が明確に! [ 備考 ] には 除外やカバレッジ率が 100% にならない理由など いろいろなコメントを記入できます
ソース ウィンドウでも カバレッジの状態を見る事ができます ソース ウィンドウ エラー処理などは除外する事もできます C0 カバレッジ C1 カバレッジ 未通過の行 未通過箇所を検索する事も可能です 左フィールド
フィルター処理で見たい項目を絞り込み! 文字列で絞り込む カバレッジ率で絞り込む 文字列を入力 カバレッジ率を入力 フィルター以外の表示方法もあります 除外関数を非表示 関数を非表示 チェックをはずす チェックをつける
何度かに分けて行ったテスト結果 複数人で行ったテスト結果をマージ! マージするデータにチェックをつける マージの拡張機能を使用すると 複数人で行ったテスト結果の除外設定 備考の内容 担当者の設定を 他のプロジェクト ファイルからインポート可能です マージして テスト結果の差分も確認可能 マージでほぼ 100% に!
複数のテスト結果を 1 つのコンパクトなデータに結合できます 複数のテスト結果 1 つのデータに結合 結合データ ただし 統合されたデータで表示できるのは カバレッジのみとなります
カバレッジ テストの結果をより正確に! 未使用の関数を除外 UP! エラー処理など 未通過ブロックの除外 if 文の書き方も注意しましょう if (ret == 0) return -1; if 文を除外設定 if (ret == 0){ return -1; }
カバレッジで不具合が見つかることも! カバレッジ率が 100% ではない関数があったので 未通過の箇所 をソース ウィンドウで確認してみると 実行されているはずの コードがなぜか未通過になっていました 未通過の行 なぜ 未通過? 調べてみると if 文の条件が間違っていました 条件を >= に修正します 条件を >= に修正 再びカバレッジ テストを行います すると 正しくコードが実行されるようになりました からに変わったことが確認できます このように 単純な間違いでカバレッジが未通過になるような不具合を発見する事もあります
動的テストツール 製品紹介 CodeRecorderは開発段階から最終ステージまでの製品テストにおいて さまざまな角度からプログラムの評価が行える動的テストツールです テスト漏れやボトルネックの発見 発生率の低いバグを捕らえて原因を調査することが可能です CodeRecorder CR-200 CodeRecorder CR-100 CodeRecorder ST-1 CodeRecorder CR-200はCR-100 の後継機として誕生しました バグの発見はもとより カバレッジ テストをさらに強力にサポートします ターゲット接続は 高速データ通信のメモリバスと 最小 2 ピンで接続できるGPIO を選択できます 各インターフェース専用プローブがセットになっています CodeRecorder CR-100は 組込み製品の品質アップと開発期間を短縮できる動的テストツールとして誕生しました 必要なプローブ ケーブル 電源がセットになっており すぐに接続して動作確認ができる評価ボードが付属します CodeRecorder ST-1 は CR-100 で取得したデータを複数 の開発者で解析するときに使用できる ソフトウエア 単体の製品です 無償評価貸出実施中まずは CodeRecorder を実感してみてください! 当社までお気軽にお問い合わせください! CodeRecorder Search URL: https://www.computex.co.jp/solution/testingtools.htm
製品紹介 CodeRecorder VC は Visual C++ で開発される Windows アプリケーションの 開発段階 から 最終テスト まで幅広く使えるツールです 30 日間試用版のダウンロード CodeRecorder VC 初回起動後 30 日間は製品版と同等の機能をご使用いただけます ぜひこの機会に 動的テストツール CodeRecorder VC に触れてみてください! お申し込みは WEB で! CodeRecorder VC 試用版ダウンロード Search URL: https://www.computex.co.jp/crvc
株式会社コンピューテックス E-Mail : cr_sup@computex.co.jp (CodeRecorder 専用 ) Homepage : https://www.computex.co.jp/