「生成AIで自動化」だけでテストは十分?自動・手動の最適バランス

※本セッションの話はシステムテストを対象

テスト自動化を考えて

単体テストや結合テストレベルのテスト自動化はコードベースで書きやすいが、システムテストの自動化になるとハードル(手間)が急に上がる
→インプットもアウトプットもGUIベースになるので、デザイン変更によるメンテコストのつらみがある
→ローコードやノーコードで自動テストを作れるサービスもあり、比較的システムテストの自動化も手を出しやすくなった

テスト自動化の夢

自動化を銀の弾丸魔法のように捉え、自動化に移行した結果苦労してきたお客様をたくさん見てきた

システムテストのコストが下がるんでしょ?

自動化構築にはコストがかかる

  • 自動化のコーディング自体に時間がかかる

    • 自動化サービスなどを利用して軽減は可能

  • 組んだ自動テスト自体に不具合が混入する可能性がある

    • ソフトウェアのための自動テスト、のためのテスト?

  • 自動テストはメンテも必要

    • 画面操作を軸にするE2Eテストでは、デザインなどUIの変更は自動テストに大きな影響がある

    • メンテナンスを行わないと形骸化する

      • 本当のエラーか無視してもいいのかオオカミ少年になりがち

システムテスト担当者は全員クビでいいんでしょ?

  • 自動化には、効果的なテスト設計が必要

    • 意味のないテスト結果が自動かつ高速で生み出されてしまう

    • 効果的なテスト設計には、テストに対する知識や経験が必要

      • そこでAIを活用

        • テスト観点/プロダクトリスク/テスト技法の選択など

        • ただし、AIの結果が全て正しいわけではない

      • アイディアの土台としてリストアップしてもらう

      • 人が考えた内容に対してFBをもらい、考慮漏れをフォロー

      • 気づきの機会をAIに貰う

      • ハルシネーションのリスクは考慮する

24時間テストを実行して、テスト期間は短くなるんでしょ?

実施するテストによる

  • 繰り返し行う必要があるテストには効果的

    • リグレッションテスト

    • 本番環境のサービスやAPIの死活監視

  • 人ができない夜間や休日の実行ができる

    • 夜間や休日のテスト実行は、自動テストの安定が必要

  • 繰り返し行わないテスト自動化は、自動化の構築やメンテの工数で逆にテスト期間が延びる可能性がある

システムテストは放置で上手いことやってくれるんでしょ?

テスト自体の自動化だけではなく、プロセスの自動化も必要

  • レポート

  • 通知

  • 継続的インテグレーション

  • エラー検知やデバッグしやすいログ

上記のプロセス自動化構築の工数も考慮する必要がある
→大きなシステムほどメンテコストやサンクコストが膨らむ

自動化の向き・不向き

そのシステムテストは自動化するべきかどうか

  • 自動化に向いているGUIや機能がある

  • 逆に手動のほうが効率よくテストできる場合もある

    • スクロールのカクツキ

    • ユーザビリティ

      • なんとなく気持ちがいい、説明が難しいけどしっくりこない

      • 言語化できないとロジックに落とすのが難しい

      • そのような箇所にこそUXの課題がある場合がある

    • 手動だと狙った箇所以外のテストも同時にできる

      • デザイン/UX/脆弱性

自動化テスト・手動テストの住み分けポイント

  • 無理に全て自動化する必要はない

    • Webサービスであれば、ページタイトルやヘッダー、フッター表示など簡単なテストであってもテスト担当者は楽になる

    • ミニマムマップ

  • 画面の見切れ、不自然な改行位置などの不具合は捉えにくい

    • AIでだいぶフォローはできるようになっている

    • 画面比較などで自動テストできないこともない

      • 画面内に広告など可変の箇所があると難易度が上がる

    • 人が実施したほうが早い

  • 住み分けの線引きが重要

    • 木こりのジレンマに陥る可能性がある

    • 自動化の成果の計測は重要

  • テスト(実施)自動化だけが自動化すべき対象ではない

    • 大量のテストアカウント自動作成ツール

    • テストで出力された大量のCSVをExcelで比較するツール

  • テストプロセスの自動化も有効

    • テストケースの進捗や結果の集計

    • Slackなどへの通知の自動化

  • ちょっとしたツールをAIに書いてもらう

自動化に向いているポイント

  • リグレッションのように繰り返すテストは自動化すべき

    • 3回以上が目安

  • ヒューマンエラーを防ぐための自動化は有効

    • 人間が実施するのが難しいテスト

      • タイミングやセットアップ

  • 死活監視

  • 勤務時間外のテスト実行

まとめ

自動・手動の最適バランスはありません
プロジェクトだから状況が一定ではない

  • 開発対象

  • 組織/チーム

  • 新規開発/エンハンス開発

  • コスト/スケジュール

  • ステークホルダー/業界

  • 開発手法

1. 自動化に対する夢を捨てる

「十分に発達した化学技術は、魔法と見分けがつかない」

  • 魔法ではない。銀の弾丸でもない

    • 全部は自動化できない

  • ちょっとした自動化でも、意外と仕事は楽になる

    • 壊れたら検知できる仕組みで、安心して開発ができる

2. 再利用できるテストを自動化する

  • 壊れる可能性は低いが、ユーザーへの影響が大きい箇所

    • メンテが少ない。テスト自動化の練習に向いている

  • 価値が低い(と思われる)箇所(バグるとちょっとダサい)

    • サイトタイトルやリンク切れ

  • 開発者として気軽に変更ができ、UX効果の大きい箇所はNG

    • デザイン変更

    • 自動テストのメンテが大変

3. テスト実施の自動化にこだわりすぎない

  • 何のための自動化か、目的を思い出す

    • テスト実施の自動化だけがテスト活用の効率化ではない

  • 頑張って自動化を果たしたけど、結果手動のほうが早かった

    • 楽しくてやっちゃうのは仕方がない

4. テスト自動化も開発プロジェクトの1つ

  • 要件定義など上流工程の検討が必要

    • 目的、計画、構築後の運用、ドキュメントなど

  • 開発同様、しっかり行わないとプロジェクトが失敗してしまう

  • 判断には専門家の知識が必要

この記事が気に入ったらサポートをしてみませんか?