ソフトウェアテストにおけるAIが本当に変えたこと
テストを書くこと自体はボトルネックではなくなった。 既知の挙動をテストコードへ翻訳する作業が、かつては仕事の大半でした。それが今やほぼ無償になり、制約は「何が正しいとすべきかを決めること」へ移りました。
修正する主体は、人間とは限らなくなった。 コーディングエージェントが失敗を読むとき、ダッシュボードより出力形式のほうが重要になります。スクリーンショットはもはや成果物ではありません。
変わらなかったこと
何を正しいとするかを決めること
依然としてプロダクト判断です。あなたのビジネスが何を約束しているかを知っているモデルは存在しません。
テストデータと環境
依然として最も地味で、スイートが失敗する最も一般的な理由です。
不安定さ
適応的な実行はセレクタの脆さを取り除きます。しかし不安定な環境は不安定なままです。
難しくなったこと
コード量は増えたのに、レビュー能力は増えませんでした。これこそが、現在のAIへの関心の裏にある本当の危機であり、テストをもっと生成すれば解決するものではありません。解決するのは、挙動に対する独立したチェックを持つことです。コードと同じ前提から生成されたテストは、コードと一致してしまうからです。
2つめの新しいリスクはより微妙です。チェックを通せと指示されたエージェントは、製品を直す代わりにチェックのほうを満たしにいくことがあります。曖昧なチェックはこれを誘発します。具体的で反証可能なチェックはそうなりません。
身につける価値のある習慣
わざと何かを壊して、チェックが赤くなることを確認してください。1分で済み、そのチェックが——生成されたものであれ手書きであれ——実際に製品と繋がっている唯一の証拠です。
最も早く人を誤らせる指標
カバレッジ率はもともと不完全な代理指標でしたが、生成によって完全に壊れました。それでも多くのチームが今なおこれを報告しているため、問題は深刻です。
この数値が測っているのは、どの行が実行されたかです。意味のあるアサーションがなされたかどうかは一度も測ってきませんでした。そしてテストが大量に生成されるようになると、その乖離は急激に広がります。コードの9割に触れながら、実質的に何も主張しないスイートを作るのは簡単だからです。カバレッジは上がり、グラフは見栄えよくなり、流出した不具合の数は動きません。
この問題を抱えない2つの数値があります。リリース前に見つかった不具合の割合と、失敗から修正までの所要時間です。どちらもテストを増やすことでは水増しできず、どちらも本当に何かが改善したときに動き、そしてどちらも収集が面倒です。だからこそ、チームはカバレッジを報告し続けるのです。
どこから始めるか
ターミナル
npm install -g @testsprite/testsprite-cli
testsprite setup
ローカルにインストールしたくない方には、ダッシュボードが同じ範囲をカバーします。コマンドの全体像は CLI リポジトリにあります。
パイプラインが別のチームのものである場合、最も摩擦が少ないのは GitHub App です。これはwebhookであり、リポジトリには何も変更を加えず、ビルドが新バージョンの公開を報告した時点で発火します。チェックをリポジトリ内で見えるようにしたい場合は、 GitHub Actions のステップで実現できます。
難しくなった部分に対して、TestSpriteは何をするか
量の問題こそ、これが作られた理由です。カバレッジは書くのではなく製品から生成されるため、エンジニアリング時間を機能開発と奪い合いません。そして誰かが思い出したときではなく、変更のたびに実行されます。
独立性の問題は、チェックが置かれる場所によって扱われます。コード自身の前提に対してではなく、あなたが記述した挙動に対して、デプロイ済みのアプリケーションを動かします。実装とそのユニットテストの両方が同じエージェント由来である場合に、これが意味のある情報をもたらす理由です。
変わらないものは、ここでも変わりません。何を正しいとするかを決めるのは依然としてあなたであり、テストデータと環境も依然としてあなたのものです。得られるのは、カバレッジがコードの到着速度に遅れをとらなくなることです。
AIはテスターを置き換えますか?
仕事の機械的な半分は置き換えます。何を正しいとするかを決めること、そして悪用のされ方を敵対的に考えることの価値は、下がるどころか上がっています。
生成されたテストは信用できますか?
形やステータスについては概ね信用できます。値が正しいかどうかについては、コードが置いた前提をそのまま引き継ぐため、レビューが必要です。
テストの数は減るということですか?
通常はカバレッジが増え、手書きのテストが減ります。あなたの注意の配分が、書くことからレビューすることへ移ります。
チームが犯す最大の間違いは何ですか?
流出不具合ではなくカバレッジを測ることです。カバレッジは生成によってすぐ上がり、そしてほとんど何も教えてくれません。
人間の判断が最も重要なのはどこですか?
曖昧な要件と、ビジネスロジックの悪用です。どちらもコードではなく製品についての話です。