連載
» 2017年05月24日 11時00分 UPDATE

山浦恒央の“くみこみ”な話(95):タダでソフト開発の生産性と品質を上げる方法(5):グーグルの隠し球的単体テストツール「GoogleTest」 (1/3)

「タダでソフト開発の生産性と品質を上げる方法」の第5回。今回は、IT業界の巨人、グーグル(Google)製の単体テストフレームワーク「GoogleTest」を紹介する。

[山浦恒央 東海大学 大学院 組込み技術研究科 非常勤講師(工学博士),MONOist]

1.はじめに

 無料ツールは広く出回っていますが、意外に、エンジニアの目にとまることは多くありません。本連載では、無料で便利なツールを紹介しています。「タダ飯」ほどうまいものはありません。

2.エンジニアの悩み

警察24時 ※写真はイメージです

 優秀なエンジニアならば、単体テストの重要性を十分理解しています。単体テストは、バグが見つけても修正が容易で、実装時に作り込んだ単純なバグも多く検出できます。結合テストで発生するバグの切り分けも容易になります。重要な工程ながら、テストは非常に退屈で、地獄の時間と感じる人もいるでしょう*1)

 地獄のテストを楽にするためには、ツールを使いましょう。前回は、「xUnit」という単体テストを効果的に進めるツールを紹介しました。xUnitの利点は、テストのやり方を統一できたり、1度記述すれば回帰テストが簡単にできたりする点です。

 前回紹介した「MinUnit」は、使いやすいツールでしたが、機能不足を感じる人もいるでしょう。名前の通り、最低限の機能がウリのツールですから、文句は言えません。豊かな機能を備えたツールがほしい場合、C/C++かつxUnit系ツールは、数分調べるだけでも数種類見つかります。今回はその中の1つ「Google C++ Testing Framework(以下、GoogleTest)」の使い方を紹介します。なお、「xUnit」と聞いて、「テスト駆動開発」を連想する方もいますが、今回は単体テストに限定します。

*1)テレビ番組の「警察24時」で、例えば、ひき逃げ犯の捜査は、「東京都内に同型の白いライトバンが874台ある。それを全てチェックするぞ」などと、ものすごく地道で時間のかかることが少なくありません。そんなシーンを見るたびに、ソフトウェア開発で、テスト項目を1件ずつ地味に消化する作業と酷似していると思います。プログラマーが1人1カ月で1000ステップ、1年で1万2000ステップ作るとすると、年間で1200〜2400件ものテスト項目を消化することになります。警察の捜査に比べると数は圧倒的に多いのですが、ソフトウェアのバグは犯罪と違い、「再現可能である」という特徴があります。防犯カメラの映像や、目撃証言のような「バグの現象の一部分」ではなく、バグそのものをそっくり再現させられるのは、圧倒的に大きなアドバンテージですね。「テストは地獄」ですが、警察が扱う犯罪が再現不可能であることを思うと、プログラマーは非常に恵まれている……。『警察24時』を見るたびに、いつもそう思います。

3.環境構築

 Google Testとは、IT業界の巨人、グーグル(Google)製の単体テストフレームワーク(C/C++用)です。MinUnitと比べて高機能で、さまざまな使い道があります。ただし、MinUnit同様、テストコードを記述するため、C/C++をある程度知ってることが前提です。

 本ツールを使うには、環境構築が必要で、以下がツール一覧です。なお、本コラムでは、Windows環境を前提とします。

  • Cygwin
  • GoogleTest 1.7.0
  • Eclipse Pleidas

 「Cygwin」は、Windows上で動作するUNIX環境で、GoogleTestのライブラリ作成に使います。組み込み系エンジニアの方には、なじみが深いツールですね。GoogleTestを使用するには、ライブラリが必要です。今回、バージョンは1.7.0を使います。また、統合開発環境(エディタやコンパイラなどがセットになった環境)を使用します。なかでも、「Eclipse」は、無料の統合開発環境として非常に有名なツールです。今回は、「Eclipse Pleidas」という、通常のEclipseとプラグインがセットになった環境を使います。

 以下に、環境構築の手順を画面付きで示します。非常に長く面倒ですが、写真付きの料理のレシピのように、この通りに進めれば必ず構築できます*2)。少しだけ忍耐と我慢をお願いします。なお、環境構築手順は、参考文献[1]を参考にしました。文献と完全に同じツールやバージョンを使っているわけではありませんが、より詳しい手順を知りたい方は、ご覧ください。

*2)フレンチの超一流のシェフがレシピ本を出していて、「この通りに作れば、私の店の料理を再現できます」とうたっていたりします。そのシェフは、隠し事や秘密は一切なく、自分の知っている全てを曝け出しているのですが、一方で、「この通りに作っても、オレと同じ料理はできないだろうな」と思うそうです。文字で表せない微妙な「サジ加減」があるんでしょうね。ソフトウェア開発でも同じで、技術セミナーで講師が自分の知識や経験を全部公開していても、「オレと同じプログラミングはできないだろうな」と思うそうです。そんな話を聞くたびに、「ある方法に従えば、『オレと同じプログラミング』が可能になることが、ソフトウェア工学のゴールだ」との思いを新たにします。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.