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.

【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015

17,783 views

Published on

システムテスト自動化カンファレンス2015での発表資料です

Published in: Engineering
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015

  1. 1. 楽天の品質改善を加速する 継続的システムテストパターン Dec. 13, 2015 Kotaro Ogino, Kikugawa Mariko Development Support Group Service Support Section Group Core Service Department
  2. 2. 2 Who am I? 役割 責任 資格とか発表とか Product & Tech Lead 社内自動化プラットフォーム構築PJの 要求管理とアーキテクチャー設計 Senior Test Engineer テストリーダーへのアドバイスやレビュー • JaSST’ Tokyo 2014 • SQiP 2014 Acting QA Manager テスト戦略の策定 テストチームの立ち上げ
  3. 3. 3 Blog アジャイルテスト 検索 ウォータースクラムフォール 検索
  4. 4. 4 本日の発表:継続的システムテスト3部作
  5. 5. 5 本日の発表:継続的システムテスト1・2作目 単一のプロジェクトでのシステムテスト自動化
  6. 6. 6 本日の発表:継続的システムテスト3部作
  7. 7. 7 本日の発表:継続的システムテスト3部作 ・20サービスの共通自動化プラットフォームの構 築 ・異なる文化ソフトウェアテスト ・異なるコンテキストでの品質
  8. 8. 8 本日の発表:継続的システムテスト3部作 ・20サービスの共通自動化プラットフォームの構 築 ・異なる文化ソフトウェアテスト ・異なるコンテキストでの品質 継続的システムテストの一般化
  9. 9. 9 本日お持ち帰りいただきたいこと: 継続的システムテスト
  10. 10. 10 本日お持ち帰りいただきたいこと: 継続的システムテスト 自動テスト (Product)
  11. 11. 11 本日お持ち帰りいただきたいこと: 継続的システムテスト 自動テスト (Product) Selenium CucumberJenkins
  12. 12. 12 本日お持ち帰りいただきたいこと: 継続的システムテスト 自動テスト (Product) Selenium CucumberJenkins
  13. 13. 13 本日お持ち帰りいただきたいこと: 継続的システムテスト 自動テスト (Product) 生産性 -Speed -Cost
  14. 14. 14 本日お持ち帰りいただきたいこと: 継続的システムテスト 継続的システムテスト 自動テスト (Product) 生産性 -Speed -Cost
  15. 15. 15 本日お持ち帰りいただきたいこと: 継続的システムテスト 継続的システムテスト 自動テスト (Product) 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability
  16. 16. 16 本日お持ち帰りいただきたいこと: 継続的システムテスト 継続的システムテスト 継続的テスト (Process) 自動テスト (Product) アジャイルテスター (People) 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability
  17. 17. 17 本日お持ち帰りいただきたいこと: 継続的システムテスト 継続的システムテスト 継続的テスト (Process) 自動テスト (Product) アジャイルテスター (People) 永続的開発 Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability CI 継続的フィードバック アジャイルテスト 4象限 スキルセットTestable Architecture
  18. 18. 18 本日お持ち帰りいただきたいこと: 継続的システムテスト 継続的システムテスト 継続的テスト (Process) 自動テスト (Product) アジャイルテスター (People) 永続的開発 Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability CI 継続的フィードバック アジャイルテスト 4象限 スキルセットTestable Architecture 解決したい課題 (品質) 解決方法 (コンセプト) 実装
  19. 19. 19 本日お持ち帰りいただきたいこと 継続的システムテストの ・解決したい課題(品質) ・解決方法(コンセプト) ・実装 についての ・楽天の取り組み ・そこから得た知見
  20. 20. 20 継続的システムテスト 継続的システムテスト 継続的テスト (Process) 自動テスト (Product) アジャイルテスター (People) 永続的開発 Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability CI 継続的フィードバック アジャイルテスト 4象限 スキルセットTestability Architecture
  21. 21. 21 永続性と継続的テスト 継続的システムテスト 継続的テスト (Process) 自動テスト (Product) アジャイルテスター (People) 永続的開発 Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability CI 継続的フィードバック アジャイルテスト 4象限 スキルセットTestability Architecture
  22. 22. 22 開発の永続性と継続的テスト ・ 開発の永続性 “Development and Deploy in Facebook”, Facebook, 2013. https://research.facebook.com/publications/247272798756913/development-and-deployment-at-facebook ・ 継続的テスト “Continuous Testing: The missing link in the Continuous Delivery”, BlazeMeter, 2015. https://blazemeter.com/blog/continuous-testing-missing-link-continuous-delivery-process
  23. 23. 23 開発の永続性と継続的テスト ・ 開発の永続性 ・ 継続的テスト SCM 時間 サービスの 成長度 ソースコード ソースコード ソースコード ソースコード ソースコード ソースコード ソースコード リリース リリース リリース リリース リリース リリース SCM テストケース テストケース テストケース テストケース テストケース テストケース テストケース テスト テスト テスト テスト テスト テスト
  24. 24. 24 開発の永続性と継続的テスト “継続的システムテストについての理解を理解を深める ための開発とバグのメトリクスの分析”,SQiP 2014. SQiP 2014で、継続的テストにより 開発の永続性を担保しているプロジェクトの分析 について経験発表
  25. 25. 25 永続性と継続的テスト 継続的システムテスト 継続的テスト (Process) 自動テスト (Product) アジャイルテスター (People) 永続的開発 Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability CI 継続的フィードバック アジャイルテスト 4象限 スキルセットTestability Architecture
  26. 26. 26 継続的テスト 継続的システムテスト 継続的テスト (Process) 自動テスト (Product) アジャイルテスター (People) 永続的開発 Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability CI 継続的フィードバック アジャイルテスト 4象限 スキルセットTestable Architecture
  27. 27. 27 継続的テストの実装 継続的テスト (Process) 永続的開発 Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability CI 継続的 フィードバック
  28. 28. 28 継続的テストの実装 継続的テスト (Process) Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability CI 継続的 フィードバック
  29. 29. 29 永続的開発 Problem ・サービスやプロダクトの永続的な改善が困難 Cause ・要求が適切に優先順位付けされていない ・要求と開発要件のトレーサビリティーがない Solution ・バックログの導入 ・単一のソースコードレポジトリ ・バージョン管理
  30. 30. 30 永続的開発 要求 このまま開発するの は 難しい
  31. 31. 31 永続的開発 要求 ユーザー ストーリー ユーザー ストーリー ユーザー ストーリー ユーザー ストーリー ソース コード ソース コード ソース コード ソース コード テスト テスト テスト テスト 後から変更しやすいように トレーサビリティーを確保
  32. 32. 32 永続的開発 要求 ユーザー ストーリー ユーザー ストーリー ユーザー ストーリー ユーザー ストーリー バックログ ソース コード SCM ソース コード ソース コード ソース コード テスト テスト レポジトリ テスト テスト テスト バージョン管理
  33. 33. 33 継続的テストの実装 継続的テスト (Process) Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability CI 継続的 フィードバック
  34. 34. 34 継続的テストの実装 継続的テスト (Process) Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability
  35. 35. 35 CI・継続的フィードバック Problem ・継続的な品質のフィードバックが困難 Cause ・継続的にソースコードがコミットされていない ・テストの実行時間が長い ・品質可視化のコストが高い Solution ・CIの導入 ・テスト自動実行 ・品質可視化を自動化
  36. 36. 36 CI・継続的フィードバックが開発を強力にサポート “継続的システムテストについての理解を理解を深める ための開発とバグのメトリクスの分析”,SQiP 2014. SQiP 2014での経験発表 開発者がコミット直後にバグに気づき修正
  37. 37. 37 CI・継続的フィードバック:Jenkinsによる自動テスト実行 テストをJenkinsで毎日自動実行 毎日実行するので、いつ失敗したか一目瞭然
  38. 38. 38 継続的フィードバック:ツールを用いたレポートの自動化 機能テストの結果 パフォーマンステストの結果 SauceLabsによる ブラウザカバレッジの可視化 Screen Cast オンプレミス環境用の Jenkins Plugin レポートも自動で生成されるので品質が簡単にわかる
  39. 39. 39 継続的フィードバック:ツールを用いたレポートの自動化 静的解析とカバレッジ レポートの要約
  40. 40. 40 継続的フィードバック:ツールを用いたレポートの自動化 ELKを使って各ツールのレポートを要約 プロセスメトリクスもレポートに
  41. 41. 41 継続的テストの実装 継続的テスト (Process) Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability
  42. 42. 42 継続的テストの実装 継続的テスト (Process) CI in Test 永続性 -Evoluvability -Maintainability
  43. 43. 43 Infrastructure as Code Problem ・頻繁なデプロイ・リリースが出来ていない Cause ・手動でのインフラ構築 ・秘伝の手順書 ・インフラの構築手順がテストされていない Solution ・インフラ構築の自動化 ・インフラの設定をSCMで管理 ・インフラの構築手順もテスト
  44. 44. 44 Infrastructure as Code http://blogs.technet.com/b/livedevopsinj apan/archive/2015/10/22/devops-1- devops.aspx
  45. 45. 45 継続的テストの実装 継続的テスト (Process) CI in Test 永続性 -Evoluvability -Maintainability
  46. 46. 46 継続的テストの実装 継続的テスト (Process) 永続性 -Evoluvability -Maintainability
  47. 47. 47 CI in Test Problem ・頻繁なテスト実行が出来ていない Cause ・テストの継続的な変更と信頼性に問題 ・問題の切り分けに時間がかかる ・テスト設計の変更に時間がかかる Solution ・テストのバージョン管理の導入 ・開発・テスト・本番環境の構築手順の共通化 ・テスト設計のRefactorabilityの改善
  48. 48. 48 CI in Test:テストのバージョン管理の導入 自動テストはソースコードなのでもちろんGitで管理 手動テストはTestRail
  49. 49. 49 CI in Test:開発・テスト・本番環境の構築手順の共通化 “システムテストの自動化による大規模分散検索プ ラットフォームの開発工程改善”, JaSST’Tokyo 2014 ・テスト開発環境を提供 ・テストも、テストしてからコミットする
  50. 50. 50 CI in Test:テストのRefactorabilityの改善 手順 ケース1 ケース2 ユーザAが登録されていない事を確認 ◯ ◯ 登録ページ(register.xxx.com)を開く ◯ ◯ ユーザ名に”A”を入力 ◯ ◯ パスワードに”a”を入力 ◯ ◯ メールアドレスを”a”を入力 ◯ メールアドレスにa@rakuten.comを入力 ◯ 登録ボタンをクリック ◯ ◯ 登録できましたと表示される ◯ 不正なメールアドレスと表示される ◯ ユーザAを削除 ◯ 操作手順 システムの 静的な仕様・設計 メールアドレスの バリデーションは 一般的なテスト観点 しかし、再利用が難しい テストと設計がリファクタリングしにくい例事前準備 期待値 テスト条件
  51. 51. 51 CI in Test:Cucumber + PageObject design Feature file: Behaviorを記述 Feature: Validation for registration Page Background: Given the user A is not registered in the system and the end user opens RegistrationPage when the user gives <userName> and <password> <mail> and submit the form then the message shown in the page is <message> Examples: | userName | password | mail | message | | “A” | “a” | “a.rakuten.com” | “registered” | | “A“ | “a” | “a” | “invalid mail address” | Public class RegstrationPage extends WebPageOjectBase { final static public String NAME = “RegistrationPage” public RegistrationPage() { super(NAME, “registration.xxx.com”); addInputElement(“username”,”username”); …. } PageObjectBase テスト観点 file PageObject file: 静的な仕様を記述 *APIやNodeも同じ仕組みで管理 操作手順 システムの 静的な仕様・設計 テスト観点 事前準備 期待値 テスト条件
  52. 52. 52 継続的テストの実装まとめ 継続的テスト (Process) 永続性 -Evoluvability -Maintainability
  53. 53. 53 継続的システムテスト 継続的システムテスト 継続的テスト (Process) 自動テスト (Product) アジャイルテスター (People) 永続的開発 Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability CI 継続的フィードバック アジャイルテスト 4象限 スキルセットTestable Architecture
  54. 54. 54 生産性と自動テスト 継続的システムテスト 継続的テスト (Process) 自動テスト (Product) アジャイルテスター (People) 永続的開発 Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability CI 継続的フィードバック アジャイルテスト 4象限 スキルセットTestable Architecture
  55. 55. 55 生産性と自動テスト 継続的システムテスト 継続的テスト (Process) 自動テスト (Product) アジャイルテスター (People) 永続的開発 Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability CI 継続的フィードバック アジャイルテスト 4象限 スキルセットTestable Architecture
  56. 56. 56 生産性と自動テスト ・ 自動テストによる生産性改善 ・テスト実行の効率化(費用対効果) ・テスト実行頻度の増加 (CI in Test) ・レポート(CI・継続的フィードバック)の効率化
  57. 57. 57 生産性と自動テスト:貯金をする事を考えてみる …1日 目 2日目 3日目 N-2日目 N-1日目 N日目 プロジェクト: N日でコインを 100枚貯める オプション 1https://pixabay.com/en/piggy-bank-savings- money-bank-coin-621068/ 最後にしか フィードバック が得られない 毎日フィードバック が得られる https://pixabay.com/en/atm- machine-symbol-icon-blue-310121/
  58. 58. 58 生産性と自動テスト:貯金をする事を考えてみる 1回こっきりのテストのイメージ 貯金箱を壊して枚数を確認する →足らなかったらわざわざ貯金箱を 買ってきていれなおす必要w コインを入れたら、 現在の貯金額を教えてくれる → 今日足らなさそうだったら、 ちょっと多めに入れてみる 自動テストにより継続的にテスト実行するイメージ 毎日品質についてフィードバックするツールの一つ
  59. 59. 59 自動テストが生産性を向上する例 “システムテスト自動化による大規模検索 プラットフォームの開発工程改善”, JaSST’Tokyo 2014 バグを作ってからすぐに修正可能なので バグの修正日数が早くなる
  60. 60. 60 生産性と自動テスト 継続的システムテスト 継続的テスト (Process) 自動テスト (Product) アジャイルテスター (People) 永続的開発 Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability CI 継続的フィードバック アジャイルテスト 4象限 スキルセットTestable Architecture
  61. 61. 61 自動テストの実装 自動テスト (Product) 生産性 -Speed -Cost Testable Architecture
  62. 62. 62 自動テストの実装 自動テスト (Product) 生産性 -Speed -Cost
  63. 63. 63 Testable Architecture Problem ・テストの自動化カバレッジが低い Cause ・テストの確認項目がシステムから取得不可 ・外部サービスとの結合テストが困難 ・テストデータの作成が困難 Solution ・プロダクトと自動テストの一体化した設計 -テストモード -Mock Internet -本番データからのテストデータのサンプリング
  64. 64. 64 Testable Architecture: GTAC 2015で感じたこと https://developers.google.com/google-test-automation-conference/2015/ ・プロダクトと自動テストの一体化した設計 -テストモード -Mock Internet -本番データからのテストデータのサンプリング
  65. 65. 65 自動テストの実装まとめ 自動テスト (Product) 生産性 -Speed -Cost
  66. 66. 66 生産性と自動テスト 継続的システムテスト 継続的テスト (Process) 自動テスト (Product) アジャイルテスター (People) 永続的開発 Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability CI 継続的フィードバック アジャイルテスト 4象限 スキルセットTestable Architecture
  67. 67. 67 生産性と自動テスト ・ 自動テストは生産性を向上 ・ しかし、自動テストのみでは 信頼性や効率性などのテスト自体の品質は 担保されない ・テストの品質の向上 ・ アジャイルテスター
  68. 68. 68 生産性と自動テスト 継続的システムテスト 継続的テスト (Process) 自動テスト (Product) アジャイルテスター (People) 永続的開発 Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability CI 継続的フィードバック アジャイルテスト 4象限 スキルセットTestable Architecture
  69. 69. 69 アジャイルテスターの実装 アジャイルテスター (People) 信頼性 -Effectiveness -Availability アジャイルテスト 4象限 スキルセット
  70. 70. 70 アジャイルテスターの実装 アジャイルテスター (People) 信頼性 -Effectiveness -Availability スキルセット
  71. 71. 71 アジャイルテスト4象限 Problem ・バグの見落とし、遅すぎる発見 Cause ・無駄なテスト、重複、遅すぎるテスト実行 ・~ilityテストの見落とし Solution ・「誰の?」「どんな?」テストの価値を整理 ・(システムテストのフォーカスを決める) ・品質をテストする
  72. 72. 72 アジャイルテスト4象限: 「誰の?」「どんな?」テストの価値を整理 http://lisacrispin.com/downloads/AdpTestPlanning.pdf
  73. 73. 73 アジャイルテスト4象限: 「誰の?」「どんな?」テストの価値を整理 http://lisacrispin.com/downloads/AdpTestPlanning.pdf 開発の 価値 ユーザーの 価値
  74. 74. 74 アジャイルテスト4象限: テストの価値の受け取り手(楽天の場合) Dev Ops Test Automation Team Business Values Business Requirements https://pixabay.com/en/businessmen-men-people-office-42691/
  75. 75. 75 アジャイルテスト4象限: テストの価値の受け取り手(楽天の場合)
  76. 76. 76 アジャイルテスト4象限: テストの価値の受け取り手(楽天の場合) http://lisacrispin.com/downloads/AdpTestPlanning.pdf 開発の 価値 ユーザーの 価値 運用者の 価値
  77. 77. 77 アジャイルテスト4象限: システムテスト(レベル/フェーズ)のフォーカスを決める 継続的システムテストなので
  78. 78. 78 アジャイルテスト4象限: システムテスト(レベル/フェーズ)のフォーカスを決める Commit Stage ・開発者向けの機能テスト Capacity Stage ・運用者向けの性能テスト Pre-Production Stage ・ユーザ向けのβテスト “継続的デリバリー” ・テスト戦略 ・デプロイメントパイプライン *注 説明のために単純化してます デプロイメントパイプライン システムテスト? システムテスト? システムテスト?
  79. 79. 79 アジャイルテスト4象限:システムテストのフォーカスを決める システムテスト テストレベル的には、、、 システム全体のテスト テストフェーズ的には、、、 最後のフェーズのテスト システム全体の最終品質がReadyか?
  80. 80. 80 アジャイルテスト4象限:楽天での品質のテスト ・”Software System Architecture”. Rozanski Woods. http://www.viewpoints-and-perspectives.info/home/perspectives/ ・“System and Software Quality Requirements and Evaluation” http://www.iso.org/iso/catalogue_detail.htm?csnumber=35733 Quality in User Story format Quality Analysis
  81. 81. 81 アジャイルテスト4象限:例)オペラビリティテスト 運用者にとっての価値: 運用を安心して実施できること →運用スクリプトもテストする
  82. 82. 82 ちなみにデプロイメントパイプライン
  83. 83. 83 アジャイルテスターの実装 アジャイルテスター (People) 信頼性 -Effectiveness -Availability スキルセット
  84. 84. 84 アジャイルテスターの実装 アジャイルテスター (People) 信頼性 -Effectiveness -Availability
  85. 85. 85 スキルセット Problem ・テストができる人、やりたい人が少ない Cause ・テスト自動化エンジニアは新しい ・トレーニングなどの不足 Solution ・キャリアパスの明確化 ・スキルセットの定義 ・新人研修
  86. 86. 86 スキルセット:キャリアパスの明確化 テスト”だけ”詳しいエンジニアではなく 自動化にも、リリースにも詳しい エンジニアを育てる スキルセットの方向性
  87. 87. 87 スキルセット:ちなみに 最近うちのチームメンバーの 一番人気はAutomation Architect Release Automation をやってから Test Automationをやりたいという エンジニアが多かった Chefはいいぞ!とみんな感じている
  88. 88. 88 テスト自動化エンジニアはProcess, Product, Peopleに精通 継続的システムテスト 継続的テスト (Process) 自動テスト (Product) アジャイルテスター (People) 永続的開発 Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability CI 継続的フィードバック アジャイルテスト 4象限 スキルセットTestable Architecture
  89. 89. 89 スキルセット:新人研修
  90. 90. 90 アジャイルテスターの実装 アジャイルテスター (People) 信頼性 -Effectiveness -Availability
  91. 91. 91 まと め
  92. 92. 92 継続的システムテストパターン 継続的システムテスト 継続的テスト (Process) 自動テスト (Product) アジャイルテスター (People) 永続的開発 Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability CI 継続的フィードバック アジャイルテスト 4象限 スキルセットTestable Architecture
  93. 93. 93 継続的システムテストパターン 継続的システムテスト 継続的テスト (Process) 自動テスト (Product) アジャイルテスター (People) 永続的開発 Infrastructure as Code CI in Test 永続性 -Evoluvability -Maintainability 生産性 -Speed -Cost 信頼性 -Effectiveness -Availability CI 継続的フィードバック アジャイルテスト 4象限 スキルセットTestable Architecture 解決したい課題 (品質) 解決方法 (コンセプト) 実装
  94. 94. 94 Continuous System Test loves DevOps

×