Vize

テストとエージェント

エージェントティック コーディングはテストの役割を変えます。

人間が小さなパッチを作成すると、そのパッチが何かを壊したかどうかがテストによってわかります。

エージェントが大規模なコードを書き換えることができる場合、テストはエージェントに「良い」の意味を伝えるために使用する言語にもなります。

そのため、テストの重要性は低下するのではなく、さらに高まります。

テストはプロジェクトの思い出です

エージェントはローカルな推論には優れていますが、プロジェクトは現在のプロンプトよりも大きくなります。

ツールチェーンには、次のような決定が蓄積されています。

  • 診断で何を言うべきか
  • ソース スパンが指す場所
  • 生成されたコードはどのように見えるべきか
  • どの Vue エッジケースがサポートされているか
  • 実際のプロジェクトでコンパイルを続ける必要があるもの
  • どの誤検知が許容されないのか

テストはそれらの決定を保存します。

テストがなければ、エージェントによる変更はすべて、プロジェクトを最初から再検出することを余儀なくされます。テストを行うことで、プロジェクトを後退させることができます。この動作は重要であり、この出力は意図的であり、このエラー メッセージはユーザー エクスペリエンスの一部であると言えます。

スナップショット テストは特に便利です

ツールチェーンは人間が検査する必要がある構造化された出力を生成するため、Vize は多くのスナップショットを使用します。

  • コンパイラ出力
  • フォーマッタ出力
  • リンター診断
  • 仮想 TypeScript
  • ソースマップされた診断場所
  • 生成されたMuseaメタデータ
  • フィクスチャプロジェクトからアーティファクトを構築

スナップショットはアサーションの代わりにはなりません。これらは、広範な行動をレビュー可能にする方法です。

エージェントは大きな差分を迅速に作成できるため、これはエージェント コーディングにとって重要です。優れたスナップショット スイートでは、これらの差分が人間が確認できる形式で表示されます。これは、「コンパイラのどこかで何かが変更された」ことを、「このレンダー出力はまさにこの場合に変更された」に変換します。

それははるかに優れたレビュー面です。

決定論は契約です

エージェントのワークフローには決定論的なツールが必要です。

テストが不安定な場合、エージェントはパッチが役に立ったかどうかを判断できません。実行間で出力順序が変わると、スナップショットがノイズになります。診断が周囲のマシンの状態に依存する場合、CI は抽選になります。

したがって、Vize は退屈な詳細を気にします。

  • 安定した出力順序付け
  • 安定した診断 ID
  • 安定したソーススパン
  • 安定した生成コード形状
  • 安定した治具のセットアップ
  • 分離されたスクラッチ ディレクトリ

決定論は CI だけのものではありません。これにより、人間とエージェントが同じフィードバック ループを共有できるようになります。

現実世界のフィクスチャーはシステムを正直に保ちます

単体テストは必要ですが、Vue ツールは実際のプロジェクトに存在します。

実際のプロジェクトには次のものがあります。

  • 珍しいインポートグラフ
  • パッケージマネージャーのレイアウト
  • 生成されたファイル
  • マクロ規約
  • スタイルプリプロセッサ
  • 巨大なコンポーネントツリー
  • 新しいパターンの隣に古いパターン

だからこそ、Vize は現実世界のフィクスチャやスナップショットに対してテストを続けています。目標は、本番環境の準備が早すぎると主張しないことです。目標は、完璧なサンプル アプリの外側にのみ現れる鋭いエッジをすべて見つけることです。

この種の徹底的なチェックは構築に時間がかかりますが、実験から実際のツールへの道です。

テストはコミュニティとの会話です

コミュニティのフィードバックはトラッカーのコメントだけではありません。

また、次のとおりです。

  • コンパイルに失敗した実際のプロジェクト
  • 間違ったスパンを示す診断
  • 採用を妨げる誤検知
  • 誰も予測できなかったリポジトリのパフォーマンスの崖
  • ツールチェーンが理解できなかった生産パターン

これらのレポートはすべて、固定具、回帰テスト、またはベンチマークになる必要があります。

そうやってフィードバックが記憶になるのです。このようにして、実験ツールは時間の経過とともにより本格的になります。

エージェントはより小規模で優れたループを必要としています

エージェントにとって最悪のテスト設定は、1 つの巨大な遅いコマンドが最後に不明瞭なメッセージとともに失敗することです。

最適なセットアップでは、多層的なフィードバックが得られます。

  • ローカル不変式の高速単体テスト
  • 出力レビュー用のスナップショット テスト
  • フレームワーク動作のフィクスチャ テスト
  • ツール境界に焦点を当てた統合テスト
  • プラットフォームおよび実稼働ビルド用の CI マトリックス

エージェントはそのはしごを使用できます。人間にもできます。

これが、Vize がテスト ツールとスクリプトの統合に投資し続ける理由の 1 つです。優れたプロジェクトでは、適切なチェックを実行しやすく、理解しやすく、リスクが増加した場合にスケールアップしやすいようにする必要があります。

信頼は繰り返し獲得される

README に「速い」または「正しい」と書かれているからといって、信頼できるツールチェーンはありません。

信頼は毎回獲得されます。

  • 診断は正確です
  • 修正によって近くのコードが損傷されることはありません
  • スナップショットの変更は説明可能です
  • 現実世界のプロジェクトは次々と過ぎていきます
  • CI はリリース前に何かをキャッチします
  • エージェントはスレッドを失うことなく反復できます。

テストがヴィズのサイドクエストではないのはそのためです。

製品の一部です。

AI 時代においては、最も多くのコードを生成するツールが最良のツールであるとは限りません。これらは、緊密で決定的なループでコードを生成、検証、説明、拒否できるものになります。

テストは、これらのループが現実になる場所です。