ITSUKI.
技術741 文字2 分

Day 23|回帰テスト — 関数名より、利用者に届く結果を守る

#Codex#ソースコードリーディング#図解

この章しょうの答こたえ

バグの症状しょうじょうが再発さいはつしたら失敗しっぱいするテストを、適切てきせつな境界きょうかいに置おく。

「ある関数かんすうが呼よばれた」だけを確たしかめるテストは、コードの整理せいりで壊こわれやすくなります。待機たいき入力にゅうりょくの問題もんだいなら、その入力にゅうりょくが次つぎの処理しょりへ渡わたったかという結果けっかを捉とらえるほうが、守まもりたい意味いみが明確めいかくになります。

01|図でつかむ

図23|回帰テスト

同おなじテストが修正前しゅうせいまえに失敗しっぱいし、修正後しゅうせいごに通とおることを確たしかめる。

02|3つのポイントで理解する

1. テストの境界を決める

入力にゅうりょく欄らんの見た目みためを守まもりたいのか、Core へ送おくる操作そうさを守まもりたいのかを明確めいかくにします。キューの進行しんこうが問題もんだいなら、次つぎの要求ようきゅうが観察かんさつできる境界きょうかいを選えらびます。

2. Arrange を最小にする

必要ひつような待機たいき入力にゅうりょくや失敗しっぱい条件じょうけんだけを用意よういします。内部ないぶフィールドを大量たいりょうに直接ちょくせつ書き換かきかえると、現実げんじつの操作そうさではできない状態じょうたいを作つくる危険きけんが増ふえます。

3. 結果と副作用を検証する

期待きたいする入力にゅうりょくが送おくられたことに加くわえ、二重にじゅう送信そうしんや順序じゅんじょの崩くずれがないかを確認かくにんします。無関係むかんけいな描画びょうが文字列もじれつに依存いぞんしすぎないよう、守まもる契約けいやくを絞しぼります。

03|ソースで確かめる

以下いかの検索けんさくは Codex リポジトリのルートで実行じっこうします。最初さいしょに対象たいしょう commit を記録きろくし、検索結果けんさくけっかから定義ていぎと呼び出よびだし元もとを一ひとつずつ開ひらいてください。

git rev-parse --short HEAD
rg -n "backtrack_branch_failure|next_user_turn_op" codex-rs

読よむ入口いりぐち: codex-rs/tui/src/app_backtrack.rs 。リンク先さきは照合しょうごうに使つかった固定こてい commit のファイルです。手元てもとの版はんと異ことなる場合ばあいは、上うえの検索語けんさくごから探さがし直なおします。

小さく試す

原稿げんこうの backtrack の例れいを、準備じゅんび・操作そうさ・期待きたい結果けっかの三文さんぶんへ書き換かきかえます。テスト名めいが現在げんざい存在そんざいするかも実行前じっこうまえに検索けんさくします。

04|30秒で復習

  • 関数かんすうの呼び方よびかたより観察かんさつ可能かのうな結果けっかを守まもる。
  • 準備じゅんびする状態じょうたいを最小さいしょうにする。
  • RED と GREEN が同おなじ問題もんだいを示しめすか確認かくにんする。

全ぜん30章しょうの目次もくじへ