Skip to content

Instantly share code, notes, and snippets.

@sunaot
Last active December 18, 2015 07:09
Show Gist options
  • Save sunaot/5744847 to your computer and use it in GitHub Desktop.
Save sunaot/5744847 to your computer and use it in GitHub Desktop.
  • スローテスト問題
    • なぜスロー?
      • DB アクセス、GUI からのテスト、etc
    • 対策は?
      • 並列実行
      • GC 止めたら速くなったYO!
      • setup に時間のかかるリソースを prefork するように
    • ほんとにそれ対策になってるの?
      • CI 管理者が今あるテストを前提に高速化をする話と明日書くコードが遅い話は混ぜちゃダメ
      • 明日書くコードは生まれながらに高速に書けばいい
    • TDD は開発を駆動する、リズムが、すばやいフィードバック ...
    • 実行に 2 秒もかかるテストは開発を駆動できない
    • 2 秒あったら TL をのぞきに行ってしまう
    • 「あなたの不安なところをテストする」
    • 不安なところは?
      • 条件分岐が多いところ
    • 高速なテストは?
      • IO がないテスト
      • IO がなければたとえ 10,000 回ループさせたって一瞬で終わる (たいていはね)
    • 最初から心配なところ、むずかしいところをテストしにくいものと混ぜないように設計する
    • 純粋関数のテスト
      • 副作用を持たない関数を書く
      • 参照透過性
        • "参照透過性(さんしょうとうかせい、英: Referential transparency)は、計算機言語の概念の一種で、文脈によらず式の値はその構成要素(例えば変数や関数)によってのみ定まるということを言う。具体的には変数の値は最初に定義した値と常に同じであり、関数は同じ変数を引数として与えられれば同じ値を返すということになる。"
        • via Wikipedia 参照透過性
    • 条件分岐を追い出すための工夫
      • 条件分岐のやくわり
    • モデルはどうするの?
      • fetch とロジックを分離する
      • 持ってくるだけのメソッドと持ってきてある前提でロジックを流すメソッド
      • SQL は最後の敵
      • たとえば SQL だけを検証する
      • ここでも再び「あなたの不安なところをテストする」
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment