SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

テスト自動化研究会の『システムテスト自動化 標準ガイド』を15倍あなたの力にする話

『システムテスト自動化 標準ガイド』の第8章 ~ テスト自動化を支えるメトリクス計測

テスト自動化研究会の『システムテスト自動化 標準ガイド』を15倍あなたの力にする話 第7回

どのメトリクスをどのように計測するか

前ページまででは、メトリクスの計測とは何か、メトリクスに何があるかについて解説しました。次に、メトリクス計測をうまく行うための考え方やアプローチについて解説します。

メトリクス計測での課題

まずメトリクスの計測を考えるにあたっては、特に次の2点は注意が必要だと筆者は考えています。

1点目として、「メトリクスは意思決定の判断材料のごく一部である」点に留意が必要です。メトリクスは、あくまで対象のごく一部をサンプリングしたり抽象化したりして得た指標であり、それだけ見ていると現実の認識を誤る可能性があります。また計測のやり方に問題がある可能性もあります(例えば計測者がデータを偏向させるなど)。メトリクスを選択する際は、「自分がプロとして現場を認識して判断を下すのが大前提。メトリクスはその手段のごく一部である」という姿勢が大事です。

2点目として、 メトリクス計測は形骸化しやすいために、それに対策し続ける姿勢が求められる点に留意が必要です。皆さんの中にも、「必要性もなくコードカバレッジ100%を要求されて労力を浪費した」「用途も不明なメトリクスを算出するために、無駄なテンプレート穴埋め作業を強制された」といった、形骸化したメトリクス計測に起因する怨嗟の声を聞いた方がいるのではないでしょうか? メトリクス計測は手軽なゆえに、安易な作業追加や強制が行われがちです。メトリクスの形骸化に常に対抗していく心がけを維持しないと現場の阻害要因になりえます。

こうした留意点を押さえるためには、どのメトリクスを選択するかメトリクスの計測をどのように行うかの2方面について考える必要があります。

どのメトリクスを選択するか

まずどのメトリクスを選択するかについてですが、これには「適切な目標設定」「目標に対する妥当なメトリクスの選択」が求められます。

適切な目標設定

まず適切な目標設定とは、メトリクス計測の要求に対して、妥当な計測の目標を立てることを指しています。ギア本でも強調して解説されていますが、目標の明快さ・客観性は、メトリクス計測の成否を左右します。反面教師の例として「自動テストの品質が妥当か計測する」といった目標を目標を立てると、その後どのメトリクスを選択すればよいのか、メトリクスの結果から合否をどう判断を下せばよいのかがわかりにくくなり、後々苦労することになります。

適切な目標設定のためには、メトリクス計測の要求や制約をきちんと認識することが求められます。

要求の認識においては、メトリクスは様々な活動を支える基礎技術であるため、要求の源泉が開発者、マネージャ、製品ユーザ、テストチームのメンバーなど多岐にわたる点に注意が必要です。例えば、管理者視点の要求を重視しすぎて、現場からの要求がおざなりになるといったことは少なくないと実感しています。ステークホルダをきちんと識別し、それぞれの要求の優先付けを誤らないようにしなければなりません。

また、制約については、自分たちがメトリクス計測の生産性をどれぐらい確保できるか、自分たちがメトリクス計測にどれぐらいリソースを投入できるか認識する必要があります。有限なリソース・時間の中では、計測できるメトリクスは限られます。無理な計測を行うと、かえって現場の足を引っ張ってしまう場合もあります。

目標に対する妥当なメトリクスの選択

次は、目標に対する妥当なメトリクスの選択についてです。

このメトリクスの選択では、前提知識として計測対象のモデルの理解が重要だと筆者は考えています。計測対象をモデリングすることで、計測対象の属性が明確化され、どの属性を優先すべきか考えやすくなるためです。モデリングの具体例としては、ソフトウェアやモノを計測する場合なら、概念モデル・分析モデルを作成し、計測候補となる対象の属性を洗い出すのが有効です。また、問題解決を計測する場合なら、対象の概念モデルや、問題の構造モデル(因果関係のロジックツリーなど)を作成し、属性の依存関係や優先度を明確化すると、どのようなメトリクスがあるのか見えてきます。

そして、モデルで属性を把握してから、目標に基づいてメトリクスを選択していきます。選択のアプローチは様々ですが、よく知られたものにGQM法があります。GQM法はゴールと、ゴール達成のための質問、質問の回答としてのメトリクスの関係を、ツリーでモデル化する手法です。目標とメトリクスの関係性の明示化・管理を手軽に行えるメリットを持っています。

メトリクスの計測をどのように行うか

目標を設定しメトリクスを選択したら、次に「メトリクスの計測をどのように行うべきか」が検討課題となります。計測は基礎技術であり多種多様であることから、計測をどのように行うべきかは一概にいえませんが、今回は基本となる3点の考え方に絞って解説します。

コントロールできるタイミングで計測する

メトリクス計測は、コントロール(メトリクスの結果に基づいたアクションの実施)できるタイミングで行うことが重要です。

例えば、「単体テストのコードカバレッジの計測」については、単体テスト工程で計測しても遅すぎることがあります。単体テスト工程でコードカバレッジの問題が見つかると、そのコントロールのための作業、つまりコードカバレッジを改善するようにテスト対象のテスタビリティを作り込む作業で工程戻りが発生し、余計な工数がかかりがちなためです。こうしたものは、コントロールできる実装工程から計測した方が無難です。

計測の制約緩和を推進する

メトリクス計測にかぎらず、投入した工数に見合う成果を出すためには、生産性の向上が求められます。メトリクスの選択が妥当であっても、その計測に膨大な手間をかけていては意味がありません。逆に計測の手間が少なければ、より多くのメトリクス計測の要求に対応できるようになります。メトリクス計測での生産性向上手段としては、例えば以下があります。

メトリクス計測を自動化する
計測自動化、計測レポート自動化、結果分析自動化など
工数のかかるメトリクスを、生産性の高いメトリクスに置き換える
人手レビュー計測を、自動化された静的解析メトリクス+人手サンプリングレビュー計測へ切り替えるなど
計測対象の計測容易性を改善する
計測用のインターフェースを確保するなど
テストベースの計測容易性を改善する
テストベースを自動計測可能なモデルや記述言語で記述するなど

こうした計測の生産性向上策の基本戦略は、初期から対策を整備していくフロントローディングとなります。例えば、性能のメトリクス計測を行うならば、設計段階から性能計測用API、性能確認支援機能などを組み込むと、計測を効率化できる場合があります。また、新しい計測ツールの導入評価を行う場合には、フィジビリティスタディの実施で、何を計測できるか、何を計測すればよいかの目星をつけておくと、生産性を阻害する問題に事前対策できるようになります。

継続的に改善する

メトリクス計測の要求や制約もプロジェクトの経過とともに変化していきますし、形骸化の圧力もあります。そのため、メトリクス計測では継続的に、目標設定が妥当か、メトリクス選択は適切か、メトリクスの計測方法は適切か、継続的に監視し、問題があれば都度是正していくことが求められます。例えば、以下はメトリクス計測でしばしば必要とされます。

  • 当初の目標が現在でも有効か、目標設定を見直す。例えば目標設定時に想定したモデルと現実の乖離を評価する
  • 目標に対するメトリクス計測の成果が妥当か監視する。例えば、現場の声を集計する、サンプリングレビューといった他の観点との比較検討を行うなどして評価する。問題があれば、メトリクスの選択を見直す
  • メトリクス計測の不具合(計測ミス、誤差、偽陰性・偽陽性の判定など)がないか監視する。不具合が計測の支障となっていたり、改善可能な問題が判明したりしたら、計測のアプローチや環境を見直す。

まとめ

今回は、テスト自動化に関わるメトリクス計測について、ギア本を引用しながら、広く浅く解説いたしました。ギア本では、具体例を交えながらより詳細に解説してあります。このテーマに興味を持った方はぜひ一読いただけると幸いです。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
テスト自動化研究会の『システムテスト自動化 標準ガイド』を15倍あなたの力にする話連載記事一覧

もっと読む

この記事の著者

井芹 洋輝(イセリ ヒロキ)

精密機器、医療機器の製品開発に従事した後、現在は株式会社豆蔵において、コンサルタントとして開発やテストの技術改善に携わる。現在は車載ソフトウェア開発の現場において、テストのマネジメント、テスト設計の技術改善、テスト自動化システムの開発を行っている。

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/9023 2015/12/11 14:00

イベント

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

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

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

メールバックナンバー