Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

初めての自動テスト meets Jenkins

1,749 views

Published on

第11回Jenkins勉強会(https://www.meetup.com/ja-JP/Tokyo-Jenkins-Area-Meetup/events/243902903/)の発表資料です。

Published in: Engineering
  • Be the first to comment

初めての自動テスト meets Jenkins

  1. 1. 『初めての自動テスト』 meets Jenkins 2017/11/08 第11回Jenkins勉強会 @nkns165 玉川紘子
  2. 2. 2 自己紹介・ 翻訳に至ったきっかけ
  3. 3. 自己紹介  玉川紘子(@nkns165)  ソフトウェアテストエンジニア@SHIFT  主に自動化・CIを担当しています  コミュニティ活動もしています テスト自動化研究会
  4. 4. 自己紹介  自動テスト関連の技術書の翻訳お手伝いとかもしています 付録執筆 監訳 付録執筆 翻訳
  5. 5. 「初めての自動テスト」はこんな本  基本的には初心者向けにWebの自動テス トについて解説した書籍  マネージャーには…  テスターには…  開発者には… 自動テストの分類、共通言語、 適切な配分と役割分担の考え方 自動テストに必要なWebの仕組みの知識、 プログラミングの知識 テストファーストなど、自動テスト に関わる新しい習慣・知識
  6. 6. なぜ「初めての自動テスト」を担当したか  玉川竜司さんからのご紹介で、訳してみた いけど手の回っていないものの中から1冊と いう感じで提案  自動テストは経験豊富&翻訳は経験ほとん どなしという自分の状態にぴったりの対象  最初は著者名をあまりよく見ていませんで した
  7. 7. 7 各章の内容を 少しずつ紹介
  8. 8. 目次 1. テストのピラミッド 2. ユーザーインターフェイ ステストに触れる 3. レガシーシステムにUIテ ストを追加する 4. 統合テストで点と点を結 ぶ 5. RESTfulなWebサービス の統合テスト 6. ユニットテストで基礎を 固める 7. JavaScriptを使ったブラ ウザ上のユニットテスト 8. ピラミッドを登る 9. プログラミング初級講座 10.テストを整理する 11.効果的なモックの活用 12.テストファースト 残念ながら、 CIに関する章は無し
  9. 9. 前半は「テストのピラミッド」のお話  自動テストを3つの層に分け、それぞれ適切な量を保って開発 していきましょうという考え方  各層のテストの特徴・具体的な書き方・どんな使い分けをすれ ば良いかを”少しずつ”解説  詳細なチュートリアルではない ユニットテスト 統合テスト UIテスト 手動テスト どうしても欠かせない 重要ケースはEndToEndで。 ただし、不安定なので 数は絞る 高速実行可能・ 安定している 単体テストを重視
  10. 10. 第一層:UIテスト  最終的なチェックには絶対に必要  ただし、使い方を間違えると重荷になる  書籍の中ではCapybaraでテストを書く方法、HTMLの ソースを解析してCSSで場所を指定する方法などを紹介
  11. 11. 第二層:統合テスト(APIテスト)  ピラミッドの定義上は「Integration test(統合テスト)」として紹 介しているが、Webの世界ではAPIテストと同義と考えてOK  ある程度高速・かつUI以外については全体を通して見ることができる ので有用  作成も簡単なのでテスターにも向いている  書籍では、そもそものHTTPの仕組みに始まり具体的なリクエストの 送り方・レスポンスのチェックのしかたにも言及
  12. 12. 第三層:ユニットテスト  バックエンドのロジックを網羅的にチェックするテスト  高速で大量に実行しやすい  基本的に開発者が書くもの  TDD(テスト駆動開発)と組み合わせることで、綺麗な ソースコードで仕様も明確にして書いていくことができる
  13. 13. 適切な役割分担と協調が大事 ユニットテスト 統合テスト UIテスト 手動テスト テスター 開発者 基盤作り で協力 お互いのテストしている内容 を知り、適切な位置へ動かす ためのコミュニケーションも 必須
  14. 14. 後半はテクニカルな話題が中心 9章 プログラミング初級講座 10章 テストを整理する 11章 効果的なモックの活用 12章 テストファースト テスター 向け 開発者 向け
  15. 15. 10章 「テストを整理する」  テストスイートは生モノ  必要に応じてどんどん追加・変更・削除が行われる  追加しやすい構成・追加するときの方針が決まっていると 楽  テストの分離:1つのテストケースでは対象を1つにする  コンテキストの明確化:UIテストなら画面、APIテストならエンド ポイントごとというように分類の軸を決める  コンテキストの階層化:類似のコンテキストをまとめて階層化する  そもそもUI/統合/ユニットの定義も整理の一環
  16. 16. 「協調」「役割」「整理」を重視  意外に文化的な話の比重も大きい  役割分担 ≠ 壁を作ること ユニットテスト 統合テスト UIテスト 手動テスト
  17. 17. スペシャリストを置くのも効果的  Spotifyでは明確なロールを置いて活動を促進  専任のテスト自動化エンジニア  専任の生産性向上チーム Agile 2017 : 7 Sources of Waste (Jonathan Rasmusson) HELP
  18. 18. スペシャリスト=人とは限らない Continuous Integration HELP
  19. 19. ピラミッドの一要素としてのCI  迅速なフィードバック  Slack/メールによる通知、アイコンで分かる健康状態  開発↔QA間のコミュニケーションを助ける  URLを共有するだけでテスト結果がすぐに分かる  テストの整理を助ける  ジョブの分割・フォルダ構造に直結
  20. 20. ピラミッドの一要素としてのCI ユニットテスト 統合テスト UIテスト 手動テスト テスター 開発者
  21. 21. 21 翻訳こぼれ話
  22. 22. 翻訳中に苦労した点  度々出てくる感動詞の訳し方  初学者に理解してもらうための工夫 vs きちんとした翻訳  訳注を入れていいかどうかの悩み
  23. 23. 最も悩んだ&長い訳注(7章)  画面で起きたバグに対して、テストコードを書きながら原因を追求していく 「バグハント」の流れ  だったはずが、結論は「テストコードのバグ」  Jonathan本人とメールのやり取りをし、最終的には「確かに何か変だね」と 分かってもらえた  結果、5行に渡る訳注で補足することに  Jonathanはとてもいい人でした
  24. 24. 24 まとめ
  25. 25. まとめ  自動テストを始めるときに大切なこと  整理:UI/統合/ユニットテストの定義を理解し適切に使 い分ける  役割分担:開発/QAで得意分野を担当する  協調:お互いにコミュニケーションを取り、無駄をなく す  言うまでもなく  CIあっての自動テストです
  26. 26. ご清聴ありがとう ございました

×