Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

テストの運用について #m3dev

  • Als Erste(r) kommentieren

テストの運用について #m3dev

  1. 1. テストの運用について #m3dev Kazuhiro Sera @seratch
  2. 2. テストも運用が本番 ・新しくつくるのはいいけど、つくっただけじゃダメで、その後の安定運用 と継続的な改善が本番というのはご存知の通り。 ・ということでインフラチームに感謝しましょう(拍手) ・テストがないところに最初のテストを書くのはだいたいつらいけど、頑 張って書いた。もっと評価されていい。 ・でも、とりあえず書いただけじゃダメで運用が(ry ・テストは運用が問題になってからが本番だったのだ・・!
  3. 3. テストの運用でありがちな問題 ・Jenkins の job が数日、数週間、数ヶ月壊れたまま放置されている。 ・テスト運用がタスクとして想定されておらず、特定の誰かのモチベーショ ン依存になってしまっている。Jenkins 大臣を役割として明確にする。 ・失敗したテストを直そうとしたが、何を何のために assertしているか す ぎて、どう直すべきなのかがわからない。テストを書くスキルの問題。 ・既存のテストに過度な環境依存や実装への密結合があって、前提が覆った 瞬間、大量のテストがゴミになった。テストを書くスキルの問題。 ・テストの実行がだんだん遅くなってきた。
  4. 4. なぜあなたのテストが遅いのか ・例えば RSpec のテストコード実行はそもそもが遅い。Spork とか Spring とかで頑張っている人? ・モックで覆い隠された世界のテストは基本的に実行速い。でも本当にそれ だけで十分なの?問題。結合レベルのテストも自動化したいというニー ズ。 ・embedded なサーバを起動して HTTP リクエストを投げる、重いクエリを 実行する、大量に処理する、手順の複雑なエラーパターン再現、アレな データ構造で fixture なんて・・など Real World Testing は時間がかかる要 因が多い ・0.5 sec * 600 = 300 sec、0.3 sec * 1,000 = 300 sec と考えれば、件数が増 えてくれば程度の差はあれど問題になっていくことが分かる。
  5. 5. 一番簡単な方法を教えよう ・ある程度の数に分割して実行すればおk。 ・カバレッジをとる job だけは全部流す、でも commit/push を poll して毎回 やる必要はない。せいぜい一日数回でおk。 ・Maven: mvn ‘-Dtest=com.example.service’ test ・RSpec: bundle exec rspec spec/models/ ・全部で 5 分かかっているものを 3 つに分ければ、それぞれ 2 分以下で終わ るよね、Happy!
  6. 6. Jenkins 設定デモ 実際に Jenkins ジョブを いじって改善してみましょう
  7. 7. このへんのステージにいる?
  8. 8. なぜテストを書くのか ・クラス、メソッドのユーザビリティテスト ・動作確認用ツール ・ある程度、安心して(納得して)リリースするために ・似たような失敗、エンバグを繰り返さないために ・QA の代わりにならなくてもいい、補完関係で ・他には?
  9. 9. Q&A ・テストも運用が本番 ・テストの運用でありがちな問題 ・なぜあなたのテストが遅いのか ・一番簡単な方法を教えよう ・Jenkins 設定デモ ・このへんのステージのエンジニア ・なぜテストを書くのか

×