症状を数字で固定する
目標
「たまにうまくいきません」という報告を、20分以内に測定値と反証可能な仮説に変えられるようになります。
なぜ重要なのか
顧客はバグレポートをくれません。苦痛のレポートをくれます。それを測定可能な問題に変えるのは、完全にこちら側の仕事で、その最初の道具が再現コマンドです。失敗率を数字で固定した瞬間、2つのことが生まれます。1つ目は、顧客と同じ事実を見られるようになることです。2つ目は、あとで「直した」と言うための物差しができることです。物差しなしで直したものは、直ったかどうかがわかりません。
次が仮説ですが、ここには規則が1つあります。間違っていたときに何が見えるかが決まっていなければ、仮説ではありません。「ネットワークの問題のようだ」は、どんな結果が出ても生き残るので、候補を減らせません。死にうる文だけが調査範囲を絞ります。そして除外したものを書いておかないと、30分後に自分がすでに消した候補を、もう一度確認していることになります。
ステップ
/root/hypothesisディレクトリを作成してください。/opt/app/flaky.pyを実行して、127.0.0.1:8001で応答するようにしてください。/quoteを連続20回呼び出し、200以外の応答の数を/root/hypothesis/baseline.txtに書いてください。- その失敗率をパーセントの整数で
/root/hypothesis/rate.txtに書いてください。記号なしで、数字だけです。 - 失敗した応答の本文の文字列を
/root/hypothesis/reason.txtに保存してください。 /root/hypothesis/h1.mdに、가설:、맞다면:、틀리면:の3行が入った仮説を書いてください(それぞれ韓国語で「仮説」「正しければ」「誤りなら」を意味する語です)。/root/hypothesis/ruled_out.txtに除外したレイヤーを書いてください。各行はnetwork、auth、app、dataのどれかで始まり、根拠を添えます。最低2行です。/quoteを連続40回呼び出して、失敗の回数を/root/hypothesis/confirm.txtに書いてください。
参考
python3 /opt/app/flaky.py &で起動し、curl -s http://127.0.0.1:8001/healthで確認します。for i in $(seq 1 20); do curl -s -o /dev/null -w '%{http_code}\n' URL; done | sort | uniq -c- よくあるミス1: 20回を分けて呼び出し、その間に別のリクエストを混ぜてしまうことです。連続20回である必要があります。
- よくあるミス2: ステップ5でステータスコードだけを保存してしまうことです。必要なのは応答の本文です。
仮説の作業ディレクトリを作る
/root/hypothesisディレクトリを作成してください。
除外リストと仮説の文書を1か所に集めます。あとでレポートの半分になります。
見積もりAPIを起動する
/opt/app/flaky.pyを実行して、127.0.0.1:8001で応答するようにしてください。
/opt/app/flaky.pyをpython3で実行すると、127.0.0.1:8001で待ち受けます。シェルを占有しないように、後ろに&を付けてください。
20回呼び出して失敗の回数を数える
/quoteを連続20回呼び出し、200以外の応答の数を/root/hypothesis/baseline.txtに書いてください。
curlの-o /dev/null -w '%{http_code}'の組み合わせなら、ステータスコードだけが出ます。seqで20回繰り返し、200以外のものを数えてください。
失敗率をパーセントで書く
その失敗率をパーセントの整数で/root/hypothesis/rate.txtに書いてください。記号なしで、数字だけです。
形容詞を数字に変えるステップです。20回中何回かを、パーセントの整数に直して、記号なしで書いてください。
失敗した応答の本文を確保する
失敗した応答の本文の文字列を/root/hypothesis/reason.txtに保存してください。
ステータスコードだけを見ても、なぜ失敗したのかはわかりません。-o /dev/nullを外して、応答の本文をそのまま受け取ってみてください。
反証可能な仮説を書く
/root/hypothesis/h1.mdに、가설:、맞다면:、틀리면:の3行が入った仮説を書いてください(それぞれ韓国語で「仮説」「正しければ」「誤りなら」を意味する語です)。
仮説、正しければ、誤りならの3行が必要です。3行目が書けないなら、それはまだ仮説ではなく感覚です。
除外したレイヤーを記録する
/root/hypothesis/ruled_out.txtに除外したレイヤーを書いてください。各行はnetwork、auth、app、dataのどれかで始まり、根拠を添えます。最低2行です。
network / auth / app / dataのうち、これまでに確認して消したレイヤーを最低2つ、それぞれなぜ消したかとともに書いてください。
同じ物差しで測り直す
/quoteを連続40回呼び出して、失敗の回数を/root/hypothesis/confirm.txtに書いてください。
ランダムなのか規則的なのかは、標本を増やすと見分けがつきます。40回で測り直して、比率が保たれているかを確認してください。