業務効率化の道具箱(5)Google Testを使ってみよう【その1】:山浦恒央の“くみこみ”な話(158)(2/3 ページ)
ソフトウェア開発にとどまらない、PCを使う全ての人が対象となるシリーズ「業務効率化の道具箱」。第5回は、単体テストで役立つフリーのツールである「Google Test」と「gcov/lcov」を紹介する。
4.単体テストで役立つツール
有償/無償問わず、単体テストで役立つツールはたくさんあります。その中でも、今回は「Google Test」と「gcov/lcov」を取り上げます。
4.1 Google Test(単体テストフレームワーク)
Google Testとは、単体テストを効率よく進めるためのツールです※3)。Google Testでは、作法通りにテストコードを書くことで、誰でも簡単に単体テストを実施できます。例えば、アサーションマクロを記述し、期待値と出力値が一致するかどうかの検証が可能です。
※3)Google Testは、厳密にはテスティングフレームワークのことではありますが、今回は「テストツール」として話を進めます。
4.2 gcov/lcov(カバレッジ計測ツール)
テスト実行時の網羅度を表すカバレッジ計測を手作業で実施することは、非常に困難です(手作業で計測しようと考える人はいないでしょうが)。
gcovは、フリーのカバレッジ計測ツールです。プログラムの実行時に、カバレッジの計測結果を出力します。また、lcovを使うことで、色付けした到達パスをHTML形式で出力できるため、非常に便利です。
なお、カバレッジの知識に関しては、過去記事の第84〜90回の「猫でも分かるソフトウェアのテスト網羅」シリーズをご確認ください。
- 猫でも使えるソフトウェアのテスト網羅(1):基本のC0パス・カバレッジ
- 猫でも使えるソフトウェアのテスト網羅(2):パス網羅の種類と内包する問題点
- 猫でも使えるソフトウェアのテスト網羅(3):無料ツールで単体テストを楽に実行しよう
- 猫でも使えるソフトウェアのテスト網羅(4):C1カバレッジの弱点とエンジニアの信念
- 猫でも分かるソフトウェアのテスト網羅(5):C2カバレッジはエベレスト登山か?
- 猫でも分かるソフトウェアのテスト網羅(6):パス・カバレッジの王者の意外な弱点
- 猫でも分かるソフトウェアのテスト網羅(7):C2カバレッジは「裸の王様」
5.ツールの導入
今回は、実際にツールを導入し、簡単なプログラムで試すところまで実施します。なお、環境構築の手順は、あくまでも一つのケースとお考えいただき、進めてください。
まず、前回作成したUbuntu環境に、コンパイラ、Google Test、gcov/lcovのインストールを行います。なお、筆者がインストールした時点のバージョンは以下でした(表1)。
種別 | ツール名称 | バージョン |
---|---|---|
テストツール | Google Test | 1.12.1 |
カバレッジ計測ツール | gcov | 11.2.0 |
lcov | 1.14 | |
表1 バージョンのまとめ |
それでは、実際にやっていきましょう。
5.1 各種ファイルのアップデート
Ubuntuのターミナル上から、下記のコマンドを実行し、コンパイラなどを入手します。
sudo apt update sudo apt upgrade sudo apt install build-essential
5.2 Google Testのダウンロード
Google Testをダウンロードします。筆者は、wgetコマンドからGoogle Testを入手しました。
wget https://github.com/google/googletest/archive/release-1.12.1.tar.gz
正常に動作すれば、圧縮ファイルがダウンロードできますので、解凍してください。
5.3 フォルダを作成し、ビルドする
下記のコマンドから、ダウンロードしたGoogle Testをusr/local/srcに移動します。
sudo mkdir /usr/local/src sudo mv googletest-release-1.12.1 /usr/local/src
次に、ビルドに必要なCMake、make、lcovをダウンロードします。
sudo apt install cmake sudo apt install make sudo apt install lcov
最後に、Google Testをインストールすれば完了です。
cd /usr/local/src/googletest-release-1.12.1 mkdir build cd build cmake .. sudo make install
Copyright © ITmedia, Inc. All Rights Reserved.