開発者が越境するテスト改善
ヒューマンクレストは「“ちゃんと動かす”をサービスする」を掲げ、ソフトウェアテストや品質管理のソリューションを提供する企業だ。
同社で長年テストに携わり「自動テストが大好き」という浅黄氏は、本題に入る前に「ここでいう自動テストは、テストピラミッドの上の部分、UI層を操作するエンドツーエンドテストの話。Unitテストは含まれていません」と前置きした。

従来、開発者は開発を行い、テスターがテストを行う印象があるが、浅黄氏が支援した企業では、テスターがおらず、開発者がテストを実施していたという。「開発者がテストをするときに、どういった項目を押さえればいいか覚えてほしい」と浅黄氏。(しかもこの事例では、カスタマーサポートなど開発者以外のメンバーも越境し、テストに関わっている。)
では、テストを通して品質を向上するために、どんなことに注力すればよいのか。浅黄氏は「品質を構成する要素は3つある」と指摘する。「一般的な『品質』とは、プロダクトの品質のこと。しかし、それを向上するためにはプロセスや人の質も上げないと全体の品質が上がらない。そのため、プロセスや人についても取り組む必要がある」という。

これを踏まえて、今回紹介する事例では、開発者の「バグを見つける能力の向上」「バグを埋め込まない能力の向上」の2つを目指した。
テストスキルの向上によって、バグを早期発見できるようにすること。そして、バグの原因となりやすい「仕様の漏れ」や「影響範囲の調査の不足」が起きないよう、プロセスを見直す必要があるのだ。
Agile TPIを活用し、人とプロセスにアプローチ
浅黄氏が紹介したのは、ネットショップ運営をサポートするツールを提供するグリニッジ株式会社の事例だ。今回の事例は、同社の提供する2つのプロダクトに関するものだ。
浅黄氏が支援に入った当初、QAの体制がなく開発者がテストしており、新機能のテストはできているが、リグレッションテストはできていない状態だった。
そこで、浅黄氏が同社に理想の状態をヒアリングし、目的のすり合わせを行った。「メンバーの品質意識を高めて、より良いサービスを提供するチームにしたい」というゴールが見えたので、2023年1月からプロセス改善の取り組みを開始した。そして、2024年11月にほぼバグが出ない状態にまで改善した。
約2年間で実施したのは、ウォーターフォール開発からスクラム開発への移行や、シフトレスト、テストケースの標準化や、テストスキル向上のためのセミナーや輪読会……と、枚挙にいとまがない。
これらを全て一気に実践するのは不可能であり、場当たり的にやっても効果がない。どのタイミングで何を実施するかが重要となる。そこで浅黄氏は「Agile TPI (Agile Test Practice Improvement)」というフレームワークを活用した。
「Agile TPIは、テストプロセスを改善するフレームワークです。これを使って、評価・検証・改善を重ねました」
Agile TPIは、大きく4つの要素から成る。16種のキーエリアと3つのカテゴリ、108個のチェックポイント、そしてA~Gのクラスタだ。

「関与の度合い」「コミュニケーション」「テストケース設計」といったキーエリアに対して、3つのカテゴリで能力を評価する。プロフェッショナル、つまり個人の能力と、チームとしての能力、そしてオーガナイゼーション=組織全体の能力をそれぞれ評価するのだ。その評価軸となるのが、一つ一つの枠に割り当てられたチェックポイントである。
YES/NOで答えられる質問が用意されているので、これをすべてYESにすることを目指せばよい。A~Gのクラスタは優先度の指標になっており、Aから取り組むことが推奨されている。
「クラスタAのチェックポイントで『NO』になっているものがあったら、それをYESにするための取り組みから始めればよい。順番が明確なので使いやすいフレームワークです」
例えば、「テスト担当者のプロ意識」というキーエリアのクラスタAに「テストの役割を担う開発者が、特にテストエンジニアリングとテストケース設計に関するテストのトレーニングを受けている」というチェックポイントがある。
「テストのトレーニングを実施している会社は少ないのでは」と浅黄氏。グリニッジ株式会社においてもこの項目は「NO」だったので、対策としてQAセミナーや輪読会を開催。エンジニア全員が参加する会を毎週1時間、2年間継続した。その結果、チーム全体でテストスキルと品質意識が醸成された。
その他にも、テストケース設計に関して、優先度の高いチェックポイントをYESにするために、テストケースの書き方を統一。フォーマットを作ることで、開発者以外のメンバーでも実施できるようにした。
また、スクラム開発に移行したことでテストを実施するタイミングがあいまいになっていたところ、「コーディング前にテスト設計・ケース作成を行う」という手順にした。開発者がテストケースを作るため、コーディングの段階でバグが組み込まれにくくなる。「ただし、この時にテストのスキルがないと適当なテストケースになるので、開発者がスキルを身に着けることが重要」と補足した。
このAgile TPIの実践によって、グリニッジ株式会社では開発スピードも向上し、バグが出なくなったユーザーからの問い合わせに追われることもなくなったという。
浅黄氏は「一人ひとりのテストスキルを向上させ、プロセスを見直すことに注力しました。変化を実感してもらい、意識の変革を起こすことで、プロダクトの品質が向上しました」と振り返った。
リグレッションテスト自動化までの道のり
また、当初からの課題であった「リグレッションテストができていない」問題に対しては、リグレッションテストの自動化を行った。浅黄氏が調査したところ、リグレッションテストのケースが400件ほどあったが、それらを「誰が何の目的で作ったのか」「いつ実行すればよいのか」がわからなくなっていたという。
そこで、浅黄氏らが主導して一からテストを設計した。目的を明確にして、テストの意味を皆が理解している状態にしたのだ。その後、浅黄氏らヒューマンクレストが自動テストを作成し、毎日1回自動でテストがまわるフローが実現。リファクタリングも容易になった。
Agile TPIの取り組みと、リグレッションテストの自動化の実践を経て、グリニッジ株式会社では大きな変化が表れている。

「図の赤い部分がAgile TPIのチェックリストがNOだったもの、グレーが判定不可、緑がYESだったものです。2024年11月までにかなりグリーンが増えてきました」
ただし、個人とチームにおけるプロセス改善やテストスキルは向上しているが、それを組織に横展開できていない状態だ。浅黄氏は、「チームごとにプラクティスがある状態なので、組織に波及させていくことに注力している」と話し、これからも改善に取り組んでいくとしている。
最後に、浅黄氏はAgile TPIを実施するにあたってのポイントを伝授した。
チェックポイントで現状を評価したら、メンバーに共有することで、問題点に気がつくことができる。そして、優先すべきチェックポイントから、小さなステップで改善することを推奨する。「大きな変革は痛みを伴うことが大きい」と浅黄氏。3か月ごとに1~2ポイントの改善を目指すのがよいという。
また、チェックポイントをNOからYESにするための対策を実行しても、なかなかYESにならない場合もある。一つのチェックポイントに対して、立案、計画、実施、評価を繰り返していくことで地道に改善していくことが重要だ。
「品質向上のためにはプロセス改善が必須だと考えています。そのために、Agile TPIのようなフレームワークに従って実践を導入していくとよいでしょう。また、そこにはピープル、人のスキルの向上も欠かせません。プロセスと人の両方をよくするアプローチをすれば、必然的にプロダクトの品質も上がっていきます」