結論
再現が難しかったり、原因の判断が難しいバグは、
大抵の場合状態のせい。
既存メンバーに聞くと、結構あるある問題だから、
そこまで調査せず軽く聞いてしまうのが、だいたい良い。
原因の具体例
データベースのレコード
不整合や特定の条件を持つレコードが原因でバグが発生する。
DB以外のデータ
システムによってはテスト用のcsvやpdf, jsonなど配置が必要な可能性がある。
SaaSや外部システムの状態
外部サービスの状態変化がアプリケーションに予期せぬ影響を与える。
ネットワーク
ネットワークの遅延や断絶が原因で発生する問題。
ブラウザ、CDN、アプリケーションのキャッシュ
キャッシュされた古いデータが原因でユーザーに誤った情報が表示される。
Cookie、LocalStorage
ユーザー側のブラウザに保存された状態が原因で、特定のユーザーだけが遭遇するバグ。
セッション状態
ユーザーセッションの特定の状態や期間が問題を引き起こす可能性があります。
環境変数やサーバーの設定
開発、テスト、本番環境間での設定の違いがバグの原因となることがあります。
同時実行性の問題
複数のプロセスやスレッドが同時に同一のリソースにアクセスする際に発生する問題。
依存する別リポジトリの問題
ローカルで動作させる場合、モック用のリポジトリや依存ライブラリを格納した、別リポジトリが必要だったりする。
手順書が古い
古い手順では正しく動作しない場合がある。
OSSのバグ
たまにあるけど、そんなに無い所感。
新しいライブラリなどの場合注意。
作業ディレクトリが違う
気づきにくいミス。