Tech Sketch Bucket of Technical Chips by TIS Inc.

テスト管理ツールを活用したテスト工程の効率化 ~(1)OSSツールを試してみる

Pocket

私たち昨年、ソフトウエア開発プロジェクトのテスト工程の効率化に取組みました。効率化を実現するアプローチは多様ですが、今回の取組みでは、効率化可能なアクティビティを支援する即効性の高いツールを作成・適用する方針で進めました。実際に多くの開発プロジェクトが活用し、作業を効率化しています。この記事では、複数回に分けて私達の取組みと成果を紹介します。

この回では、背景にあった課題と改善方針、ベースとして採用を検討した2つのOSSプロダクトについてお話します。

テスト工程の生産性の現状

ソフトウエア開発分野では生産性向上を目的とした様々な取組みが行われています。特にプログラミング領域は、IDEやソースコード自動生成等の開発ツール、アプリケーションフレームワークの活用で大きな成果を生んでいます。

一方でテスト領域の生産性はどう変わってきているでしょうか?
IPA/SEC「ソフトウエア開発データ白書」の工程別工数比率(新規開発プロジェクトの平均値)から傾向を見てみます。

          設計    製造    テスト  
2005年版     0.33  0.37  0.30 
2012-13年版 0.42  0.27  0.31 

2005年から2012年までの7年間で、製造工数比率は大きく下げていますが、テスト工数比率はやや上げています。
既に普及している、負荷テスト等の支援ツールやxUnit等の自動テスト等以外に、有効なソリューションが存在しないためだと思います。

具体的に何をどうやって効率化するか?

はじめに取り組む改善ポイントは2点としました。(下表の1と3、2は1の副次的課題)
WS000012.JPG

1.は、マスタ管理と実案件(プロジェクト)での再利用のしくみを実現します。
保守フェーズでは現行仕様との整合を確認する"リグレッションテスト"を多量に実施します。リグレッションテストの準備は、現行仕様のテストケースを再利用することで効率化が可能ですが、うまくいっていません。新規開発以降のシステム仕様進化と同期したテストケースの構成管理が実施されない為です。保守改修案件毎に作成したテストケースが散在し、ベースライン管理された再利用可能なテストケースを取り出せなくなってしまうのです。テストケースを再利用しないことは、2.の品質的リスクにもつながります。
理想は『新規開発完了時にテストケースのマスタ管理を開始し、以降はシステム仕様変更と同期したメンテナンスと再利用を継続する』です。

3.は、テスト担当者に報告作業等の手間をかけずに、管理者が見たい時にリアルタイムな予実データを自動集計・表示するしくみを実現します。
一般的には、テスト担当者が日次や週次で自身の実績を集計して報告を上げ、それを集計担当者が集計・分析する、という流れで、コストをかけて進捗管理を行っていると思います。プロジェクト規模が大きくなったり、多拠点・オフショアの開発になると、そういったコストは大幅に増加し、軽視できなくなります。
理想は『テスト進捗がリアルタイムかつ自動で記録・集計され、テスト担当者はテスト作業に、管理者はプロジェクト課題への対応に注力できる』状況です。

これらの理想状態を実現するにはテストケースや予定・実績情報を複数のExcelで管理するのではなく、データベースで管理する必要があると考えました。イメージとしては下図のような感じです。

WS000013.JPG

既存ツールで要件を満たせるか?

前述の課題に対するソリューションは、ツールベンダー各社が「テスト管理ツール」として有償販売しています。しかし、特に小・中規模のプロジェクトにはコスト面のハードルは少し高そうです。
よって、OSSの「TestLink」「Redmine Impasse」を試行利用し、下記観点で評価しました。

  • 機能性:マスタ管理と再利用、進捗管理自動化等の必要機能を備えていること
  • 使用性:利用方法、UIが直感的で、導入時の学習コストを少なく抑えられること
  • 効率性:実際のソフトウエア開発プロジェクトを想定したデータ量で、実用性のある性能を発揮できること
  • 保守性:ツール本体の維持、拡張が容易であること

TestLink

   機能性:◎
   使用性:△
   効率性:✕
   保守性:△

TestLink はPHPで実装された、テスト管理のWebアプリケーションです。

テストケースマスタ管理から、テスト計画作成、テスト実行、結果レポート出力まで、テスト工程を広くカバーする機能を提供しています。
ユーザのフィードバックを受けた継続的なバージョンアップで、各機能はユーザの要望を取込み、細かく作りこまれています。評価はしませんでしたが、システム要件とテストケースのトレーサビリティを管理し要件ベースでの品質指標を算出する、などもできるようです。

一方で、使用時のレスポンスには問題がありました。
実際の開発現場では結合テスト工程で通常数千件のテストケースを扱い、一万件以上を扱うプロジェクトもあります。
今回は数百件のテストケースで十分な性能が出なかった為、実際の開発プロジェクトでの使用は難しいと判断しました。

Redmine Impasse

   機能性:◯
   使用性:◎
   効率性:◎
   保守性:◯

Redmine Impasse は、OSSのプロジェクト管理Webアプリケーション「Redmine」を拡張するプラグインです。

マスタ管理、テスト計画作成、テスト実行、結果レポート出力をカバーし、最低限必要な機能を備えています。
私たちの開発現場ではRedmineが普及しているので、プラグインインストールで環境構築が済み、導入が容易に進められそうでした。
動作が非常に軽快でUIがシンプルで分かりやすいことから、導入時の学習コストを抑えられる点も評価しました。

十分な効率改善効果を発揮する為にはいくつかの主要機能追加が必要でした。例えば、以下のようなものです。

  • テストケース登録方法が1ケース単位の画面登録のみなので、テストケースのインポート機能を追加する
  • テストケース様式が固定で、お客様様式に合わせることができないので、フォーマットカスタマイズ機能を追加する

結論

Redmine Impasseをベースに採用し、必要な機能追加や改造を自分たちで進めていくことにしました。

Redmine Impasse自体がシンプルで機能追加がしやすく、Redmineプラグイン開発事例も豊富にあること、性能とUIの良さが決め手となりました
TestLinkは高機能な点は良かったのですが、性能確保が難しいことが最大のネックとなりました。

次回は?

次回からは、テストケース作成やテスト実施スケジュール作成といったテスト工程内のアクティビティごとに、テスト管理ツールの機能や使い方、メリット等を利用者の声を交えて紹介していきます。

エンジニア採用中!私たちと一緒に働いてみませんか?