ソフトウェアテスト基本テクニック

第2回 静的テスト

この記事を読むのに必要な時間:およそ 3 分

FindBugsの利用方法

(1)チェックルールの選択

まずFindBugsでチェックするルールを選択します。ルールの選択はEclipseのプロジェクトのプロパティ画面でチェックボックスのオン/オフにより設定できます図1⁠。

図1 FindBugsのルール設定画面分

図1 FindBugsのルール設定画面

このルールの設定をルールフィルタファイルと呼ばれるファイルに記述することができます。これをプログラマに配布して,設定を読み込ませるようにすることで,ルールの設定を容易に統一できます。

(2)チェックの実行

FindBugsは,Eclipse上で実行対象を右クリックして,[FindBugs]→[FindBugs]を選択するだけで実行できます※1図2⁠。

※1)
プロジェクトのビルド(コンパイル)時に自動的にチェックされるように設定することもできます。

図2 FindBugsの実行メニュー

図2 FindBugsの実行メニュー

(3)チェック結果の確認と修正

FindBugsが実行されると,チェックされた箇所や内容といった情報がEclipse上に表示されます。最新版のFindBugsでは,図3のようにFingBugsの専用画面(パースペクティブ)を使って詳細な結果を確認できます。Bug Detailsビューにはバグの詳しい説明が表示されますので,それを参考に該当箇所を修正していきます。

図3 FindBugsのチェック結果画面

図3 FindBugsのチェック結果画面

Checkstyleの利用方法

(1)チェックルールの選択
Checkstyleのルールの選択は,Eclipseの[ウィンドウ]→[設定]で表示される設定画面で,「Checks Configuration」というルール設定のセットを作成します※2図4)。ルールの選択はチェックボックスのオン・オフで簡単にできます(図5)。
※2)
ここで設定したものはGlobal設定として,Eclipseのワークスペース上のすべてのプロジェクトで使用できます。また,個々のプロジェクトごとにLocal設定を作成することもできます。

図4 Checkstyleの設定画面

図4 Checkstyleの設定画面

図5 Checkstyleのルール設定画面

図5 Checkstyleのルール設定画面

Checkstyleについても,ルールの設定をXML形式でエクスポートすることができますので,それを配布し,インポートすることでルールの統一が容易にできます。

(2)チェックの実行

Checkstyleは,Eclipse上で実行対象を右クリックして,[Checkstyle]→[Check Code with Checkstyle]を選択するだけで実行できます※3図6⁠。

※3)
プロジェクトのビルド(コンパイル)時に自動的にチェックされるように設定することもできます。

図6 Checkstyleの実行メニュー

図6 Checkstyleの実行メニュー

(3)チェック結果の確認と修正
Checkstyleが実行されると,チェックされた箇所や内容などの情報がEclipse上に表示されます(図7)。Checkstyleで選択したルールとEclipseのフォーマッタ機能(ソースコードの整形機能)との同期をとることで,エラーの修正がさらに簡単にできます。

図7 Checkstyleのチェック結果画面

図7 Checkstyleのチェック結果画面

このように,静的解析ツールを使うと規約に違反したソースコードの記述が容易かつ瞬時に検出できますので,ツールをうまく活用することで,可読性が高く,バグが潜在しない高品質なソースコードを作成できます。また,次に行うソースコードレビューで,チェックする項目を大幅に削減できるという効果もあります。

3.ソースコードレビューを行う

ソースコードレビューは,プログラマ自身あるいは第三者(できればプログラミング言語に精通した有識者)がソースコードを目で見て確認することで,記述上のミスを見つける技法です。静的解析ツールを使うことによって,レビューでチェックすべき項目を削減できますので,たとえば処理フローの危険性,マルチスレッド環境ならデットロックになるようなところはないかなど,人にしか判断できない観点に絞ってチェックしていきましょう。


以上,静的テストについてご紹介しましたが,ソースコードに潜むバグの大部分は静的テストで検出することができます。面倒だから,時間がないからといって静的テストをしないと,後々の手戻りが増えて余計に時間がかかりますので,今回ご紹介した進め方に従って,早期にバグを検出し修正するよう心がけましょう。

著者プロフィール

池田俊(いけだ すぐる)

株式会社NTTデータ技術開発本部に所属。 ソフトウェア開発のテストプロセス改善チームにて静的テストツールの推進を行っており,今回紹介した2つの静的解析ツールを合わせた独自ツールを社内に普及展開中である。また,社内向けのテストセミナの講師も兼任している。次は結合テストにも手を出そうと目論見中である。


町田欣史(まちだ よしのぶ)

1999年,株式会社NTTデータに入社。社内の情報共有システムの開発に4年間携わった後,テストプロセス改善の研究,社内サポートを担当。現在は,プログラムの品質向上に向けた研究および社内サービス運用を行っている。JSTQB技術委員,日本品質管理学会正会員。

著書