マルガリータ・シモノバ氏はILoveMyQA.comの創業者である。
今日の見出しをスクロールすると、AIがコーディングの実践に速度をもたらしたという数多くの記事を目にするだろう。しかし、もう少し深く掘り下げると、リリース後の不快な驚きについての話も見えてくる。現実には、AIはタスクを迅速化する大きな可能性を持つ一方で、リスクが潜む場所も変化させるのだ。
この記事では、QA業界のリーダーたちが自身のシナリオに適用できるいくつかの教訓を学ぶことができる:
• AIの速度とリスクの評価
• サイレントリグレッションへの対処
• AI作成コードの評価基準の作成
• 展開計画
AIが本当に高速化するものと遅くするもの
AIは特に反復的で構造化されたタスクにおいて、コーディングを大幅に高速化できる。まず第一に、プロジェクト内で繰り返し使用できるボイラープレートコードの設定に優れている。もう一つの利点は、テストの構造化に使用されるテストスキャフォールドだ。さらに、AIはコードをより効率的にするためのリファクタリングの提案も行える。
一方で、AIはコーディングを遅くする場合もある。一例としてエッジケースの発見が挙げられる。このような創造的な作業は、ユニークなシナリオを考え出すために人間の介入が必要なことが多い。また、AIは主に機能性に焦点を当てているため、パフォーマンスやアクセシビリティチェックなどの非機能的な品質も妨げられる可能性がある。さらに、AIは期待、倫理、規制要件の理解に関連する人間のコンテキストチェックを遅くする可能性もある。
サイレントリグレッションの問題
サイレントリグレッションとは、テストには合格するものの、最終的にアプリを劣化させる変更のことだ。これにはパフォーマンスの低下、コストの増加、安全性の低下、バイアスの追加、あるいは単にアプリの使用感の悪化などが含まれる。これは重大な問題となり得る。なぜなら、一般的な品質保証プロセスではこれらのサイレントリグレッションを発見できないが、ユーザーは最終的にそれに気づくからだ。
サイレントリグレッションはさまざまな原因で発生する。AI作成のコードは、人間の開発者がエラーをチェックすることを難しくする可能性がある。AIプロンプトの小さな変更やサードパーティのAIモデルの変更も、小さな修正が大きな結果をもたらす可能性があるため、サイレントリグレッションにつながる可能性がある。データドリフト(モデルが使用する実世界のデータが時間とともに変化すること)もサイレントリグレッションの原因となりうる。最後に、不十分なテストが誤った安心感を与えるため、浅いテストもサイレントリグレッションを引き起こす可能性がある。
サイレントリグレッションを軽減するには、AI加速リリース向けの事前ローンチチェックリストを実装することが良い方法だ。このチェックリストは標準的なテストを超えて、非機能的テストやアクセシビリティテストを含む。以下のチェックリストを参考にしてほしい:
• AIコードにフラグを立てる。 開発者がAIを使用してコードを書いた場合、プルリクエストにタグを追加して、特に注意が必要であることを知らせる。
• 重要な部分をチェックする。 新しいコードがアプリの最も重要な部分に影響を与えるかどうかを確認する。
• プロンプトをテストする。 レッドチームがAIを破ろうとし、拒否テストや幻覚テストも行う。
• データをチェックする。 AIに入出力されるデータが正しくフォーマットされ、個人情報が含まれていないことを確認する。
• 品質を検証する。 パフォーマンスの低下、高コスト、アクセシビリティの問題など、隠れた問題がないか確認する。
• セキュリティギャップを探す。 AIのコードにパスワードの露出、依存関係のSBOM差分、ジェイルブレイク、インジェクションプローブなどのセキュリティホールがないか確認する。
• アラームを追加する。 カナリアダッシュボードなど、新しいコードがリリースされた後に問題が発生した場合、すぐに警告するアラートを設定する。
• ロールバックを練習する。 問題が発生した場合に新機能を迅速に元に戻せることを確認する。これには自動ロールバック条件が含まれ、また実行手順書が文書化されていることも確認する。
• 段階的な展開を計画する。 まず影響範囲を制限するために、新機能を少数のユーザーにリリースし、問題がなければ徐々に全ユーザーに展開する。
AI作成の差分のためのレビュー基準
差分(Diffs)とは、コードベースへの変更のことだ。AI作成の差分のためのレビュー基準は、AIが検出が難しいが深刻な結果をもたらす可能性のある微妙な問題を引き起こす可能性があるため、不可欠である。この基準には以下の質問が含まれるべきだ:
• その変更は明確さを減少させたり、結合を強めたりしていないか?
• 生成されたテストは、コードの形だけでなく、動作を検証しているか?
• ガードレールのない新しい外部呼び出し、モデル、プロンプトはないか?
• 入力がドリフトして、静かに前提条件を破る可能性はないか?
• 変更された領域に対して、少なくとも1つの人間が書いた探索的チャーターはあるか?
この基準に照らして差分をチェックすることで、組織はAI加速リリースの利点を得ながら、リリース前にリスクが確認されることを保証できる。
30日間の展開計画
以下の計画は、チームがAI加速リリースサイクルのリスクを管理し、品質と安全性をスピードのために犠牲にしないことを確実にするのに役立つ。
• 第1週: AI作成のプルリクエストにタグ付けを開始し、基本的なプロンプトテストを追加し、1つのエンドポイントにパフォーマンス予算をオンにする。
• 第2週: SBOM差分、シークレットスキャン、ステージング環境でのロールバック訓練を追加する。
• 第3週: カナリアメトリクスとSLOアラートを接続し、フラグを通じて段階的な展開を開始する。
• 第4週: スコアカードを採用し、役に立たないチェックを廃止し、実際の問題を捕捉する少数のチェックに注力する。
ミニケーススタディ
この記事で学んだことの例として、次のシナリオを考えてみよう:ある開発者がAIを使用してコードを迅速にリファクタリングした。そのコードは少数のユーザーに対するカナリアリリースに組み込まれた。そのテスト中に、レイテンシスパイクが発生していることがすぐに判明した。開発者はフィーチャーフラグを使用して変更をロールバックした。
その後、開発者はプロセスを調整し、すべてのAI生成の差分にレイテンシ予算チェックを要求し、重要なパスに探索的パフォーマンステストを追加し、フォールバック計画なしではAI加速リファクタリングを起動できないというルールを制定した。
結論
AI加速リリースとそれが引き起こす問題について明確にできたことを願う。AIは大きな時間節約になるため、それを効果的に使用する方法を学ぶことが重要だ。この記事のアドバイスに従うことで、AIを使用してリリースを高速化する際のデメリットを制限するためのベストプラクティスを確実に適用できるだろう。



