JaSSTʼ21 Tokyo

事例からわかる︕
テスト⾃動化導⼊パターン
浅⻩友隆 ⼭⼝真央©2021 HumanCrest Co.,Ltd.

⾃⼰紹介❖ 名前︓浅⻩ 友隆❖ 主な業務 ︓テスト⾃動化、サービス開発❖ 経歴
︓開発エンジニア
10年
テストエンジニア 10年❖ 名前︓⼭⼝ 真央❖ 主な業務 ︓テスト⾃動化、サービス開発、マーケティング❖ 経歴
︓テストエンジニア 7年©2021 HumanCrest Co.,Ltd.

2

株式会社ヒューマンクレスト
設⽴: 2002/12/16
本社: ランドマークタワー
社員数: 156名
認証資格: ISO27001
ISTQBパートナーシップ: Platinum

株式会社ヒューマンネクスト（関内）JapanQuality Co.,Ltd（ベトナムダナン）©2021 HumanCrest Co.,Ltd.

3

©2021 HumanCrest Co.,Ltd.

4

テスト⾃動化は普通になった©2021 HumanCrest Co.,Ltd.

5

導⼊できない
維持できない©2021 HumanCrest Co.,Ltd.

6

UITest

この辺の話

Integration Test

Unit Test©2021 HumanCrest Co.,Ltd.

7

UITest

この辺の話

Integration Test

Unit Test©2021 HumanCrest Co.,Ltd.

8

UITest

この辺の話

Integration Test

Unit Test©2021 HumanCrest Co.,Ltd.

9

テスト⾃動化で重要なことは︖©2021 HumanCrest Co.,Ltd.

10

スクリプト

リソース

チーム

CI

ツー

ル

実⾏

⽬的ー
ク

プ

設ー

計

コ

ス

レポーティング

戦略

ワ

環

フ

レー

ム

境

スキルセット

結果分析©2021 HumanCrest Co.,Ltd.

⽂化
11

スクリプト

リソース

チーム

CI

ツー

⾃動テストのコア

実⾏

⽬的
プ

設ー

計

コ

ス

レポーティング

戦略

環

境レフ

スキルセットル

結果分析©2021 HumanCrest Co.,Ltd.

ワーム

クー

⽂化
12

スクリプトリソースチームCI

ツー

⾃動テストのコア

実⾏

⾃動テストの概念層

⽬的
プ

設ー計

コ

ス

レポーティング

戦略

環

境

レフ

スキルセットル

結果分析©2021 HumanCrest Co.,Ltd.

ワー

ムクー

⽂化
13

スクリプト

リソース

チーム

CI

ツー

⾃動テストのコア

実⾏

⾃動テストの概念層

⽬的

⾃動テストの中間層

プ

設ー

計コ

ス

レポーティング

戦略

環

境

レフ

スキルセットル

結果分析©2021 HumanCrest Co.,Ltd.

ワー

ム

クー

⽂化
14

スクリプト

リソース

チーム

CI

ツー

⾃動テストのコア

実⾏

⾃動テストの概念層

⽬的

⾃動テストの中間層

プ

設

ー

計コ

ス

レポーティング

戦略

環

境

レフ

スキルセットル

結果分析©2021 HumanCrest Co.,Ltd.

ワー

ムクー

⾃動テストの表層

⽂化15スクリプト

リソース

チーム

CI

ツー

⾃動テストのコア

実⾏

⾃動テストの概念層

⽬的⾃動テストの中間層

プ

設ー計コス

レポーティング

戦略

環境レフ

スキルセットル

結果分析©2021 HumanCrest Co.,Ltd.

ワーム

クー

⾃動テストの表層

⾃動テストのベース
⽂化
16

テスト⾃動化導⼊パターンは︓
︓©2021 HumanCrest Co.,Ltd.

17

テスト⾃動化 パターン

ユーザの価値を重視

テストスピード重視

繰り返し重視インターフェース重視

image: Designed by Freepik and distributed by Flaticon©2021 HumanCrest Co.,Ltd.

18

テスト⾃動化 パターン

ユーザの価値を重視

テストスピード重視

繰り返し重視インターフェース重視

image: Designed by Freepik and distributed by Flaticon©2021 HumanCrest Co.,Ltd.

19

⽬的
主要な機能/要件が正常に動作することを確認する©2021 HumanCrest Co.,Ltd.

20

⼿動テストを⾃動化
ユーザに提供する価値をテスト©2021 HumanCrest Co.,Ltd.

21

ピラミッドの頂上UI Tests
Integration
Test

少ないUnit Test

©2021 HumanCrest Co.,Ltd.

22

事例︓ユーザの価値を重視

ECサイトの場合©2021 HumanCrest Co.,Ltd.

23

事例︓ユーザの価値を重視【ECサイトの場合】2015〜
・ユーザの価値︓新規会員登録、ログイン、検索、購⼊、退会
・テストタイプ︓シナリオテスト【グループウェアの場合】2014〜
・ユーザの価値︓予定作成、メール送信
・テストタイプ︓ユースケーステスト【グルメサイトの場合】2017〜
・ユーザの価値︓店舗検索、予約・テストタイプ︓シナリオテスト

image: Designed by Freepik and distributed by Flaticon©2021 HumanCrest Co.,Ltd.

24

テスト⾃動化 パターン

ユーザの価値を重視

テストスピード重視

繰り返し重視インターフェース重視

image: Designed by Freepik and distributed by Flaticon©2021 HumanCrest Co.,Ltd.

25

⽬的
繰り返しテスト（環境やデータ）を⾃動化によって効率化する©2021 HumanCrest Co.,Ltd.

26

繰り返しを⾃動化©2021 HumanCrest Co.,Ltd.

27

テストケースを繰り返す
ブラウザ
OSデバイス©2021 HumanCrest Co.,Ltd.

28

事例︓テストケースを繰り返す【ECサイトの場合】2015〜
・ユーザの価値︓新規会員登録、ログイン、検索、購⼊、退会
・テストタイプ︓シナリオテスト
・ブラウザ︓

8【グルメサイトの場合】2017〜
・ユーザの価値︓店舗検索、予約・テストタイプ︓シナリオテスト
・ブラウザ︓ win

910

11

【グループウェアの場合】2014〜
・ユーザの価値︓予定作成、メール送信
・テストタイプ︓ユースケーステスト
・ブラウザ︓

beta

mac

image: Designed by Freepik and distributed by Flaticon©2021 HumanCrest Co.,Ltd.

29

データを繰り返す
IN/OUTデータの組み合わせ
パターン網羅©2021 HumanCrest Co.,Ltd.

30

事例︓データを繰り返す【事例A】2020
・⽬的︓数値計算の正確性確認（保険）・制約︓⼊⼒→出⼒はブラウザで確認が必須
・⽅法︓Seleniumを利⽤したデータ駆動テスト。ケース数は数万件。
⼊⼒パターンによって画⾯遷移も変わる為、キーワード駆動の考えを取り⼊れ、パターン毎に画⾯遷移フローを⾃動⽣成するところから開発。

【事例B】2017
・⽬的︓超⾼速開発ツールで作成したシステムの設定ミスを検知
・制約︓ツールの性質上、単体テストは書けない
・⽅法︓Seleniumを利⽤したデータ駆動テスト
画⾯からの⼊⼒値に対するエラーメッセージのパターンを確認©2021 HumanCrest Co.,Ltd.

31

テスト⾃動化の変化©2021 HumanCrest Co.,Ltd.

32

様々な開発・環境の変化©2021 HumanCrest Co.,Ltd.

33

インフラ
デバイス
アーキテクチャプロセス©2021 HumanCrest Co.,Ltd.

34

開発技術とテストの変化

インフラ環境の変化
オンプレ

リリースサイクル

クラウド
CI/CD

デバイスの変化Web

モバイル

フロントエンド
バックエンドアーキテクチャの変化
モノリシックマイクロサービス

テストスピード
テストスコープ

開発プロセスの変化
WF開発

アジャイル開発

DevOpsイテレーション

©2021 HumanCrest Co.,Ltd.

35

テスト⾃動化 パターン

ユーザの価値を重視

テストスピード重視繰り返し重視

インターフェース重視

image: Designed by Freepik and distributed by Flaticon©2021 HumanCrest Co.,Ltd.

36

テスト⾃動化のスコープ©2021 HumanCrest Co.,Ltd.

37

テストスコープ
UI
リクエスト

テスト

ロジック

レスポンス

©2021 HumanCrest Co.,Ltd.

38

テストスコープ

リクエスト

テスト

ロジック

レスポンス

©2021 HumanCrest Co.,Ltd.

39

⽬的
バックエンドの動作を確認
API（サービス）の動作を確認©2021 HumanCrest Co.,Ltd.

40

⾃動テストが砂時計型

UI Tests

Unit Tests©2021 HumanCrest Co.,Ltd.

41

UIのテストインターフェースのテスト©2021 HumanCrest Co.,Ltd.

42

事例︓パターン④インターフェース重視【事例A】
・⽬的︓APIのリクエスト・レスポンス等が正しいことを確認
・制約︓ステータスコードが特殊
・⽅針︓API毎のパラメータパターンをテストケースとする
ステータスコードではなく、レスポンスの内容でテストAPIの順序性、アクセストークン等の受け渡しも考慮する【バックエンドシステム】
・⽬的︓サービス仕様書の記述を元にインプットデータのパラメータパターンで機能を有している事を確認
・⽅針︓APIのリクエスト/レスポンスだけでなく、DBやログまで確認を実施する

image: Designed by Freepik and distributed by Flaticon©2021 HumanCrest Co.,Ltd.

43

テスト⾃動化 パターン

ユーザの価値を重視

テストスピード重視

繰り返し重視インターフェース重視

image: Designed by Freepik and distributed by Flaticon©2021 HumanCrest Co.,Ltd.

44

テストスピードを改善©2021 HumanCrest Co.,Ltd.

45

⽬的イテレーション
リリースサイクルの中でテストする©2021 HumanCrest Co.,Ltd.

46

開発スピードの変化
テスト実施後のフィードバックが重要©2021 HumanCrest Co.,Ltd.

47

開発環境の変化
いつでもテスト実⾏可能©2021 HumanCrest Co.,Ltd.

48

アジャイルテストの4 象限©2021 HumanCrest Co.,Ltd.

49

テストピラミッド©2021 HumanCrest Co.,Ltd.

50

事例︓テストスピードを改善【ロジスティクスの場合】・リリースサイクル︓週1回・テスト対象︓本番環境、ステージング環境・テスト機能︓受付、⼈員管理等の主要機能
・⾃動テストの使われ⽅︓ステージングリリース後、⾃動テストが全て通るか確認
問題がなければ、その後本番環境へリリース©2021 HumanCrest Co.,Ltd.

51

事例︓簡易アーキテクチャ図

image: Designed by Freepik and distributed by Flaticon©2021 HumanCrest Co.,Ltd.

52

事例︓テストスピードを改善【CMSの場合】・リリースサイクル︓⽉１回・スプリント︓１週間
・アジャイルチーム︓朝会、振り返り会に参加
・テスト機能︓すべての画⾯に遷移可能であること
主要機能、外部結合に問題がないこと
・テスト対象環境︓⾃動テスト専⽤環境が３環境
・⾃動テストの使われ⽅︓⽇次ビルドでテストが実⾏される

image: Designed by Freepik and distributed by Flaticon©2021 HumanCrest Co.,Ltd.

53

事例︓簡易アーキテクチャ図

テスト対象

オンプレ
Win sv

AWS

Win 10for chromemasterAWS

slave

for firefox
ubuntu sv

libraryJava
Junit/maven
selenium©2021 HumanCrest Co.,Ltd.

for Edge54

各パターンの組み合わせ
⽬的によって導⼊の仕⽅が変わり、パターンを組み合わせることもある︕
例❖ テストスピード重視 × 繰り返し重視❖ テストスピード重視 × インターフェース重視❖ 繰り返し重視 × インターフェース重視❖ ユーザの価値を重視 × テストスピード重視 × ⼿動テスト❖ ユーザの価値を重視 × 繰り返し重視 × インターフェース重視©2021 HumanCrest Co.,Ltd.

55

事例︓ユーザの価値を重視 ✕テストスピード重視✕⼿動テストアジャイルテストの台頭
イテレーション中

⼿動テスト

新機能テスト＋セッションベースドテスト

ビルド時

リグレッションテスト 各機能のテスト
スピード重視

リリース時

シナリオテスト

要件網羅のテスト
ユーザの価値を重視©2021 HumanCrest Co.,Ltd.

56

事例︓ユーザの価値を重視 ✕UI

繰り返し重視✕リクエスト

インターフェース重視

ロジック

レスポンス

・テスト内容︓ユーザの基本操作を⾃動化
対象は正常系のみ
繰り返し⾏うテストを⾃動化
・対象︓SDKが組み込まれたサンプルアプリ
・デバイス︓iOS、Android、Java、Windows
・テスト使⽤タイミング︓リリース前、受け⼊れ時
image: Designed by Freepik and distributed by Flaticon

・テスト内容︓サーバーの設定確認
⼊⼒/出⼒のパターン網羅
・対象︓REST API
・テスト使⽤タイミング︓開発中、リリース前©2021 HumanCrest Co.,Ltd.

57

事例︓簡易アーキテクチャ
PC（Mac）
VM（Windows）
API Test

WindowsApp
Jenkins

JavaApp

テスト対象Jenkins
Slave

GitLabimage: Designed by Freepik and distributed by Flaticon©2021 HumanCrest Co.,Ltd.

58

テスト⾃動化 パターン

①ユーザの価値を重視②テストスピード重視③繰り返し重視④インターフェース重視

image: Designed by Freepik and distributed by Flaticon©2021 HumanCrest Co.,Ltd.

59

①ユーザの価値重視②スピード重視③繰り返し重視④インターフェース重視

⽬的

ユーザが使⽤する主要機能/要件が正常に動作することを確認する

イテレーション/リリースサイクルの中でテストする

繰り返しテスト（データ、マルチ環境）を⾃動化し、効率化する

インターフェースレベルでの⼊⼒/出⼒パターンが仕様書通りであり、機能が動作していることを確認する

特徴

・UIテスト（ハッピーパスから）・本番環境に対してのテスト
・外部のテストエンジニアでも対応可能

・基本機能のテスト
・テスト専⽤環境がある
・パラレル実⾏する・同⼀操作を何度も実施する必要があるテスト

・APIテスト・正常系だけでなく異常系のパターンまで確認することが多い

メリット

・リリースの判断基準にできる
・1つのテストが短いため、開発者・⾃動テストの動きが想像しやすく、 へのフィードバックが早い作りやすい・開発者に効果を実感してもらいや
すい・CI/CDに組み込みやすい

・1個スクリプトで様々なパターンのテストができる・⼈が実施するよりもミスが防げる・ROIが⾼い

デメリット

・1つのテストケースが⻑くなるた
め、⾃動テストが不安定となりやすい・⾃動テストの変更頻度が⾼い

・[データ]正確な⼊⼒値と期待値の組み合わせがないとテストできない・[マルチ環境]複数環境の準備、メンテナンスが⼤変-

注意点

・全てを⾃動化しない・変更箇所が少ないところからテストを作成する・主要機能を⾃動化するため、バグを発⾒しにくい

・開発者やプロジェクトメンバーとの協⼒が重要-

・開発者やプロジェクトメンバーとの協⼒が重要©2021 HumanCrest Co.,Ltd.

・UIを通さずにテストできるため、⾃動テストがはやい

60

テスト⾃動化を阻害する要因

1. リソース
2. 優先順位
3. ツールと環境
4. テストに対する⽂化
5. スキルセット
6. プロセス©2021 HumanCrest Co.,Ltd.

61

スクリプト

リソース

チーム

CI

ツー

実⾏

⽬的プ

設ー

計コス

レポーティング

戦略

環境レフ

スキルセットル

結果分析©2021 HumanCrest Co.,Ltd.

ワームクー⽂化62

テスト⾃動化 パターン

①ユーザの価値を重視②テストスピード重視③繰り返し重視④インターフェース重視

image: Designed by Freepik and distributed by Flaticon©2021 HumanCrest Co.,Ltd.

63

テスト⾃動化 パターン（HCでは...）①ユーザの価値を重視②テストスピード重視③繰り返し重視④インターフェース重視©2021 HumanCrest Co.,Ltd.

64

仲間 募集してます
・企業理念、ミッション、⾏動指針に共感してくれる⽅

変⾰と研鑽①誰もまねできない品質やサービスを組み合わせて提供する

See
the world
not as is, but as it should be.
「オペレーショナル・エクセレンス」
・ISTQB/ JSTQB
取得者② 顧客を深耕することで、その関係性を強化する「顧客との親密度」
あるがままでなく、あるべき世界を⾒ろ③ 未知の発⾒を新サービスにする「サービス・リーダーシップ」
・（特に）ISTQB / JSTQB Advanced Level 取得者©2021 HumanCrest Co.,Ltd.

⼤歓迎︕

65

ご清聴ありがとうございました︕
ご質問・ご意⾒ 等はバーチャルブースにて︕©2021 HumanCrest Co.,Ltd.

66