1 分

チャット生成アプリのテスト:まず何をテストし、何をスキップするか

React、Go API、Flutterで生成されたチャットベースのアプリ向けに、最小限のユニット、統合、E2Eチェックを優先する計画。多くの回帰を早く捕まえる方法に焦点を当てます。

チャット生成アプリのテスト:まず何をテストし、何をスキップするか

チャット生成アプリが予測可能な箇所で壊れる理由

チャットで生成されたコードベースは、正しく見える断片を組み合わせただけで、相互に整合させることが十分に強制されていないため、同じ箇所で失敗しがちです。多くの機能はハッピーパスでは動きますが、実際のユーザーが速くクリックしたり、変な入力を送ったり、旧バージョンのクライアントを使うと崩れます。

リスクの多くはグルーコードにあります:画面をAPI呼び出しに繋ぐ小さな部分、APIレスポンスをUI状態にマップするコード、ユーザー入力をデータベース書き込みに変換するコード。こうした部分は地味なので手が回りにくいですが、アプリ全体のフローを支配します。

回帰はまた、2つのコンポーネントが契約を共有しなければならない境界に集中します。UIはある形を期待しているのにAPIは別の形を返す。APIはデータベースが値を受け入れると仮定しているが、制約に弾かれる。ある層が命名、型、デフォルトを変え、他が追随しない――こうしたことが繰り返し起こります。

よく見られる失敗ポイントは次のとおりです:

  • UI状態の境界(loading vs empty vs error、ダブルクリック、戻るボタン、古いキャッシュ)
  • API検証の穴(欠落フィールド、誤った型、予期しない列挙値、認可/ロールチェック)
  • データベース書き込み(null処理、一意制約、トランザクション、部分更新)
  • 時間と順序の問題(リトライ、競合、"作成してから取得" のフロー)
  • シリアライゼーションの不一致(日付、ID、オプショナルフィールド、層間のフィールド名)

素早い開発はこれを鋭くします。Koder.aiのようなプラットフォームでは素早い反復を促すため、プロンプトして再生成してリファクタして次へ進む流れが強みですが、小さな変更が頻繁に起こると境界を壊す可能性も高くなります。速く出すなら、速く動く・失敗時に大声で知らせるテストが必要です。

目標は自信であり、完璧性ではありません。すべての行が正しいことを証明するのではなく、実際に本番で恥をかかせるような変更(フォームが保存されなくなる、APIが有効なリクエストを拒否し始める、データベースの更新が静かにフィールドを書かなくなる)を検出することが目的です。

シンプルな期待値が役に立ちます:まず契約と主要なユーザーパスを守る。その他は、問題が本当に痛いとわかるまで待つ。

何を最初にテストすべきかの80/20

チャット生成コードでは最大のリスクはコンパイルエラーではなく、小さな変更が当たり前だと思っていた挙動を壊すことです。

まず、トップリスクを平易な言葉で列挙してください。これらのいずれかにバグが当たると高コストになります:

  • お金(価格、支払い、クレジット、計測)
  • 権限(誰が何を見たり変更できるか)
  • データ損失(削除、上書き、マイグレーション、ロールバック)
  • 可用性(ログイン、主要ページ、重要APIエンドポイント、タイムアウト)

次に、実際のユーザーフローとその下にあるAPI契約をカバーする最小のテストセットを選びます。良いルールは:各コアフローにつきハッピーパス1つと「不正入力」ケース1つ。たとえば「アイテム作成」は成功テストとバリデーション失敗(必須フィールド欠落)を持つべきです。これらはプロンプト変更でよく壊れます。

さらに、マージ前に捕まえるべきものとリリース前に捕まえるべきものを分けます。マージ前は速く信用できるテスト、リリース前は遅くても広く回せるテストで良いです。

簡単な優先度スケールを使うと議論が短くなります:

  • P0(必須):失敗するとマージをブロック
  • P1(推奨):CIで実行、1日で修正可能
  • P2(望ましい):定期実行またはリファクタ時に実行

具体例:Reactアプリ、Go API、Flutterクライアントでの「パスワード変更」機能。

P0:APIが弱いパスワードを拒否し、APIが保存されたハッシュを更新し、両クライアントが失敗時にエラーメッセージを表示する。

P1:レート制限とセッション期限。

P2:ピクセル単位のUI状態。

Koder.aiなどで生成されたアプリをテストする場合、この80/20のレンズは多数の脆いテストを避けつつ、ユーザーが実際に感じる失敗を捕まえるのに役立ちます。

最も回帰を捕まえるReactのユニットテスト

Reactの回帰は主に二つの場所から来ます:小さなロジックミス(データ整形、バリデーション)と現実と一致しないUI状態(読み込み、エラー、無効化されたボタン)。ユーザーにとって痛い場所から始めてください。

純粋ロジックから始める(安価で信号が強い)

入力と出力が明確な関数は、UIより先にテストしましょう。これらのテストは速く、ほとんどフレークしませんし、小さな一行変更で多くを壊すのを防ぎます。

良い最初のターゲット:日付や通貨のフォーマッタ、フィールドバリデータ、APIレスポンスをビュー用モデルにマッピングする関数、画面を駆動するリデューサーや状態マシン。

その後、ユーザーが作業を完了する画面に対して数個のコンポーネントテストを書きます。多数の浅いスナップショットよりも、ユーザーのように振る舞う少数のテスト(フォームに入力し、ボタンをクリックして、ユーザーが見るものをアサート)を使ってください。

壊れやすいUI状態に注力:フォームバリデーションと送信挙動、無効化状態(ダブルサブミット防止含む)、読み込みとリトライ、エラー描画、空状態と結果状態。

ネットワークと話す箇所は境界でモックしてください。APIクライアントをシーム(継ぎ目)として扱い、リクエストの形(メソッド、パス、主要なクエリパラメータ、ペイロード)をアサートし、コンポーネントに現実的なレスポンスを返します。これはバックエンドが頻繁に生成・編集されるときに契約のズレを早期に検出します。

継続的に効果を生むルール:バグを直したら、そのバグが戻ったら失敗するテストを1つ追加する、例えばKoder.ai生成のページが userId ではなく id を送っていたなら、送信ペイロードのキーを検証するテストを追加する、という具合です。

効果の高いGo APIのユニットテスト

Goのハンドラは見た目は正しく見えても小さなロジックの穴を隠していることがあります。最速で得られる成果は、入力、権限、データを変えるルールを固定するテストです。

まず固定すべきこと

リクエスト検証から始めてください。チャット生成コードは空文字を受け入れたり、最大長を無視したり、誤ったデフォルトを適用したりすることがあります。ハンドラ(またはその検証関数)を悪いペイロードで呼び出し、明確な400レスポンスと有用なエラーをアサートするテストを書きます。

次に、エッジでの認証と権限を固めます。よくある回帰は「認証はあるが、間違ったロールが更新できてしまう」です。ユーザーコンテキストを含むリクエストを構築してハンドラやミドルウェアを呼び出し、ハッピーパスといくつかの禁止ケースをテストしてください。

その後、データを変えるビジネスルールに注力します。作成、更新、削除、冪等なエンドポイント("存在しなければ作る" のようなもの)は厳密なテストに値します。ここは小さなリファクタで重複作成を許したり、必要な状態遷移をスキップしたり、不変であるべきフィールドを上書きしたりする場所です。

エラーのマッピングを明確にしてください。APIは一般的な失敗を一貫して正しいステータスコードに翻訳するべきです:入力不正(400)、見つからない(404)、競合(409)、予期しないエラー(500)。ユニットテストはステータスと安定したエラー形状の両方をアサートして、クライアントが壊れないようにします。

早期にカバーすべき高ROIのチェック:必須フィールドとデフォルト、ロールごとの権限チェック、冪等性、一般的な失敗とステータスコードのクリーンなマッピング。

テーブル駆動テストはエッジケースを読みやすく保ちます:

tests := []struct{
  name string
  body string
  wantStatus int
}{
  {"missing name", `{"name":""}`, 400},
  {"too long", `{"name":"aaaaaaaaaaaaaaaa"}`, 400},
}

クライアント側の驚きを防ぐFlutterユニットテスト

実デプロイでテストする
早期に実環境を用意して、統合テストでレイヤー間の問題を早めに検出します。

チャット生成されたアプリのFlutterのバグは、フィールドがときどきnullになる、日付形式が異なる、リトライ後に画面が読み込み状態で固まる、などの小さな前提のずれから来ます。少数の焦点を絞ったテストで大抵は事前に検出できます。

まずデータマッピングから始めてください。最大のリスクはJSONとDartモデルの境界です。実感のあるペイロードを fromJson に流し、欠損フィールド、名称変更、変な値を正しく処理することを確認するテストを書きます。列挙型と日付は典型的なトラブルメーカーです:新しいenum値でクラッシュしないこと、パースが安全に(明確なエラーとともに)失敗することが重要です。

次に状態遷移をテストします。BLoC、Provider、Riverpod、あるいは単純な setState を使っていても、ユーザーが毎日触る動作をロックダウンしてください:初回読み込み、リフレッシュ、エラー、リトライ。これらのテストは安価で、"永遠にスピンする" 問題を早く捕まえます。

効果が高い短いセット:

  • コアオブジェクト2〜3つのモデルパース(未知のenum、null、日付/数値パース)
  • ViewModelやBLoCの遷移(loading -> success、loading -> error、error -> retry -> success)
  • 主要フォームの入力ルール(必須、基本フォーマット、長さや数値の制限)
  • モックしたHTTPレイヤでのAPIクライアント挙動(タイムアウト、リトライ、"オフライン" の扱い)
  • サーバーがバリデーションエラーを返したときに親切なメッセージを表示するテスト1つ

具体例:Koder.aiで作られた「プロジェクト作成」画面なら、空名はブロックされる、空白はトリムされる、APIから初めて来たリージョン値でドロップダウンがクラッシュしない――というテストを入れます。

ゴールデンUIテストは役立ちますが稀に使ってください。ログイン画面、主要ダッシュボード、重要なチェックアウト/作成フローなど、レイアウト回帰が本当に痛い画面だけに限定します。

React、Go、Postgresを横断する高価値な統合テスト

素早く生成すると最も痛いバグはレイヤー間で出ます:ReactページがAPIを呼び、GoハンドラがPostgresに書き込み、UIが変わったレスポンス形を期待する――統合テストはこれらのレイヤー横断の破綻を、すべてをテストしようとせずに最速で検出する手段です。

ルール:各コアリソース(users、projects、orders等)について、Go APIを経由してPostgresに実際に書き込むハッピーパスを1つずつテストしてください。すべてのエッジケースではなく、配線が機能していることを証明する1つのハッピーパスです。

ほとんどの回帰を捕まえる最小の統合セット

高信号のチェックを小さく始めます:

  • コアリソースごとのAPI+DBパス:HTTPで作成または更新し、存在を確認(APIで読み返すか保存されたフィールドをチェック)
  • 契約の安定性:クライアントが頼るエンドポイントのリクエスト/レスポンス形を固定する
  • 認証統合:トークン解析、ロールチェック、401と403の違いを検証
  • React -> API のメイン送信:主要なフォーム送信パスを1つ(成功+一般的なエラー)
  • Flutter -> API のメイン読取/書込:一覧/詳細の読み取りと主要な書込アクション1つ(本番エンドポイントを使用)

安定させるコツ:1シナリオ、実データ、小さなサーフェス

これらのテストでは実際のPostgresインスタンス(使い捨てDBが多い)を使ってください。必要最小限のシードだけを入れ、各テスト後にクリーンアップし、ユーザーが気にする点にアサーションを絞ります:保存されたデータが正しい、権限が強制されている、クライアントがレスポンスを解析できる等。

例:"プロジェクト作成" 機能。Goの統合テストは POST /projects を叩いて201を確認し、プロジェクトを取得して名前とowner IDを確かめます。Reactの統合テストは作成フォームを送信し、成功状態で新しい名前が表示されることを確認します。Flutterのテストはプロジェクト一覧を開き、プロジェクトを作成してリフレッシュ後にリストに現れることを確認します。

Koder.aiで生成されたアプリなら、UIやハンドラを再生成したときにペイロード形やエラーフォーマットが変わっても、これらのテストが守ってくれます。

安定して残る最小限のE2Eテスト

E2Eはアプリがエンドツーエンドで機能するかを確認する最後の安全網です。小さく退屈に保つと最も価値があります:React、Go API、Postgres、Flutterクライアント間の配線が変更後も保たれているかを確かめるスモークテストです。

壊れると実害が大きい旅程を数個だけ選びます:サインイン/サインアウト、レコード作成、編集して保存、検索/フィルタの開封、(あれば)チェックアウト/支払い。

まずは1つのブラウザと1つのデバイスプロファイルで実行します(例:WebはChrome、モバイルは典型的な端末サイズ)。顧客が実際に問題を報告したときにのみブラウザやデバイスを増やしてください。

安定性は設計です。テストが本当に壊れたときだけ失敗するようにします:

  • 固定のテストアカウントとシードデータを使う
  • 時刻を固定(アプリの時計を固定)して日付ロジックを予測可能にする
  • ランダムなsleepではなく明確なシグナル(特定の要素、ルート遷移、APIレスポンス)を待つ
  • ラン間で状態をリセット(DBのクリーンアップや新しいテナント)
  • フレークするテストはその週に直すか削除する

E2Eは主要パスの検証に使い、エッジケースはユニットや統合テストに任せてください。そこなら安価で壊れにくく、原因の切り分けも容易です。

遠慮なく後回しにして構わないもの

コードをエクスポートしてテストする
コードベースの所有権を保ちながら、信頼できるテストを追加しましょう。

時間を無駄にする最速の方法は、見た目は網羅的でも実際にはバグを捕まえないテストを書くことです。小さく焦点を絞ったセットは、信用できない広い網よりずっと有効です。

スナップショットテストはReactやFlutterでよく陥る罠です。大きなスナップショットは些細なコピーの変更やレイアウトシフト、軽いリファクタで変わるため、チームは雑多な更新を受け入れるか、失敗を見るのをやめてしまいます。スナップは小さく安定した出力(小さなフォーマッタ出力等)だけに限定してください。

もう一つの後回し候補はサードパーティライブラリのテストです。React Routerや日付ピッカー、HTTPクライアントが動くことを証明する必要はありません。代わりにあなたが設定する箇所、データをマッピングする箇所、エラーを扱う箇所だけをテストしてください。

スタイリングテストもほとんど価値がありません。無効化されたボタンや401時のエラーメッセージ表示など、振る舞いの検証を優先してください。アクセシビリティやコンプライアンス(コントラスト要件、キーボードフォーカスのアウトライン)やレイアウトがユーザーの操作に影響する場合は例外です。

同じチェックを全レイヤーで重複するのは避けてください。既にGoの統合テストで未認可は401になることを確認しているなら、同じ精密な主張をユニットとE2Eで何度も繰り返す必要はありません。

パフォーマンステストは価値がありますが後回しで良いです。フローが安定してから(たとえばKoder.ai生成の機能が毎日変わらなくなったら)測定可能な目標を1〜2個決めて一貫して追跡してください。

例:1つの機能に対する全レイヤーの最小テストセット

署名済みユーザーがプロフィールを編集してメールを変更するというシンプルな機能を想定します。これはUI状態、APIルール、クライアントキャッシュに触れるため、良いカナリアです。

以下はほとんどの回帰を捕まえつつフルスイートにならない最小セットです。

この機能に対する80/20テスト

  • React(ユニット):フォーム挙動。無効なメールでは送信が無効でインラインエラーが出る。正しいメールで送信が有効になる。APIが既知のエラー(例:メールが既に使用されている)を返したときにエラーバナーが出るテストを1つ追加。
  • Go API(ユニット):ビジネスルール。メール形式を検証し空値をブロックする。メールが一意であるならそのチェックとクライアントが依存する正確なエラーコード/メッセージをテストする。メールが変わったときに監査フィールド(例:updated_at)が更新されることもテスト。
  • Flutter(ユニット/ウィジェット):画面状態とメッセージ。成功時は画面に新しいメールが表示され古いエラーが消える。失敗時は明確なメッセージが表示され、送信ボタンが使える状態に戻ることをテスト。
  • 統合(Go + Postgres):更新と一意性。ユーザーを2人作り、ユーザーAのメールをユーザーBのメールに変更しようとして適切な失敗をアサート、データベースに部分的な更新が残らないことを確認。
  • E2E(ハッピーパス1つ):エンドツーエンドでメールを変更。ログイン → プロフィールを開く → メールを変更 → 保存 → リロードして永続化を確認。

何をカバーするか(そしてなぜ十分か)

このセットはよく壊れる箇所を狙っています:ReactのUIバリデーションと無効化状態、Goのルールドリフト、Flutterの古くて混乱を招くUI。Koder.aiのように層を跨いでコードが素早く変わる環境では、この程度のテストで高速なシグナルが得られ、メンテナンスも少なくて済みます。

60分で優先順位付けされたテスト計画を作る手順

品質でチームを揃える
P0パスに集中したCIチェックで、チーム全体の速度と品質を両立します。

タイマーを60分にセットし、完璧さではなくリスクに集中してください。チャット生成コードは見た目は正しくても小さなルールや配線を見落としがちです。目標は、挙動が変わったときに大声で失敗する短いテストセットを作ることです。

0-15分:収益に直結するフローを選ぶ

必ず動かなければならない5つのユーザーアクションを書き出します。具体的に:「サインイン」「注文を作成する」「支払う」「注文履歴を見る」「パスワードをリセットする」など。Koder.aiで作るなら今日エンドツーエンドでデモできるものを選びましょう。

15-35分:小さなテストでルールを固める

各フローについて、誤ると実害が大きいルールを1つ見つけてください。ルールが存在するレイヤーごとに高速なユニットテストを1つ追加します:

  • React:バリデーション、フォーマット、条件付きUI状態(読み込み、空、エラー)
  • Go API:ビジネスルール、権限チェック、入力のエッジケース
  • Flutter:クライアント側のマッピング、状態遷移、リトライとオフライン処理

例:「チェックアウトで負の数量を許可してはいけない」ならAPIで1回、クライアントでも同様に1回テストすれば良いでしょう。

35-50分:フローごとに1つの統合チェックを追加

各フローに対して1つ、実際のAPIを叩いてPostgresに書き込む統合テストを追加します。狭く:作成→更新→取得→保存結果の検証。これでフィールド名の誤りやトランザクションの欠如やマイグレーションの破綻を捕まえられます。

50-60分:最小限のE2Eを選び、CIの順番を決める

合計で3〜6のE2Eフローを選びます。最もレイヤー横断的なパス(ログイン → 作成 → 表示)を優先。テストデータを安定化させ(シードユーザー、既知のID、固定時刻)ランダム性を避けます。

CIでは次の順で回すと良いです:ユニットテストをプッシュごとに、統合テストをプッシュまたはmainで、E2Eは可能ならmainやナイトリービルドで。

よくあるミス、クイックチェックリスト、次の一手

間違ったレベルで間違ったことをテストするのが時間の無駄の最速ルートです。ほとんどの失敗は予測可能:不明確な契約、現実味のないモック、誰も信用しないスイート。

よくあるミス:API契約に合意する前にテストを始めること。Go APIがエラーコードやフィールド名、ページネーションルールを変えると、ReactやFlutterクライアントはランダムに見える失敗をします。まず契約(リクエスト、レスポンス、ステータスコード、エラー形状)を書き出し、少数の統合テストで固定してください。

別の罠はモックの乱用です。Postgresや認証ミドルウェア、実際のネットワークレスポンスの振る舞いをしないモックは偽の安心感を生みます。純粋ロジックはユニットテストで、プロセス境界を越えるものは薄い統合テストを優先してください。

三つ目の誤りはE2Eに頼りすぎること。E2Eは遅く壊れやすいので、最も価値あるユーザージャーニーだけを守らせ、残りはユニット/統合でカバーしてください。

最後に、フレークを無視しないこと。テストが時々失敗するならチームは聞かなくなります。フレークを配信パイプラインのバグと見なし、迅速に直してください。

テストを増やす前の簡単なチェックリスト:

  • トップのユーザーフローと主要な故障モードを書き出す(認証、支払い、データ保存、検索、オフライン)
  • 少数の統合テストでAPI契約とエラーコードをアサートする
  • 3〜6の安定したE2Eフローを主要ユーザーゴールに合わせる
  • フレークテストは1日以内に修正または削除する
  • 失敗をレイヤー別にレビューしてパターンを見つける(React、Go API、DB、Flutter)

次のステップ:計画を実行し、レイヤーごとに回帰を追跡し、意図的にスイートを小さく保つことです。Koder.aiで生成するなら、生成したAPI契約を確認した直後にテストを追加し、その後で機能を拡大するのが良いワークフローです。

もしKoder.aiで生成されたアプリを横断的に反復したいなら、koder.aiのプラットフォームはそのワークフローを念頭に設計されています。使うツールに関わらず、テストのアプローチは同じです:契約を固定し、主要パスをカバーし、スイートを退屈なほど維持すること。

よくある質問

Why do chat-generated apps break in the same places over and over?

生成されたパーツは個別には正しく見えることが多いですが、境界(UI ↔ API ↔ データベース)で小さな契約のずれ(フィールド名、型、デフォルト、ステータスコード)が発生すると、ダブルクリックや変な入力、古いクライアントの利用など実際のユーザーの「雑な」操作で壊れやすくなります。

What should I test first if I only have a few hours?

まずは接着剤部分(グルー)をテストしましょう:主要なユーザーフローとその下にあるAPI契約です。「作成/更新 + 検証 + 保存 + 取得して確認」をカバーする小さなセットは、UIスナップショットを大量に並べるより実際のバグを多く捕まえます。

How do I choose test priorities without arguing about it?

まずは早く高コストになるリスクから決めます:

  • お金の流れ(価格、クレジット、請求、計測)
  • 権限(誰が何を見たり変更できるか)
  • データ損失(削除、上書き、マイグレーション)
  • 可用性(ログインや主要なエンドポイント)

これらから最小のテストで「沈黙のドリフト」を防ぐのが実務的です。

What’s a good P0/P1/P2 scheme for chat-generated code?

簡単な階層を使ってください:

  • P0:失敗するとマージをブロックする(コアフロー、契約、認可、データ書き込み)
  • P1:CIで実行、1日以内に直す(レート制限、セッション期限、リトライ)
  • P2:定期実行かリファクタ時(UIの磨き込み、稀なエッジケース)

カテゴリを決めてからテストを書くと議論が減ります。

What React tests catch the most regressions with the least effort?

まず純粋なロジック(フォーマッタ、バリデータ、APIレスポンス→ビュー用モデルのマッピング、リデューサー/状態マシン)をテストし、その後ユーザーのように振る舞う少数のコンポーネントテストを追加します:

  • 送信成功
  • バリデーション失敗
  • 読み込み → 成功
  • 読み込み → エラー → リトライ

ネットワークに触れる部分は境界でモックし、送信されるペイロードのキーを検証すると契約ドリフトを早く捕まえられます。

What Go API unit tests give the highest return?

四つを固定すると投資対効果が高いです:

  • リクエスト検証(不正なペイロード → 400 とわかりやすいエラー)
  • 認可・ロールチェック(未認可/禁止の場合の挙動)
  • データを変更するビジネスルール(作成/更新/削除、冪等性)
  • エラーのマッピング(400/404/409/500 と安定したエラー形状)

テーブル駆動テストにすると境界ケースの追加が容易です。

What Flutter tests prevent the most client-side surprises?

JSON→Dartモデルの境界と状態遷移に注力してください:

  • fromJson が欠損/nullableなフィールドをクラッシュせず扱う
  • 未知のenum値を安全に扱う(クラッシュさせない、または“unknown”に落とす)
  • 日付/数値のパースが予測可能である
  • ViewModel/BLoCの遷移:読み込み → 成功、読み込み → エラー、エラー → リトライ → 成功

さらに、サーバーのバリデーションエラーが返ったときにフレンドリーなメッセージを表示するテストを一つ入れてください。

What’s the minimum integration test set for React + Go + Postgres?

レイヤー間の破綻を捕まえます:

  • 主要リソースごとに1つの実DB経由パス(HTTPで書き込み→保存を確認)
  • 認証統合(トークン解析、ロールチェック、401と403の違い)
  • クライアントが頼る主要エンドポイントの契約の安定化(リクエスト/レスポンス形状)

各テストは最小限のシードデータで1シナリオに絞ると安定します。

How many end-to-end tests do I actually need, and how do I keep them stable?

少数で退屈なスモークテストを目指してください:

  • サインイン/サインアウト
  • レコード作成 → リフレッシュで表示されること
  • 編集して保存
  • 検索/フィルタして結果を開く
  • 決済がある場合はチェックアウト

固定のテストアカウント、シードデータ、明確な待ち合わせ(ランダムなsleepは使わない)、ラン間のクリーンアップを徹底すると安定します。

What tests can I postpone without regret?

ノイズが多く有益性の低いテストは後回しで構いません:

  • 大きなスクリーン全体のスナップショット(些細な文言やレイアウトで頻繁に変わる)
  • サードパーティライブラリ自体のテスト(統合点のみテスト)
  • ピクセル単位のスタイリング検証(動作に影響する場合は例外)
  • 既にAPI統合テストで保証されている認可の重複テスト

実際にバグを直したときにテストを追加することで、スイートは実用的に成長します。

Related posts