テスト自動化導入後の課題の改善ビフォーアフター～テスト自動化は導入後が大変～

May 27th , 2022
Emura Sadaaki
Leisure Product Dept.
Rakuten Group, Inc.

Target user & Goal

対象:

これからテスト自動化を取り組む人
テスト自動化の運用に苦労している人

ゴール :⾧期にわたってテスト自動化を効率よく活用できる2Out of scope• テスト自動化の実装方法

3

Organization
MeProduct manager engineer:
Manual testgroup
8 services

Developer group

Test automation
group

QA section
https://www.irasutoya.com/

4Current test automation system
IIS
Remote monitor
dashboard

IaaS

DC center

Jenkins server

alert
5

Test automation usage situation• テスト自動化を毎日実行• 各サービスは２～３週間の周期でアップデートされる• 各サービスに対して、数百のテストscript、複数のJenkinsで構成される

6

Test automation motivation graph for 6 years

Automation motivation

Phase-3
Operation issue
Phase-2
Script issue
Phase-1
Process issue

2016

Time20227

6年間のテスト自動化で発生した3回の課題と、その対応

8

Agenda1. Phase-1. process issue & solution
2. Phase-2. script issue & solution
3. Phase-3. operation issue & solution
4. Summary

9

Agenda1. Phase-1. process issue & solution
2. Phase-2. script issue & solution
3. Phase-3. operation issue & solution
4. Summary

10Small team is efficient• 密なコミュニケーション• １サービスに集中してScriptingmanualautomation• テスト自動化のカバレッジは少ない

One teamhttps://www.irasutoya.com/

11Team size is expanding

manual• 組織が大きくなる• 複数サービス並行してScripting• テスト自動化のカバレッジが大きくなる

manualmanualmanual teamautomation
automation teamhttps://www.irasutoya.com/

12

Team size is expanding

manual• お互いのテストが不明確• テスト自動化が仕様変更で失敗増える

manualmanualmanual teamautomation
automation teamhttps://www.irasutoya.com/

13

Phase-1. Process Issue
組織が大きくなると、テスト自動化の役割がさまよう

14How to resolve 1st issue• お互いのテストが不明確⇒ テストの責任範囲・役割を明確にする• テスト自動化が仕様変更で失敗増える⇒ 新規機能、既存機能の仕様変更の明確化と、自動化の優先順位

15

Test automation responsibilityNew Project scope

Regression

ManualProjectの影響範囲②①Automation
Product
Cover by manual test
Cover by test automation

Projectの影響外の既存機能＋
Projectにより修正が加わる既存機能

1) Regression affected by new project (spec change)
2) New function
16

How to proceed (short term project)
Project B

Project A① 既存機能regression

modifymodifyTest will
be failed

Test will
be failed
Create new②新規機能
New function

Create newIf have atime
Test readyt
App release

Test readyApp release

1~2 weeks17

1st phase solution output• マニュアルチームからの信頼、効率的な品質保証• 少人数でテスト自動化の責務を果たす

18

Agenda1. Phase-1. process issue & solution2. Phase-2. script issue & solution
3. Phase-3. operation issue & solution
4. Summary19

Jenkins say green! But …

• 仕様変更にテストが追従している!
• テスト成功が継続し、静観してた!
• 日に日にビルドキューが溜まる!?

20

Regression speed[sec]

最初は、実行時間は短かったTime [second]200

成功が続く限り、気にしない

150
100

いつのまにか、時間がかかっている

50
00

5

10

実行回数1520

全般的にテストが終わらない
21

Performance issue route cause• テストデータ肥大化• Pipelineが肥大化、テストの高依存化• いけてないテスト自動化の実装

https://www.irasutoya.com/

22Performance issue route cause• 問題が起きていることを気づかないのが問題

23

Phase-2. Script Issue
テスト自動化が成功し続けても、自動化の内部品質に課題あり

24

How to resolve 2nd issue

テスト実行結果の可視化と、問題可能性の早期検出の仕組化

25

Store all test automation history

全ての情報をDBに保存• テスト実行時間、処理時間• テスト結果• Jenkinsステータス（処理待ちキュー）

26

Pick up possible problem

スクリプト単位の実行時間の推移の可視化

sample問題のテストの絞り込み問題のテストの修正
27

Pick up possible problem
Jenkins単位の実行時間の推移の可視化[min]問題のJenkinsの絞り込み

sample問題のJenkinsの設定見直し
28

2nd phase solution output• テスト自動化パフォーマンス問題の早期発見• 安定したテスト自動化の結果提供

29

Agenda1. Phase-1. process issue & solution
2. Phase-2. script issue & solution
3. Phase-3. operation issue & solution
4. Summary

30

Many tests are failed• テストは失敗する• 原因調査、対応（運用）が必要• 運用工数はスクリプト数に比例する

31

Additional task to investigate test result!
manualautomation

1. テストする

1. Jenkins が失敗する

2. バグを見つける

2. 失敗レポートで原因を分析する

3. バグチケットを上げる

V.S.

3. Local で実行してみる
4. バグチケットを上げる
Issueが起きたときの対処に時間がかかる!
32Summary failed reason category

0.5

4.9

Reason category
1.

Application bug

2.

Test automation script bug

3.

Environment issue

4. Temporary unstable

20.4

74.1

Unit = percentage

Reason ratio

JaSST’21 Tokyo 「Test Automation Improvement by Machine Learning」

Application Bug

Test automation Bug

Environment issue

Temporary unstable※2020/1 ~ 2020/10 summary33

Temporary unstable example case

一時的に、テスト環境が不安定

再実行すると、たいてい復旧する

Website is busy

この作業は非生産性!かつ、多い34

Phase-3. Operation Issue
テスト自動化の運用工数が、スクリプト数に比例する

35

How to resolve 3rd issue

非生産性タスクの自動化により、運用工数削減

36Improve operation idea “Auto healing system”①
Training data

1. テスト失敗の原因をtraining dataとして使う②

2. テスト失敗時、機械学習により原因を予測する• Error text
• screenshot③・・・

Jenkins server

3. temporary unstable issueのとき、自動再実行する

一部のテスト失敗を自動に再実施するAuto healing system
JaSST’21 Tokyo 「Test Automation Improvement by Machine Learning」

37

Auto healing system brings …
CategoryOperation

1.

Application bug

bug report、bug fix後にテスト再実行

2.

Test automation script bug

自動化スクリプトの修正とテスト再実行

3.

Environment issue

環境復旧とテスト再実行

4.

Temporary unstable

自動でテスト再実行

非生産性作業は自動で処理される!
38

Auto healing system brings …
All manual operation human cost

80%
60%

Example.
1 operation = 2 mins
Daily operation = 300

40%Monthly operation = 112 hours

78%

100%

20%

Auto healing human cost0%
Jan-20Feb-20 Mar-20 Apr-20 May-20 Jun-20

auto healing

manual operation

Ratio of way to fix issueJul-20In July
78% failed jobs is healed in auto

Reduction = 88 hours
39

3rd phase solution output• テスト自動化運用の効率化• もっと知的な作業への集中

40

Agenda1. Phase-1. process issue & solution
2. Phase-2. script issue & solution
3. Phase-3. operation issue & solution
4.Summary41

Process Issue
組織が大きくなると、テスト自動化の役割がさまよう

Script Issue
テスト自動化が成功し続けても、自動化の内部品質に課題あり

Operation Issue
テスト自動化の運用工数が、スクリプト数に比例する

42

Process Issue solution
テスト自動化の責務・役割の明確化

Script Issue solution
テスト実行結果の可視化と、問題可能性の早期検出の仕組化

Operation Issue solution
非生産性タスクの自動化により、運用工数削減

43

テスト自動化は、定期的に、俯瞰的に見直すことが重要
テスト自動化導入その前と、その後と。

44