94
楽楽楽楽楽楽楽楽楽楽楽楽 楽楽楽楽楽楽楽楽楽楽楽楽楽楽 Dec. 13, 2015 Kotaro Ogino, Kikugawa Mariko Development Support Group Service Support Section Group Core Service Department

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

Embed Size (px)

Citation preview

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

楽天の品質改善を加速する継続的システムテストパターンDec. 13, 2015Kotaro Ogino, Kikugawa MarikoDevelopment Support GroupService Support SectionGroup Core Service Department

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

2

Who am I?

役割 責任 資格とか発表とか

Product & Tech Lead 社内自動化プラットフォーム構築 PJの要求管理とアーキテクチャー設計

Senior Test Engineer テストリーダーへのアドバイスやレビュー

• JaSST’ Tokyo 2014

• SQiP 2014

Acting QA Manager テスト戦略の策定テストチームの立ち上げ

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

3

Blog

アジャイルテスト

検索

ウォータースクラムフォール

検索

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

4

本日の発表:継続的システムテスト3部作

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

5

本日の発表:継続的システムテスト 1 ・ 2 作目

単一のプロジェクトでのシステムテスト自動化

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

6

本日の発表:継続的システムテスト3部作

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

7

本日の発表:継続的システムテスト3部作

・ 20 サービスの共通自動化プラットフォームの構築・異なる文化ソフトウェアテスト・異なるコンテキストでの品質

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

8

本日の発表:継続的システムテスト3部作

・ 20 サービスの共通自動化プラットフォームの構築・異なる文化ソフトウェアテスト・異なるコンテキストでの品質

継続的システムテストの一般化

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

9

本日お持ち帰りいただきたいこと:継続的システムテスト

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

10

本日お持ち帰りいただきたいこと:継続的システムテスト

自動テスト( Product )

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

11

本日お持ち帰りいただきたいこと:継続的システムテスト

自動テスト( Product )

Selenium CucumberJenkins

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

12

本日お持ち帰りいただきたいこと:継続的システムテスト

自動テスト( Product )

Selenium CucumberJenkins

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

13

本日お持ち帰りいただきたいこと:継続的システムテスト

自動テスト( Product )

生産性-Speed-Cost

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

14

本日お持ち帰りいただきたいこと:継続的システムテスト

継続的システムテスト

自動テスト( Product )

生産性-Speed-Cost

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

15

本日お持ち帰りいただきたいこと:継続的システムテスト

継続的システムテスト

自動テスト( Product )

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

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

16

本日お持ち帰りいただきたいこと:継続的システムテスト

継続的システムテスト

継続的テスト(Process)

自動テスト( Product )

アジャイルテスター( People)

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

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

17

本日お持ち帰りいただきたいこと:継続的システムテスト

継続的システムテスト

継続的テスト(Process)

自動テスト( Product )

アジャイルテスター( People)

永続的開発Infrastructure

asCode

CI in Test

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

CI継続的フィードバック

アジャイルテスト4象限 スキルセットTestable

Architecture

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

18

本日お持ち帰りいただきたいこと:継続的システムテスト

継続的システムテスト

継続的テスト(Process)

自動テスト( Product )

アジャイルテスター( People)

永続的開発Infrastructure

asCode

CI in Test

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

CI継続的フィードバック

アジャイルテスト4象限 スキルセットTestable

Architecture

解決したい課題

( 品質 )

解決方法( コンセプト )

実装

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

19

本日お持ち帰りいただきたいこと

継続的システムテストの ・解決したい課題(品質)  ・解決方法(コンセプト) ・実装についての ・楽天の取り組み ・そこから得た知見

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

20

継続的システムテスト

継続的システムテスト

継続的テスト(Process)

自動テスト( Product )

アジャイルテスター( People)

永続的開発Infrastructure

asCode

CI in Test

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

CI継続的フィードバック

アジャイルテスト4象限 スキルセットTestability

Architecture

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

21

永続性と継続的テスト

継続的システムテスト

継続的テスト(Process)

自動テスト( Product )

アジャイルテスター( People)

永続的開発Infrastructure

asCode

CI in Test

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

CI継続的フィードバック

アジャイルテスト4象限 スキルセットTestability

Architecture

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

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

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

23

開発の永続性と継続的テスト

・ 開発の永続性

・ 継続的テスト

SCM

時間サービスの

成長度

ソースコード ソースコード ソースコード ソースコード ソースコード ソースコード ソースコード

リリース

リリース

リリース

リリース

リリース

リリース

SCM

テストケース テストケース テストケース テストケース テストケース テストケース テストケース

テスト テスト テスト テスト テスト テスト

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

24

開発の永続性と継続的テスト

“ 継続的システムテストについての理解を理解を深めるための開発とバグのメトリクスの分析” ,SQiP 2014.

SQiP 2014 で、継続的テストにより開発の永続性を担保しているプロジェクトの分析について経験発表

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

25

永続性と継続的テスト

継続的システムテスト

継続的テスト(Process)

自動テスト( Product )

アジャイルテスター( People)

永続的開発Infrastructure

asCode

CI in Test

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

CI継続的フィードバック

アジャイルテスト4象限 スキルセットTestability

Architecture

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

26

継続的テスト

継続的システムテスト

継続的テスト(Process)

自動テスト( Product )

アジャイルテスター( People)

永続的開発Infrastructure

asCode

CI in Test

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

CI継続的フィードバック

アジャイルテスト4象限 スキルセットTestable

Architecture

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

27

継続的テストの実装

継続的テスト(Process)

永続的開発Infrastructure

asCode

CI in Test

永続性-Evoluvability

-Maintainability

CI継続的

フィードバック

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

28

継続的テストの実装

継続的テスト(Process)

Infrastructureas

CodeCI in Test

永続性-Evoluvability

-Maintainability

CI継続的

フィードバック

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

29

永続的開発

Problem ・サービスやプロダクトの永続的な改善が困難

Cause ・要求が適切に優先順位付けされていない ・要求と開発要件のトレーサビリティーがない

Solution ・バックログの導入 ・単一のソースコードレポジトリ ・バージョン管理

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

30

永続的開発

要求 このまま開発するのは

難しい

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

31

永続的開発

要求

ユーザーストーリー

ユーザーストーリー

ユーザーストーリー

ユーザーストーリー

ソースコード

ソースコード

ソースコード

ソースコード

テスト

テスト

テスト

テスト

後から変更しやすいようにトレーサビリティーを確保

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

32

永続的開発

要求

ユーザーストーリー

ユーザーストーリー

ユーザーストーリー

ユーザーストーリー

バックログ

ソースコード

SCM

ソースコード

ソースコード

ソースコード

テスト

テストレポジトリ

テスト

テスト

テスト

バージョン管理

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

33

継続的テストの実装

継続的テスト(Process)

Infrastructureas

CodeCI in Test

永続性-Evoluvability

-Maintainability

CI継続的

フィードバック

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

34

継続的テストの実装

継続的テスト(Process)

Infrastructureas

CodeCI in Test

永続性-Evoluvability

-Maintainability

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

35

CI ・継続的フィードバック

Problem ・継続的な品質のフィードバックが困難

Cause ・継続的にソースコードがコミットされていない ・テストの実行時間が長い ・品質可視化のコストが高い

Solution ・ CI の導入 ・テスト自動実行 ・品質可視化を自動化

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

36

CI ・継続的フィードバックが開発を強力にサポート

“ 継続的システムテストについての理解を理解を深めるための開発とバグのメトリクスの分析” ,SQiP 2014.

SQiP 2014 での経験発表 開発者がコミット直後にバグに気づき修正

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

37

CI ・継続的フィードバック :Jenkins による自動テスト実行

テストを Jenkins で毎日自動実行

毎日実行するので、いつ失敗したか一目瞭然

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

38

継続的フィードバック : ツールを用いたレポートの自動化

機能テストの結果 パフォーマンステストの結果

SauceLabs によるブラウザカバレッジの可視化

Screen Castオンプレミス環境用のJenkins Plugin

レポートも自動で生成されるので品質が簡単にわかる

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

39

継続的フィードバック : ツールを用いたレポートの自動化

静的解析とカバレッジ

レポートの要約

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

40

継続的フィードバック : ツールを用いたレポートの自動化

ELK を使って各ツールのレポートを要約プロセスメトリクスもレポートに

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

41

継続的テストの実装

継続的テスト(Process)

Infrastructureas

CodeCI in Test

永続性-Evoluvability

-Maintainability

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

42

継続的テストの実装

継続的テスト(Process)

CI in Test

永続性-Evoluvability

-Maintainability

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

43

Infrastructure as Code

Problem ・頻繁なデプロイ・リリースが出来ていない

Cause ・手動でのインフラ構築 ・秘伝の手順書 ・インフラの構築手順がテストされていない

Solution ・インフラ構築の自動化 ・インフラの設定を SCM で管理 ・インフラの構築手順もテスト

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

44

Infrastructure as Code

http://blogs.technet.com/b/livedevopsinjapan/archive/2015/10/22/devops-1-devops.aspx

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

45

継続的テストの実装

継続的テスト(Process)

CI in Test

永続性-Evoluvability

-Maintainability

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

46

継続的テストの実装

継続的テスト(Process)

永続性-Evoluvability

-Maintainability

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

47

CI in Test

Problem ・頻繁なテスト実行が出来ていない

Cause ・テストの継続的な変更と信頼性に問題 ・問題の切り分けに時間がかかる ・テスト設計の変更に時間がかかる

Solution ・テストのバージョン管理の導入 ・開発・テスト・本番環境の構築手順の共通化 ・テスト設計の Refactorability の改善

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

48

CI in Test: テストのバージョン管理の導入

自動テストはソースコードなのでもちろん Git で管理

手動テストはTestRail

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

49

CI in Test: 開発・テスト・本番環境の構築手順の共通化

“ システムテストの自動化による大規模分散検索プラットフォームの開発工程改善” , JaSST’Tokyo 2014

・テスト開発環境を提供・テストも、テストしてからコミットする

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

50

CI in Test: テストの Refactorability の改善

手順 ケース1 ケース2

ユーザ A が登録されていない事を確認 ◯ ◯登録ページ( register.xxx.com )を開く ◯ ◯ユーザ名に” A” を入力 ◯ ◯パスワードに” a” を入力 ◯ ◯メールアドレスを” a” を入力 ◯メールアドレスに[email protected]を入力 ◯登録ボタンをクリック ◯ ◯登録できましたと表示される ◯不正なメールアドレスと表示される ◯ユーザ A を削除 ◯

操作手順

システムの静的な仕様・設計

メールアドレスのバリデーションは

一般的なテスト観点しかし、再利用が難しい

テストと設計がリファクタリングしにくい例

事前準備

期待値

テスト条件

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

51

CI in Test:Cucumber + PageObject design

Feature file: Behavior を記述Feature: Validation for registration PageBackground: 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 も同じ仕組みで管理

操作手順

システムの静的な仕様・設計

テスト観点

事前準備

期待値

テスト条件

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

52

継続的テストの実装まとめ

継続的テスト(Process)

永続性-Evoluvability

-Maintainability

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

53

継続的システムテスト

継続的システムテスト

継続的テスト(Process)

自動テスト( Product )

アジャイルテスター( People)

永続的開発Infrastructure

asCode

CI in Test

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

CI継続的フィードバック

アジャイルテスト4象限 スキルセットTestable

Architecture

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

54

生産性と自動テスト

継続的システムテスト

継続的テスト(Process)

自動テスト( Product )

アジャイルテスター( People)

永続的開発Infrastructure

asCode

CI in Test

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

CI継続的フィードバック

アジャイルテスト4象限 スキルセットTestable

Architecture

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

55

生産性と自動テスト

継続的システムテスト

継続的テスト(Process)

自動テスト( Product )

アジャイルテスター( People)

永続的開発Infrastructure

asCode

CI in Test

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

CI継続的フィードバック

アジャイルテスト4象限 スキルセットTestable

Architecture

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

56

生産性と自動テスト

・ 自動テストによる生産性改善  ・テスト実行の効率化(費用対効果)  ・テスト実行頻度の増加 (CI in Test)  ・レポート( CI ・継続的フィードバック)の効率化

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

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/

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

58

生産性と自動テスト:貯金をする事を考えてみる

1回こっきりのテストのイメージ 貯金箱を壊して枚数を確認する

→足らなかったらわざわざ貯金箱を  買ってきていれなおす必要 w

コインを入れたら、現在の貯金額を教えてくれる→ 今日足らなさそうだったら、  ちょっと多めに入れてみる

自動テストにより継続的にテスト実行するイメージ

毎日品質についてフィードバックするツールの一つ

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

59

自動テストが生産性を向上する例

“ システムテスト自動化による大規模検索プラットフォームの開発工程改善” , JaSST’Tokyo 2014

バグを作ってからすぐに修正可能なのでバグの修正日数が早くなる

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

60

生産性と自動テスト

継続的システムテスト

継続的テスト(Process)

自動テスト( Product )

アジャイルテスター( People)

永続的開発Infrastructure

asCode

CI in Test

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

CI継続的フィードバック

アジャイルテスト4象限 スキルセットTestable

Architecture

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

61

自動テストの実装

自動テスト( Product )

生産性-Speed-Cost

TestableArchitecture

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

62

自動テストの実装

自動テスト( Product )

生産性-Speed-Cost

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

63

Testable Architecture

Problem ・テストの自動化カバレッジが低い

Cause ・テストの確認項目がシステムから取得不可 ・外部サービスとの結合テストが困難 ・テストデータの作成が困難

Solution ・プロダクトと自動テストの一体化した設計 - テストモード    -Mock Internet - 本番データからのテストデータのサンプリング

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

64

Testable Architecture: GTAC 2015 で感じたこと

https://developers.google.com/google-test-automation-conference/2015/

・プロダクトと自動テストの一体化した設計 - テストモード    -Mock Internet - 本番データからのテストデータのサンプリング

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

65

自動テストの実装まとめ

自動テスト( Product )

生産性-Speed-Cost

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

66

生産性と自動テスト

継続的システムテスト

継続的テスト(Process)

自動テスト( Product )

アジャイルテスター( People)

永続的開発Infrastructure

asCode

CI in Test

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

CI継続的フィードバック

アジャイルテスト4象限 スキルセットTestable

Architecture

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

67

生産性と自動テスト

・ 自動テストは生産性を向上 ・ しかし、自動テストのみでは  信頼性や効率性などのテスト自体の品質は 担保されない

・テストの品質の向上  ・ アジャイルテスター

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

68

生産性と自動テスト

継続的システムテスト

継続的テスト(Process)

自動テスト( Product )

アジャイルテスター( People)

永続的開発Infrastructure

asCode

CI in Test

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

CI継続的フィードバック

アジャイルテスト4象限 スキルセットTestable

Architecture

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

69

アジャイルテスターの実装

アジャイルテスター( People)

信頼性-Effectiveness

-Availability

アジャイルテスト4象限 スキルセット

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

70

アジャイルテスターの実装

アジャイルテスター( People)

信頼性-Effectiveness

-Availability

スキルセット

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

71

アジャイルテスト4象限

Problem ・バグの見落とし、遅すぎる発見

Cause ・無駄なテスト、重複、遅すぎるテスト実行 ・ ~ility テストの見落とし

Solution ・「誰の?」「どんな?」テストの価値を整理 ・(システムテストのフォーカスを決める) ・品質をテストする

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

72

アジャイルテスト4象限:「誰の?」「どんな?」テストの価値を整理

http://lisacrispin.com/downloads/AdpTestPlanning.pdf

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

73

アジャイルテスト4象限:「誰の?」「どんな?」テストの価値を整理

http://lisacrispin.com/downloads/AdpTestPlanning.pdf

開発の価値

ユーザーの価値

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

74

アジャイルテスト4象限:テストの価値の受け取り手(楽天の場合)

Dev Ops

Test Automation Team

BusinessValues

BusinessRequirements

https://pixabay.com/en/businessmen-men-people-office-42691/

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

75

アジャイルテスト4象限:テストの価値の受け取り手(楽天の場合)

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

76

アジャイルテスト4象限:テストの価値の受け取り手(楽天の場合)

http://lisacrispin.com/downloads/AdpTestPlanning.pdf

開発の価値

ユーザーの価値

運用者の価値

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

77

アジャイルテスト4象限:システムテスト(レベル/フェーズ)のフォーカスを決める

継続的システムテストなので

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

78

アジャイルテスト4象限:システムテスト(レベル/フェーズ)のフォーカスを決める

Commit Stage・開発者向けの機能テスト

Capacity Stage・運用者向けの性能テスト

Pre-Production Stage・ユーザ向けの β テスト

“ 継続的デリバリー” ・テスト戦略 ・デプロイメントパイプライン

*注 説明のために単純化してます

デプロイメントパイプライン

システムテスト?

システムテスト?

システムテスト?

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

79

アジャイルテスト4象限:システムテストのフォーカスを決める

システムテストテストレベル的に

は、、、システム全体のテスト

テストフェーズ的には、、、最後のフェーズのテスト

システム全体の最終品質が Readyか?

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

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

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

81

アジャイルテスト4象限:例)オペラビリティテスト

運用者にとっての価値: 運用を安心して実施できること →運用スクリプトもテストする

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

82

ちなみにデプロイメントパイプライン

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

83

アジャイルテスターの実装

アジャイルテスター( People)

信頼性-Effectiveness

-Availability

スキルセット

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

84

アジャイルテスターの実装

アジャイルテスター( People)

信頼性-Effectiveness

-Availability

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

85

スキルセット

Problem ・テストができる人、やりたい人が少ない

Cause ・テスト自動化エンジニアは新しい ・トレーニングなどの不足

Solution ・キャリアパスの明確化 ・スキルセットの定義 ・新人研修

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

86

スキルセット:キャリアパスの明確化

テスト”だけ”詳しいエンジニアではなく自動化にも、リリースにも詳しいエンジニアを育てる

スキルセットの方向性

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

87

スキルセット:ちなみに

最近うちのチームメンバーの一番人気は Automation ArchitectRelease Automation をやってからTest Automation をやりたいというエンジニアが多かったChef はいいぞ!とみんな感じている

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

88

テスト自動化エンジニアは Process, Product, People に精通

継続的システムテスト

継続的テスト(Process)

自動テスト( Product )

アジャイルテスター( People)

永続的開発Infrastructure

asCode

CI in Test

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

CI継続的フィードバック

アジャイルテスト4象限 スキルセットTestable

Architecture

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

89

スキルセット:新人研修

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

90

アジャイルテスターの実装

アジャイルテスター( People)

信頼性-Effectiveness

-Availability

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

91

まとめ

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

92

継続的システムテストパターン

継続的システムテスト

継続的テスト(Process)

自動テスト( Product )

アジャイルテスター( People)

永続的開発Infrastructure

asCode

CI in Test

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

CI継続的フィードバック

アジャイルテスト4象限 スキルセットTestable

Architecture

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

93

継続的システムテストパターン

継続的システムテスト

継続的テスト(Process)

自動テスト( Product )

アジャイルテスター( People)

永続的開発Infrastructure

asCode

CI in Test

永続性-Evoluvability

-Maintainability

生産性-Speed-Cost

信頼性-Effectiveness

-Availability

CI継続的フィードバック

アジャイルテスト4象限 スキルセットTestable

Architecture

解決したい課題

( 品質 )

解決方法( コンセプト )

実装

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

94

Continuous System Test loves DevOps