SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

早期に問題を発見、品質向上に貢献するJava対応静的解析・単体テストツール「Jtest」(AD)

JUnitを使った単体テストの効率が50%アップ! ありがちな失敗例とその対策のカギを握るツール「Jtest」

  • このエントリーをはてなブックマークに追加

【失敗例2】単体テストを実施していたが、メンテナンスコストが増大し、やらなくなった

 プロダクションコードの仕様変更や修正が発生した場合、テストケースもそれに合わせて修正していく必要があります。しかし、そのコストが大きくなり過ぎてメンテナンスできなくなり、テストケースが使われなくなっていった経験はないでしょうか? 長期にわたるプロジェクトや頻繁に開発者が変わるプロジェクトなどでよくみられます。

 なぜメンテナンスコストがかかるのでしょうか?

【原因】1.テストコードが複雑過ぎて修正に時間がかかる

 巨大なテストメソッドを作成したり、テストパターンを増やすためにコピペが多くなったりすると修正の影響範囲が大きくなるため、テストコードを理解することが困難になっていきます。

【原因】2.いつの間にか失敗するテストケースが増えて修正が大変

 テストの実行に時間がかかるため、頻繁にテストを行わない、何かのイベントの区切りにしか行わない、軽微な修正なのでテストケースを実行しない、といったことが積み重なると、いつの間にかテストケースが失敗するようになります。そして、原因究明と修正に多くの時間がかかってしまいます。

 対策としては、以下が挙げられます。

【対策】1.テストコードが複雑過ぎて修正に時間がかかる

一般的な対策

 テストコードもプロダクションコードと同様に、保守の間は利用され続けるものです。メンテナンス性を考えて、複雑になり過ぎないように重複をまとめたり、分割したりするなど、しっかり設計をして実装するべきです。テストパターンを増やすにはテストコードのコピペではなく、JUnitのパラメータライズを使うことで、1つのテストケースで複数のパターンをテストできるようになります。

さらにJtestによる対策「シンプルなテストケース作成を標準化」

 JUnitのパラメータライズは【失敗例1】でも紹介したテンプレート機能で簡単に作成することができます。また、さまざまなテンプレート作成機能を使うことで、テストケースの実装を標準化することができます。経験の少ない開発者でも一定のレベルで定型化されたテストケースを作成することができるため、複雑化を防ぎます。

【対策】2.いつの間にか失敗するテストケースが増えて修正が大変

一般的な対策

 いつでもテストを自動で実行する仕組みを作ります。ビルドや単体テストを自動的に実行するCI環境を構築することで、コミットのタイミングでテストを実行するなど、開発者が意識せずに常にテストが実行される環境を作れるため、テストの失敗を早めに検知し、修正することができます。

さらにJtestによる対策「修正の手間を省き、いつでも実行可能な環境を構築」

 アサートが失敗したテストケースにおいては、実行後期待通りの結果が得られていることが確認できれば、簡単に期待値を更新することができます。

 テストの実行も、Jtestを使えば変更箇所だけテストを実行することができるため、テスト実行に時間がかかって待ちが発生することもなくなり、テンポ良くテストを行うことができます。

 また、JtestはCIツールとの連携も可能です。特にJenkinsであれば、Parasoft社の提供しているプラグインを利用することもできます。また、テクマトリックスでは「Jenkins Package Platform for Java」という、静的解析や単体テストの実行環境を整備するためのソリューションを提供しています。

テクマトリックスが提供する「Jenkins Package Platform for Java」
テクマトリックスが提供する「Jenkins Package Platform for Java」

Jtestの無料体験版を入手!

 Jtestの無料体験版を配布しております。以下のリンクからダウンロード可能です。

次のページ
【失敗例3】ソースコードカバレッジの罠にハマる

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
早期に問題を発見、品質向上に貢献するJava対応静的解析・単体テストツール「Jtest」連載記事一覧

もっと読む

この記事の著者

テクマトリックス株式会社 Jtestチーム(テクマトリックスカブシキガイシャ ジェイテストチーム)

 「品質」をキーワードに、さまざまなツールを扱うソフトウェアベンダーです。 品質を犠牲にすることなく開発プロセスを改善し、開発スピードを飛躍的に向上させるために、テクマトリックスは品質保証分野における20年来の経験と、豊富なツールラインナップを活かして、お客様に最適な改善ソリューションを提案させてい...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10950 2018/07/23 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング