タダでソフト開発の生産性と品質を上げる方法(6):高機能な単体テストツール「GoogleTest」を使いこなす(その1):山浦恒央の“くみこみ”な話(96)(1/4 ページ)
「タダでソフト開発の生産性と品質を上げる方法」の第6回。前回紹介したグーグル(Google)製の単体テストフレームワーク「GoogleTest」には高度な機能がありますが、今回は「アサーションマクロ」と「テストフィクスチャの使い方」を取り上げます。
1.はじめに
作業を楽にする無料ツールは、数多く存在しますが、多忙なエンジニアの目に入る機会は少ないでしょう。それよりさらに大きい問題は、無料ツールがあることを知っていても、それを使おうとしないことです*1)。本コラムでは、そのようなエンジニア*2)を対象に、「とにかく一度使ってみよう」をテーマに、作業効率を高めるツールを紹介しています。
*1)米国でも同じですが、日本でもエンジニアは新しいプログラムが大好きです。月曜日の朝、誰かが新しいツールをオフィスへ持ってくると、「私にも使わせて」「オレのPCでも動くかな」「これを使っていれば、あのバグは検出できたかもね」と、みんな大騒ぎ。子どもが新しいおもちゃを買ってもらったのと同じ状態です。で、2〜3日たって「お祭り騒ぎ」が収まり、「このツール、なかなかいいね」とみんな思うんですが、誰も使おうとしません。プログラマーは、最先端技術に携わっているとの印象がありますが、他の職業の人たちと同様、「現状を変えたくない」「面倒だ」と思っていて、非常に保守的です。新しいツールや技術を取り入れようとしません。これでは進歩は期待できません。このコラムで、新しい技術やツールに触れ、自分で使い、良いものは取り入れて欲しいと思います。「大きな技術革新」を目指して、「小さな一歩」を踏み出してください。
*2)ソフトウェア工学の授業で、次の課題を出しました。
「三角形の辺A、B、Cの長さ(6桁までの整数)を入力し、『正三角形』『二等辺三角形』『直角三角形』『直角二等辺三角形』『不等辺三角形』『三角形はできない』のいずれかに分類するアプリケーションプログラムがある。このソフトウェアの仕様書を作成せよ」
この中には、既にバグが埋め込んであります(三辺が整数では、直角二等辺三角形はできません)。このバグを、「仕様書の作成」「仕様書のインスペクション」「ピア・レビュー」「テスト項目作成」を通じていずれかの過程で見つけてもらうのですが、最後の「テスト項目作成」でも見つけることができない学生がいました。その学生の言い分は、「そんな細かいことまでチェックしなきゃいけないのですか?」でした。私は静かにキレました。
「この『細かいことのチェック』を面倒と思う人はエンジニア、特に、プログラマーになるべきではありません。分類する三角形の中に直角二等辺三角形が入っているのに、直角二等辺三角形が最初からできない仕様は、正常ケースの巨大バグで、心臓のペースメーカーのプログラムなら、人命に関わります。これはエンジニアとしての良心の問題です。プログラマーとしての志を高く持ってください」
前回は、xUnit系単体テストツール「GoogleTest」を環境構築からお試し実行まで説明しました。GoogleTest、というよりxUnit系ツールを使うと、「デバッグ作業の効率化」「テストの実施方法を統一化」「同じテストを繰り返し実行可能」というメリットがあります。
テストコードを記述すると、自分の実装が正しいか確認できます。また、記述方法はxUnitのやり方に沿って実施するため、記述方法は同じです。さらに、一度記述すれば、テストが再現できるため、回帰テストで簡単に使えます。
今回は、高機能なGoogleTestの一端を説明するため、もう一歩進んだ使い方を説明します。なお、環境を構築できてない方は、前回を参照してください。高度な機能には、「アサーションマクロ」「テストフィクスチャの使い方」「パス網羅(Gcovとの連携法)」の3つがあり、このコラムで細かく解説していきます。今回は、それらの中から「アサーションマクロ」と「テストフィクスチャの使い方」を取り上げます。
Copyright © ITmedia, Inc. All Rights Reserved.