CodeZine(コードジン)

特集ページ一覧

なぜテスト自動化は当たり前にならないのか? アジャイル・DevOps時代のスピードと品質の考え方

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2021/10/29 11:00

目次

アジャイルテスティングとテスト自動化

 主催するイベントでも、アジャイルテスティングをテーマにすることが多々あります。アジャイルテスティングをより具体化するために、有識者をお招きして、具体的なプラクティスを質問したことがありました。そこで、以下のようなキーワードが登場しました。

  • ユーザー視点での妥当な継続的フィードバック
  • 迅速なフィードバックのためのテスト自動化、探索的テストの活用
  • チーム全体で品質保証できる仕組みづくり

 特に、探索的テストとテスト自動化は、アジャイルテスティングを支える重要なプラクティスと言えるかもしれません。

図はDevOpsにおける継続的テストとは何か?より転載。たくさんの開発活動に対して、すべての活動でテストが必要です。
図はDevOpsにおける継続的テストとは何か?より引用。たくさんの開発活動に対して、すべての活動でテストが必要です。

 アジャイルテスティングを実現するためには、すべてのソフトウェア開発活動において、継続的テストを行うしかありません。筆者がアジャイルテスティングを目指す現場を支援するときには、いつも最初にこう伝えています。

  • イテレーション・スプリントの最後にまとめてテストしない方法を考えてください
  • テストをする以外の活動を増やしてください

 「最後にまとめてテストしない」ためには、イテレーションやスプリントの最後に自動でリグレッションテストを流すだけでリリースできる状態を目指さなければなりません。そうしなければ、「テストがボトルネック」という問題と永遠に付き合っていかなければなりません。

 特にバグ原因が「仕様不備」だとすれば、すぐに手を打つ必要があります。最後の最後で仕様不備に気がつくと、大きな手戻りが発生します。つまり、多くの時間を失っているという意味になります。

 よって、自動化できるものは自動化して、最後にまとめてやっていたテストを、それ以外の活動(自動テストコードではカバーできない要件定義、設計、リリース、モニタリングなど)で行っていく必要があります。

 ここでいうテストは、「テストコードを書く」や「手動でテストする」ではなく、設計をレビューしたり、モニタリングしているデータの意味を推測したり、従来の「テスト」とはちょっと異なる活動になるはずです。そういった「ちょっと異なる活動」が増えていくことで、「テストをする以外の活動を増やす」ことが可能になってきます。

 しかしながら、「意見を言うだけのご意見番」にならないように注意も必要です。例えば仕様検討という活動で品質保証活動を行う場合、仕様矛盾を指摘するぐらいであれば、専門知識がなくてもできるかもしれません。しかし、「ユーザーの利用データを見る限りXXXしたほうがいい」というような周囲が意思決定しやすい情報を踏まえてフィードバックができるなら、「意見を言うだけの人」から「データをもとにフィードバックできる人」に変わります。その活動の価値がより高まります。

コラム:アジャイルテスティングはシフトレフトが嫌い?

 アジャイルテスティングと同時に「シフトレフト」という言葉も登場する機会が増えてきました。日本語に訳するのが難しい単語ですが「上流工程に品質保証をシフトする」、「前倒してテストする」などいくつかの解釈があるようです。

 言葉の定義はさておき、書籍『Agile Testing(邦訳:実践アジャイルテスト テスターとアジャイルチームのための実践ガイド、翔泳社)』の著者であるジャネット・グレゴリー氏は、自身のブログでこの言葉を批判しています。

 By shifting left, it feels like the development process is a linear process, and it’s not.

 意訳:シフトレフトと言うと、開発プロセスが線形プロセスであるように感じられますが、本当にそうなのでしょうか?

 Shift Left – Why I Don’t Like The Term / DragonFire Inc.より

書籍『DISCOVER TO DELIVER』にも発見フェーズとデリバリフェーズをつないだ無限ループのモデルが紹介されています。写真はダラスで開催されたAgile 2012 Conferenceのセッションより。
書籍『DISCOVER TO DELIVER』にも発見フェーズとデリバリフェーズをつないだ無限ループのモデルが紹介されています。写真はダラスで開催されたAgile 2012 Conferenceのセッションより。

 アジャイル開発は開発サイクルを高速に回します。DevOpsでは無限大の形をしたサイクルを回していきます。よって、左も右もありません。

 シフトレフトという言葉自体が、従来型の線形プロセスにしばられてしまっている可能性があるのかもしれません。そもそも上流・下流という言い方が、日本だとあまりポジティブに受け取られないかもしれませんね。


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

著者プロフィール

  • 藤原 大(フジハラ ダイ)

     スーパーアジャイルコーチ、エンジニアリングマネージャ、『リーン開発の現場』の翻訳者のひとり。創造的、継続的、持続的なソフトウェア開発の実現に向けて奮闘中。週末に娘と息子とお昼寝しながら世界のビーチや離島を旅する夢を見る。最近はテスト自動化サービス「mabl」の導入を支援中。

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5