狠狠撸

狠狠撸Share a Scribd company logo
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
テスト自動化システム 成長記
-継続的に運用する為に何をしてきたか?-
株式会社ヒューマンクレスト 技術推進本部
浅黄 友隆 & 山口 真央
2017/03/19
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
アジェンダ
? 誕生 2013年
? 成長 2014年?2016年
? 現在 2017年
?どのような対応をしてきたのか?
?どのようなアーキテクチャなのか?
?どのようなテストを自動化しているのか?
2
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
問題点
? 自動テストを継続していく時の障害
?コスト
?テストコード(スクリプト)のメンテナンス
?テスト結果の分析
?動かないときの分析
?環境の維持
?OSのアップデートへの追従
?OSSのアップデートの追従
?人に依存
?専任者がいない
3
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
テスト自動化サービス(Lynx)とは
? 自動テストを実施する上で必要な事を全て代行
? テスト対象システム(SUT)の「外側」にテスト自動化システムを構築
?テスト実施環境構築(ブラウザ、スマホ)
?自動テストの設計
?テストスクリプト作成
?テストの実行
?結果通知?報告
?スクリプトのメンテナンス
?環境の維持、運用
テスト対象
システム
(SUT)
4
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
誕生
5
? 自動操作:Selenium WebDriver
? スクリプト:Java → jar
? 自動起動:WindowsスケジューラでBatch起動
? エラー通知:メールでJavaのエラーログ送信
SUT
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
誕生
6
GUI Tests
Acceptance Tests
(API Layer)
Unit Tests
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
誕生
? 2013/3
// 1. ログイン
driver.findElement(By.id("account")).sendKeys("AdminUser");
driver.findElement(By.id("pass")).sendKeys("hcpassword");
driver.findElement(By.cssSelector(".btn.login")).click();
String userActual = driver.findElement(By.cssSelector(".loginAccount")).getText();
assertThat(userActual , is("AdminUser"));
// ??操作
driver.findElement(By.id("input1")).sendKeys("XXXXXXXX ");
driver.findElement(By.id("input2")).sendKeys("YYYYYYYY");
driver.findElement(By.id("btn1")).click;
// ??操作2
driver.findElement(By.id("input3")).sendKeys("AAAAAAAA");
driver.findElement(By.id("input4")).sendKeys("BBBBBBBB");
driver.findElement(By.id("btn2")).click;
7
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
誕生
8
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
誕生
9
GUI Tests
Acceptance Tests
(API Layer)
Unit Tests
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
誕生
? 2013/5 毎回重複するコーディングが多い
↓
共通関数化
テンプレート化
↓
ソースが複雑になる
↓
メンテナンスは私しかできない!
10
顧客が増え
た
スクリプトが増えた
バージョンアップが頻
繁
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
誕生
? 2013/8 見直し
// 1. ログイン
driver.findElement(By.id("account")).sendKeys(”AdminUser");
driver.findElement(By.id("pass")).sendKeys("hcpassword");
driver.findElement(By.cssSelector(".btn.login")).click();
String userActual = driver.findElement(By.cssSelector(".loginAccount")).getText();
assertThat(userActual , is(”AdminUser"));
// ??操作
driver.findElement(By.id(”input1")).sendKeys(”XXXXXXXX ");
driver.findElement(By.id(”input2")).sendKeys(”YYYYYYYY");
driver.findElement(By.id(”btn1")).click;
// ??操作2
driver.findElement(By.id(”input3")).sendKeys(”AAAAAAAA");
driver.findElement(By.id(”input4")).sendKeys(”BBBBBBBB");
driver.findElement(By.id(”btn2")).click;
毎回同じ!箇所
パターンがある
もう一度 ソースから検討してみた
11
都度違う
エクセル
自動化
エンジン
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
誕生
seq keyword targetKind targetUniqueID inputValue Expect Capture Sleep
1 URL www.xxxxxx.jp/login
2 Sendkey id account AdminUser
3 Senkey id pass hcpassword
4 Click css .btn.login 1000
5 Check css .loginAccount AdminUser TRUE
12
項番 設定項目 必須 値
1 GridServer ○ XXX.XXX.XXX.XXX:4444
2 OS
3 Browser ○ safari
4 version 7.0
5 通知有無 ○ TRUE
6 通知用メールアドレス xxxxxxxxxxx@humancrest.co.jp
7 通知先メールアドレス xxxxxxxxx@humancrest.co.jp
8 スクリーンショット有無 ○ TRUE
9 保存場所 ○ c:tempcapture
10 タイムアウト値 0
?Project
├─自動テストエンジン.jar
├─Scenario.xlsx
│ ├─ Scenario
│ └─ Config
└─Update.vbs
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
誕生
13
フロー図
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
成長
? 対応一覧
14
2014年 2015年 2016年
OSS Ver Up
SUT Ver Up
報告書の廃止
Dashboard
Gradle
レスポンスタイム
測定
DDT
Image
AWS環境
AWSテスト実行
Git
Grid
オフショア
Config独立
DB
Action
結果送信
再起動
Screen
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
成長
? 対応一覧
15
2014年 2015年 2016年
OSS Ver Up
SUT Ver Up
報告書の廃止
Dashboard
Gradle
レスポンスタイム
測定
DDT
Image
AWS環境
AWSテスト実行
Git
Grid
オフショア
DB
Action
結果送信
再起動
Screen
Config独立
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
?Project
├─自動テストエンジン.jar
├─Scenario1.xlsx
│ ├─ Scenario
│ └─ Config
├─Scenario2.xlsx
│ ├─ Scenario
│ └─ Config
└─Update.vbs
成長
? Lynx構成(改善前)
16
seq keyword targetKind targetUniqueID inputValue Expect Capture Sleep
1 URL www.humancrest.co.jp
2 Sendkey id account AdminUser
3 Senkey id pass hcpassword
4 Click css .btn.login 1000
5 Check css .loginAccount AdminUser TRUE
項番 設定項目 必須 値
1 GridServer ○ XXX.XXX.XXX.XXX:4444
2 OS
3 Browser ○ safari
4 version 7.0
5 通知有無 ○ TRUE
6 通知用メールアドレス XXXXX@humancrest.co.jp
7 通知先メールアドレス XXXXX@humancrest.co.jp
8 スクリーンショット有無 ○ TRUE
9 保存場所 ○ c:tempcapture
10 タイムアウト値 0
同じ処理を共通化したい
実行シナリオ?設定
を自由に変えたい
スクリプトは作成できるようになったけど???
メンテナンスする時間は変わらない
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
成長
? Lynx構成(改善後)
?Project
├─Action
│ └─Action.xlsx
| ├─Actionシート
| └─Dataシート
├─Config
│ ├─Config.xlsx
│ └─Parameter.xlsx
├─Scenario
│ ├─Scenario1.xlsx
│ └─Scenario2.xlsx
└─Screen
└─Screen.xlsx
17
seq keyword Target
Kind
Target
UniqueID
inputValue Expect DataFile
Line
DataFile Count Parameter
Line
Capture Sleep
1 URL www.xxxxxx.jp/login
2 ActionUnit Login
3 Click scr ログインボタン TRUE 2000
? 共通の処理をひとつにまとめることができるようになった
? ActionをScenarioからCallできるようにした
? ページオブジェクトの導入
? IdやcssSelectorを一箇所にまとめた(Screen)
? Configが単独で指定できるようになった
? Parameterを使用できるように列を追加
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
成長
? 対応一覧
18
2014年 2015年 2016年
OSS Ver Up
SUT Ver Up
報告書の廃止
Dashboard
Gradle
レスポンスタイム
測定
DDT
Image
AWS環境
AWSテスト実行
Git
Grid
オフショア
DB
Action
結果送信
再起動
Screen
Config独立
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
成長
? DDT(Data Driven Testing)への対応
19
No Data1 Data2 ??? DataZZ
1 X-XXX01@humancrest.co.jp test001 ??? 山田太郎
2 X-XXX02@humancrest.co.jp test002 ??? 山田次郎
: : : : :
10 X-XXXZZ@humancrest.co.jp testzzz ??? 山田Z郎
seq keyword Target
Kind
Target
UniqueID
inputValue Expect DataFile
Line
DataFile
Count
Parameter
Line
Captur
e
Slee
p
1 URL www.xxxxxx.jp/login
2 ActionUnit Login
10
TRUE 2000
何のデータを何回繰り返すかを
指定して使えるようにした
? DDTの自動テストへの対応
? スクリプト作成?メンテナンス工数の削減
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
成長
? 対応一覧
20
2014年 2015年 2016年
OSS Ver Up
SUT Ver Up
報告書の廃止
Dashboard
Gradle
レスポンスタイム
測定
DDT
Image
AWS環境
AWSテスト実行
Git
Grid
オフショア
DB
Action
結果送信
再起動
Screen
Config独立
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
成長
? テスト結果送信(改善前)
?メールでJavaのエラーログを送信
21
件
名
Lynx-XXX_XXX_ie(8)2013-10-03_175030
内
容
https://XXX.XXX.XXX/XXXX
org.openqa.selenium.ElementNotVisibleException: 操作対象(id=XXXX)が表示領域にない為、
操作できません。
Build info: version: '2.35.0', revision: 'c916b9d', time: '2013-08-12 15:42:01’
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.7.5', java.version:
'1.7.0_25’
Driver info: driver.version: unknown
at jp.co.humancrest.santacruz.otp.MainLoop.RunScn(MainLoop.java:143)
at jp.co.humancrest.santacruz.otp.AptKeyword.main(AptKeyword.java:102)
? お客様には不要な内容
? 作った人しか分からない
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
成長
? テスト結果送信(改善後)
?エラーメールの送信内容
?メールを見て分かる内容に修正
?文章だけではなく、操作前後のスクリーンショットを添付
(スクリーンショットの有無はConfigで設定可能)
?チャットツールへの結果送信
?Chatwork
?Slack
?テスト成功通知を送信
ユーザの要望に合わせたエラーを通知
エラー通知からの結果分析精度向上
22
件
名
Lynx-XXX__XXX_ie(11)2017-02-28_085017
内
容
TestNO:1-15-
SEQ:75
処理内容:XXXボタンをクリックする
エラー原因:(err_0030)操作対象(id=XXXX)が表示領域にない為、操作できません。
発生時刻:2017/03/08 07:26:18
URL:https://XXX.XXX.XXX/XXXX
テストが成功した時も通
知が欲しい
メールではなく、チャッ
トに通知が欲しい
Before After
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
成長
? 対応一覧
23
2014年 2015年 2016年
OSS Ver Up
SUT Ver Up
報告書の廃止
Dashboard
Gradle
レスポンスタイム
測定
DDT
Image
AWS環境
AWSテスト実行
Git
Grid
オフショア
DB
Action
結果送信
再起動
Screen
Config独立
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
成長
? レスポンスタイムの測定
?シナリオ全体の実行時間を測定
?操作時間を測定
24
特定の処理において、
日々のレスポンスタイム
が測りたい
Transaction 総処理時間(ms) 実処理時間(ms)
トップページ 16000 6900
ログイン 12800 9800
Transaction 総処理時間(ms) 実処理時間(ms)
トップページ 20000 7000
ログイン 11100 8000
:
:
csvファイルに時間を出力
毎日の結果が蓄積される 集計?報告書提出
いつサイトが遅かったかが分かるようになった
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
成長
? 対応一覧
25
2014年 2015年 2016年
OSS Ver Up
SUT Ver Up
報告書の廃止
Dashboard
Gradle
レスポンスタイム
測定
DDT
Image
AWS環境
AWSテスト実行
Git
Grid
オフショア
DB
Action
結果送信
再起動
Screen
Config独立
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
成長
? 報告書の廃止(廃止前)
?毎月報告書を作成し、提出
?1案件あたり、作成に2日程度かかる
?エラーメール以外に結果を知る方法がない
26
作成時間はかかるけど、
月の最後にしか集計結果
が分からない
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
成長
? Dashboardの作成?報告書の廃止
?Web上でテスト結果の確認ができるようになった
?報告書作成時間を他のことに使えるようになった
(当時、1人で4案件の報告書を作成?月あたり、約1週間分の時間ができた!)
27
まだまだ改良中!!!
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
成長
? 対応一覧
28
2014年 2015年 2016年
OSS Ver Up
SUT Ver Up
報告書の廃止
Dashboard
Gradle
レスポンスタイム
測定
DDT
Image
AWS環境
AWSテスト実行
Git
Grid
オフショア
DB
Action
結果送信
再起動
Screen
Config独立
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
成長
? オフショアの活用 ベトナム ダナン
29
? テスト結果の分析
? スクリプト作成?保守(10名)
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
現在
? 対応一覧
30
2014年 2015年 2016年
OSS Ver Up
SUT Ver Up
報告書の廃止
Dashboard
Gradle
レスポンスタイム
測定
DDT
Image
AWS環境
AWSテスト実行
Git
Grid
オフショア
DB
Action
結果送信
再起動
Screen
Config独立
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
現在
31
WorkSpaces
SeleniumGrid Node
(XXX.XXX.XXX.XXX:6666)
SeleniumGrid Hub
(XXX.XXX.XXX.XXX:4444)
EC2
? Windows Server 2008 R2 Datacenter 64bit
? Intel Xeon CPU E5-2670 v2 @ 2.50 GHz
? RAM 2.00 GB
? EIP
? PrivateIP
? Amazon Linux
? EIP: なし
? PublicIP : XXX.XXX.XXX.XXX
? PrivateIP :
XXX.XXX.XXX.XXX
Availability Zone
ap-northeast-1a
Availability Zone
ap-northeast-1c
Strage
(Lynxrun本体と
Scenario)
Volumeを
マウント
Dirを共有
Lynx本体とシ
ナリオをアップ
ロード
JenkinsのJob
やConfig等の
バックアップ
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
現在
? フロー図
32
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
現在
33
GUI Tests
Acceptance Tests
(API Layer)
Unit Tests
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
SUT
SUT
現在(全体アーキテクチャ)
34
:
:
Lynxのソース
Excel管理
LynxDashboard
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
現在の規模感
? 対応キーワード 43種類(クリック、入力、マウスオーバー、、)
? テストステップ数 8万ステップ/日
? エラー発生数 10件以上/日
? バグ(デグレ)発見数 約1?2件/月
35
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
まとめ
36
要求
必須
内部 外部
オフショア
Config
Grid
AWS環境
DB
Gradle
結果送信
AWSテスト実行
Dashboard
Image
Git
再起動
Action
DDT
SUT Ver Up
時間測定
OSS Ver Up
報告書の廃止
Screen
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
今後の課題
? スマートフォンのテストをAWS上へ移行
? 画像処理の改善
? Dashboardの改善
? Lynxのオープンソース化
37
Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved.
ご清聴ありがとうございました。
38

More Related Content

【厂罢础颁2017】テスト自动化システム 成长记

  • 1. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. テスト自動化システム 成長記 -継続的に運用する為に何をしてきたか?- 株式会社ヒューマンクレスト 技術推進本部 浅黄 友隆 & 山口 真央 2017/03/19
  • 2. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. アジェンダ ? 誕生 2013年 ? 成長 2014年?2016年 ? 現在 2017年 ?どのような対応をしてきたのか? ?どのようなアーキテクチャなのか? ?どのようなテストを自動化しているのか? 2
  • 3. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 問題点 ? 自動テストを継続していく時の障害 ?コスト ?テストコード(スクリプト)のメンテナンス ?テスト結果の分析 ?動かないときの分析 ?環境の維持 ?OSのアップデートへの追従 ?OSSのアップデートの追従 ?人に依存 ?専任者がいない 3
  • 4. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. テスト自動化サービス(Lynx)とは ? 自動テストを実施する上で必要な事を全て代行 ? テスト対象システム(SUT)の「外側」にテスト自動化システムを構築 ?テスト実施環境構築(ブラウザ、スマホ) ?自動テストの設計 ?テストスクリプト作成 ?テストの実行 ?結果通知?報告 ?スクリプトのメンテナンス ?環境の維持、運用 テスト対象 システム (SUT) 4
  • 5. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 誕生 5 ? 自動操作:Selenium WebDriver ? スクリプト:Java → jar ? 自動起動:WindowsスケジューラでBatch起動 ? エラー通知:メールでJavaのエラーログ送信 SUT
  • 6. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 誕生 6 GUI Tests Acceptance Tests (API Layer) Unit Tests
  • 7. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 誕生 ? 2013/3 // 1. ログイン driver.findElement(By.id("account")).sendKeys("AdminUser"); driver.findElement(By.id("pass")).sendKeys("hcpassword"); driver.findElement(By.cssSelector(".btn.login")).click(); String userActual = driver.findElement(By.cssSelector(".loginAccount")).getText(); assertThat(userActual , is("AdminUser")); // ??操作 driver.findElement(By.id("input1")).sendKeys("XXXXXXXX "); driver.findElement(By.id("input2")).sendKeys("YYYYYYYY"); driver.findElement(By.id("btn1")).click; // ??操作2 driver.findElement(By.id("input3")).sendKeys("AAAAAAAA"); driver.findElement(By.id("input4")).sendKeys("BBBBBBBB"); driver.findElement(By.id("btn2")).click; 7
  • 8. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 誕生 8
  • 9. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 誕生 9 GUI Tests Acceptance Tests (API Layer) Unit Tests
  • 10. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 誕生 ? 2013/5 毎回重複するコーディングが多い ↓ 共通関数化 テンプレート化 ↓ ソースが複雑になる ↓ メンテナンスは私しかできない! 10 顧客が増え た スクリプトが増えた バージョンアップが頻 繁
  • 11. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 誕生 ? 2013/8 見直し // 1. ログイン driver.findElement(By.id("account")).sendKeys(”AdminUser"); driver.findElement(By.id("pass")).sendKeys("hcpassword"); driver.findElement(By.cssSelector(".btn.login")).click(); String userActual = driver.findElement(By.cssSelector(".loginAccount")).getText(); assertThat(userActual , is(”AdminUser")); // ??操作 driver.findElement(By.id(”input1")).sendKeys(”XXXXXXXX "); driver.findElement(By.id(”input2")).sendKeys(”YYYYYYYY"); driver.findElement(By.id(”btn1")).click; // ??操作2 driver.findElement(By.id(”input3")).sendKeys(”AAAAAAAA"); driver.findElement(By.id(”input4")).sendKeys(”BBBBBBBB"); driver.findElement(By.id(”btn2")).click; 毎回同じ!箇所 パターンがある もう一度 ソースから検討してみた 11 都度違う エクセル 自動化 エンジン
  • 12. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 誕生 seq keyword targetKind targetUniqueID inputValue Expect Capture Sleep 1 URL www.xxxxxx.jp/login 2 Sendkey id account AdminUser 3 Senkey id pass hcpassword 4 Click css .btn.login 1000 5 Check css .loginAccount AdminUser TRUE 12 項番 設定項目 必須 値 1 GridServer ○ XXX.XXX.XXX.XXX:4444 2 OS 3 Browser ○ safari 4 version 7.0 5 通知有無 ○ TRUE 6 通知用メールアドレス xxxxxxxxxxx@humancrest.co.jp 7 通知先メールアドレス xxxxxxxxx@humancrest.co.jp 8 スクリーンショット有無 ○ TRUE 9 保存場所 ○ c:tempcapture 10 タイムアウト値 0 ?Project ├─自動テストエンジン.jar ├─Scenario.xlsx │ ├─ Scenario │ └─ Config └─Update.vbs
  • 13. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 誕生 13 フロー図
  • 14. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 成長 ? 対応一覧 14 2014年 2015年 2016年 OSS Ver Up SUT Ver Up 報告書の廃止 Dashboard Gradle レスポンスタイム 測定 DDT Image AWS環境 AWSテスト実行 Git Grid オフショア Config独立 DB Action 結果送信 再起動 Screen
  • 15. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 成長 ? 対応一覧 15 2014年 2015年 2016年 OSS Ver Up SUT Ver Up 報告書の廃止 Dashboard Gradle レスポンスタイム 測定 DDT Image AWS環境 AWSテスト実行 Git Grid オフショア DB Action 結果送信 再起動 Screen Config独立
  • 16. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. ?Project ├─自動テストエンジン.jar ├─Scenario1.xlsx │ ├─ Scenario │ └─ Config ├─Scenario2.xlsx │ ├─ Scenario │ └─ Config └─Update.vbs 成長 ? Lynx構成(改善前) 16 seq keyword targetKind targetUniqueID inputValue Expect Capture Sleep 1 URL www.humancrest.co.jp 2 Sendkey id account AdminUser 3 Senkey id pass hcpassword 4 Click css .btn.login 1000 5 Check css .loginAccount AdminUser TRUE 項番 設定項目 必須 値 1 GridServer ○ XXX.XXX.XXX.XXX:4444 2 OS 3 Browser ○ safari 4 version 7.0 5 通知有無 ○ TRUE 6 通知用メールアドレス XXXXX@humancrest.co.jp 7 通知先メールアドレス XXXXX@humancrest.co.jp 8 スクリーンショット有無 ○ TRUE 9 保存場所 ○ c:tempcapture 10 タイムアウト値 0 同じ処理を共通化したい 実行シナリオ?設定 を自由に変えたい スクリプトは作成できるようになったけど??? メンテナンスする時間は変わらない
  • 17. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 成長 ? Lynx構成(改善後) ?Project ├─Action │ └─Action.xlsx | ├─Actionシート | └─Dataシート ├─Config │ ├─Config.xlsx │ └─Parameter.xlsx ├─Scenario │ ├─Scenario1.xlsx │ └─Scenario2.xlsx └─Screen └─Screen.xlsx 17 seq keyword Target Kind Target UniqueID inputValue Expect DataFile Line DataFile Count Parameter Line Capture Sleep 1 URL www.xxxxxx.jp/login 2 ActionUnit Login 3 Click scr ログインボタン TRUE 2000 ? 共通の処理をひとつにまとめることができるようになった ? ActionをScenarioからCallできるようにした ? ページオブジェクトの導入 ? IdやcssSelectorを一箇所にまとめた(Screen) ? Configが単独で指定できるようになった ? Parameterを使用できるように列を追加
  • 18. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 成長 ? 対応一覧 18 2014年 2015年 2016年 OSS Ver Up SUT Ver Up 報告書の廃止 Dashboard Gradle レスポンスタイム 測定 DDT Image AWS環境 AWSテスト実行 Git Grid オフショア DB Action 結果送信 再起動 Screen Config独立
  • 19. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 成長 ? DDT(Data Driven Testing)への対応 19 No Data1 Data2 ??? DataZZ 1 X-XXX01@humancrest.co.jp test001 ??? 山田太郎 2 X-XXX02@humancrest.co.jp test002 ??? 山田次郎 : : : : : 10 X-XXXZZ@humancrest.co.jp testzzz ??? 山田Z郎 seq keyword Target Kind Target UniqueID inputValue Expect DataFile Line DataFile Count Parameter Line Captur e Slee p 1 URL www.xxxxxx.jp/login 2 ActionUnit Login 10 TRUE 2000 何のデータを何回繰り返すかを 指定して使えるようにした ? DDTの自動テストへの対応 ? スクリプト作成?メンテナンス工数の削減
  • 20. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 成長 ? 対応一覧 20 2014年 2015年 2016年 OSS Ver Up SUT Ver Up 報告書の廃止 Dashboard Gradle レスポンスタイム 測定 DDT Image AWS環境 AWSテスト実行 Git Grid オフショア DB Action 結果送信 再起動 Screen Config独立
  • 21. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 成長 ? テスト結果送信(改善前) ?メールでJavaのエラーログを送信 21 件 名 Lynx-XXX_XXX_ie(8)2013-10-03_175030 内 容 https://XXX.XXX.XXX/XXXX org.openqa.selenium.ElementNotVisibleException: 操作対象(id=XXXX)が表示領域にない為、 操作できません。 Build info: version: '2.35.0', revision: 'c916b9d', time: '2013-08-12 15:42:01’ System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.7.5', java.version: '1.7.0_25’ Driver info: driver.version: unknown at jp.co.humancrest.santacruz.otp.MainLoop.RunScn(MainLoop.java:143) at jp.co.humancrest.santacruz.otp.AptKeyword.main(AptKeyword.java:102) ? お客様には不要な内容 ? 作った人しか分からない
  • 22. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 成長 ? テスト結果送信(改善後) ?エラーメールの送信内容 ?メールを見て分かる内容に修正 ?文章だけではなく、操作前後のスクリーンショットを添付 (スクリーンショットの有無はConfigで設定可能) ?チャットツールへの結果送信 ?Chatwork ?Slack ?テスト成功通知を送信 ユーザの要望に合わせたエラーを通知 エラー通知からの結果分析精度向上 22 件 名 Lynx-XXX__XXX_ie(11)2017-02-28_085017 内 容 TestNO:1-15- SEQ:75 処理内容:XXXボタンをクリックする エラー原因:(err_0030)操作対象(id=XXXX)が表示領域にない為、操作できません。 発生時刻:2017/03/08 07:26:18 URL:https://XXX.XXX.XXX/XXXX テストが成功した時も通 知が欲しい メールではなく、チャッ トに通知が欲しい Before After
  • 23. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 成長 ? 対応一覧 23 2014年 2015年 2016年 OSS Ver Up SUT Ver Up 報告書の廃止 Dashboard Gradle レスポンスタイム 測定 DDT Image AWS環境 AWSテスト実行 Git Grid オフショア DB Action 結果送信 再起動 Screen Config独立
  • 24. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 成長 ? レスポンスタイムの測定 ?シナリオ全体の実行時間を測定 ?操作時間を測定 24 特定の処理において、 日々のレスポンスタイム が測りたい Transaction 総処理時間(ms) 実処理時間(ms) トップページ 16000 6900 ログイン 12800 9800 Transaction 総処理時間(ms) 実処理時間(ms) トップページ 20000 7000 ログイン 11100 8000 : : csvファイルに時間を出力 毎日の結果が蓄積される 集計?報告書提出 いつサイトが遅かったかが分かるようになった
  • 25. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 成長 ? 対応一覧 25 2014年 2015年 2016年 OSS Ver Up SUT Ver Up 報告書の廃止 Dashboard Gradle レスポンスタイム 測定 DDT Image AWS環境 AWSテスト実行 Git Grid オフショア DB Action 結果送信 再起動 Screen Config独立
  • 26. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 成長 ? 報告書の廃止(廃止前) ?毎月報告書を作成し、提出 ?1案件あたり、作成に2日程度かかる ?エラーメール以外に結果を知る方法がない 26 作成時間はかかるけど、 月の最後にしか集計結果 が分からない
  • 27. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 成長 ? Dashboardの作成?報告書の廃止 ?Web上でテスト結果の確認ができるようになった ?報告書作成時間を他のことに使えるようになった (当時、1人で4案件の報告書を作成?月あたり、約1週間分の時間ができた!) 27 まだまだ改良中!!!
  • 28. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 成長 ? 対応一覧 28 2014年 2015年 2016年 OSS Ver Up SUT Ver Up 報告書の廃止 Dashboard Gradle レスポンスタイム 測定 DDT Image AWS環境 AWSテスト実行 Git Grid オフショア DB Action 結果送信 再起動 Screen Config独立
  • 29. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 成長 ? オフショアの活用 ベトナム ダナン 29 ? テスト結果の分析 ? スクリプト作成?保守(10名)
  • 30. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 現在 ? 対応一覧 30 2014年 2015年 2016年 OSS Ver Up SUT Ver Up 報告書の廃止 Dashboard Gradle レスポンスタイム 測定 DDT Image AWS環境 AWSテスト実行 Git Grid オフショア DB Action 結果送信 再起動 Screen Config独立
  • 31. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 現在 31 WorkSpaces SeleniumGrid Node (XXX.XXX.XXX.XXX:6666) SeleniumGrid Hub (XXX.XXX.XXX.XXX:4444) EC2 ? Windows Server 2008 R2 Datacenter 64bit ? Intel Xeon CPU E5-2670 v2 @ 2.50 GHz ? RAM 2.00 GB ? EIP ? PrivateIP ? Amazon Linux ? EIP: なし ? PublicIP : XXX.XXX.XXX.XXX ? PrivateIP : XXX.XXX.XXX.XXX Availability Zone ap-northeast-1a Availability Zone ap-northeast-1c Strage (Lynxrun本体と Scenario) Volumeを マウント Dirを共有 Lynx本体とシ ナリオをアップ ロード JenkinsのJob やConfig等の バックアップ
  • 32. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 現在 ? フロー図 32
  • 33. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 現在 33 GUI Tests Acceptance Tests (API Layer) Unit Tests
  • 34. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. SUT SUT 現在(全体アーキテクチャ) 34 : : Lynxのソース Excel管理 LynxDashboard
  • 35. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 現在の規模感 ? 対応キーワード 43種類(クリック、入力、マウスオーバー、、) ? テストステップ数 8万ステップ/日 ? エラー発生数 10件以上/日 ? バグ(デグレ)発見数 約1?2件/月 35
  • 36. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. まとめ 36 要求 必須 内部 外部 オフショア Config Grid AWS環境 DB Gradle 結果送信 AWSテスト実行 Dashboard Image Git 再起動 Action DDT SUT Ver Up 時間測定 OSS Ver Up 報告書の廃止 Screen
  • 37. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. 今後の課題 ? スマートフォンのテストをAWS上へ移行 ? 画像処理の改善 ? Dashboardの改善 ? Lynxのオープンソース化 37
  • 38. Copyright ? 2017 HumanCrest Co., Ltd. All Rights Reserved. ご清聴ありがとうございました。 38

Editor's Notes

  1. 笔颁を準备することから、开放する。