/note/tech

A new era for software testing

要約:

■ 1. 自動プログラミングと品質のトレードオフ

  • 自動プログラミングは特定のユースケースおよび適切な使い手の下でソフトウェア開発を大幅に高速化する
  • 出力の構造的品質は最高品質の手書きコードには及ばないが、適切に管理された場合は一般的な手書きコードを上回ることが多い
  • 品質と時間のトレードオフは顕著であり、数ヶ月かかるプロジェクトを数週間で完成させるケースもある
  • ソフトウェアQAとテストの領域では、LLMは品質の妥協なく新たな自動化の手法を提供する

■ 2. 従来のソフトウェアテスト手法の限界

  • 従来の手法:
    • ローカルスコープのユニットテストと統合テストで構成されるテストスイート
    • 手動で実施されるQAパス
  • 限界:
    • コードの全行をカバーすることは全状態をカバーすることを意味しない
    • 統合テストはタイミング問題、セットアップの複雑さ、視覚的検査が必要な出力など、構造的な困難を抱える
    • 時間や物流上の制約から、多くのテスト機会が活用されていない

■ 3. LLMを活用した新しいQA手法

  • 基本的なアプローチ:
    • AIエージェントにQAエンジニアとして動作するよう指示するMarkdownファイルを作成する
    • エージェントはリリース済みバージョンとの差分コミットを確認し、影響範囲を特定してから検証を実施する
  • DwarfStar(オープンウェイトLLM向け推論エンジン)での適用例:
    • MacBook AとBをまたぐ分散推論の整合性と全GGUFファイルの動作確認
    • 速度リグレッションの検出(期待値の明示が不要で、変動する基準に自律的に対応)
  • Redis Arraysでの適用例:
    • 大規模な配列ベースのRedisアプリケーションを構築し、レプリケーションと永続化を備えた本番環境を設定
    • 多数のユーザーによる数日間の使用をシミュレーションし、異常を検出

■ 4. AIによるQAがもたらす可能性

  • 従来は手動で行われ、多くの場合スキップされていたテスト活動を自動化できる
  • ユーザー視点での品質評価が可能:
    • 驚きを与える新機能の識別
    • ドキュメント不足の指摘
    • ユーザー体験上の粗さの発見
  • 自動QAの導入がソフトウェアリリースの品質基準を引き上げる可能性がある
  • 高速な自動プログラミングによるコード品質の低下を部分的に補完できる可能性がある