Recommended
PDF
PPT
テスト自動化ツール[Selenium]を検討してみて
PDF
ハイパフォーマンスSeleniumテスト@サイボウズ
PPTX
Selenium2でつくるテストケースの構成について
PPTX
kintoneチームを支えるSeleniumテスト
PDF
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
PDF
PPTX
ノンプログラマのためのSelenium de DDTはじめの一歩
PDF
PDF
PPTX
reg-suitとQA Wolfを活用したVisual Regression Test
PPTX
PDF
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
PDF
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
PDF
大規模な負荷でもドキドキしない為のJava EE
PDF
Appiumのテスト結果レポートをsahaginで作ってみる
PDF
Azureを使って手軽にブラウザテストの自動化をはじめよう
PDF
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
PPTX
Win7 * appium * androidで実機自動テストやってみた。
PPTX
PPTX
PDF
PDF
海外のSeleniumカンファレンスではどんな発表がされているのか2014
PDF
JustTechTalk#10 React開発における自動テスト実践
PDF
「Selenium実践入門」で学ぶテスト自動化の世界
PDF
PDF
PDF
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
PDF
Trac Plugin Developement with Jenkins
PPTX
Developer summit continuous deliveryとjenkins
More Related Content
PDF
PPT
テスト自動化ツール[Selenium]を検討してみて
PDF
ハイパフォーマンスSeleniumテスト@サイボウズ
PPTX
Selenium2でつくるテストケースの構成について
PPTX
kintoneチームを支えるSeleniumテスト
PDF
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
PDF
PPTX
ノンプログラマのためのSelenium de DDTはじめの一歩
What's hot
PDF
PDF
PPTX
reg-suitとQA Wolfを活用したVisual Regression Test
PPTX
PDF
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
PDF
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
PDF
大規模な負荷でもドキドキしない為のJava EE
PDF
Appiumのテスト結果レポートをsahaginで作ってみる
PDF
Azureを使って手軽にブラウザテストの自動化をはじめよう
PDF
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
PPTX
Win7 * appium * androidで実機自動テストやってみた。
PPTX
PPTX
PDF
PDF
海外のSeleniumカンファレンスではどんな発表がされているのか2014
PDF
JustTechTalk#10 React開発における自動テスト実践
PDF
「Selenium実践入門」で学ぶテスト自動化の世界
PDF
PDF
PDF
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Similar to Awsで実現するseleniumテスト高速術
PDF
Trac Plugin Developement with Jenkins
PPTX
Developer summit continuous deliveryとjenkins
PDF
PDF
Code igniterでテスト駆動開発 資料作成中
PDF
PDF
PPTX
PPT
PPTX
テストしなイカ? Seleniumで自動ブラウザテスト
PDF
PDF
PPT
KEY
PDF
PPTX
PDF
PDF
PDF
あなたの安心を高速に守る Container-based CI
PPTX
PDF
G*workshop 2011/11/22 Geb+Betamax
Awsで実現するseleniumテスト高速術 1. 2. 自己紹介
井上 史彰
1981年生まれ 30歳
仕事
株式会社 シャノン
開発エンジニア → 開発マネージャー → QAマネージャー
開発言語
Perl
3. アジェンダ
製品紹介
システムの構成
開発体制
各種メトリクス
自動テスト強化での様々な課題
Jenkins, Selenium, AWS の組み合わせではまった点など
まとめ
3
4. 5. 6. 導入企業
http://www.shanon.co.jp/case/
6
7. 構成
構成
Apache, FastCGI, Postgresql
言語
Perl
機能数
約400 – 500機能 + API
関連アプリ数
内部的には約10個のアプリケーションがAPI連携して動作
7
8. 開発体制
Scrum
スプリント期間は1ヶ月
7人くらいのチームが2つ
開発 : QA = 2 : 1
毎月4週目にバージョンアップ
前月に開発した機能をリリース
8
9. シャノンの自動テストツール
Selenium
テストスイート数: 270, テストケース数: 約3500
FirefoxのIDEで作成/メンテナンス。一部スクリプトも
独自テストツール
API, CSV/XLS, HTMLテンプレート変数, メールテンプレート変数
Jmeter
AppScan
9
10. 11. 12. 13. 14. 15. 16. 17. Seleniumテスト実行環境
クライアント側 サーバー側
https://aaa.mp.
jp
https://bbb.mp
.jp
https://ccc.mp.
jp
17
18. 19. 20. Jenkinsの導入
いつテストが実行されたか分からない
テスト実行にはWindowsPCにログインして手動で実行
誰かが使ってると他の人は使えない → 取り合いに
テストが成功したか分からない
テスト結果もPCにログインして結果のレポートを確認する必要があった
POINT
・最新ののソースコードでテストが実行され、早く開発にフィードバックすることが大事!
Jenkinsを導入したことで、毎日定期的にテストを実行することが可能に
20
21. 22. 23. Seleniumはなぜ安定しない?
How to Lose Races and Win at Selenium
Selenium tests often fail because they’re too fast.
Where a user might wait for a page to load
for a few seconds and then click on a link,
Selenium will interact with a page at the speed of code,
before the page is ready.
The way to fix this is to have Selenium repeat its actions
and assertions until they work.
If you don’t, Selenium races your browser.
http://sauceio.com/index.php/2011/04/how-to-lose-races-and-win-at-selenium/
23
24. spin asserts
def spin_assert(self, msg, assertion):
for i in xrange(60):
try:
self.assertTrue(assertion())
return
except Exception, e:
pass
sleep(1)
self.fail(msg)
POINT
・HTMLスイートを直接SeleniumRCサーバー内で実行する方法だと安定しない
24
25. Exporting the Test for Junit
テストスイートをチェックアウト
リポジトリからHTMLスイートをチェックアウト
Junit形式にエクスポート
Seleniumにあるエクスポート機能を利用
Rhinoを使ってJavaのコードから呼び出す
(今だったらnode.jsでもいいかも)
Javaテストケースのコンパイル
テスト実行、レポート出力
25
26. レポートの拡張
エラー発生時の画面キャプチャ
Junit Attachments プラグインでもできるみたい
26
27. レポートの拡張
実行時の変数表示
レスポンス時間表示
startCommand("verifyTextNotPresent","NG", "", "n");
assertFalse(selenium.isTextPresent("NG"));
endCommand("verifyTextNotPresent", "NG", "", "n");
startCommand("verifyTextNotPresent","ERROR", "", "n");
assertFalse(selenium.isTextPresent("ERROR"));
endCommand("verifyTextNotPresent", "ERROR", "", "n");
27
28. WebDriver/Selenium2
private static WebDriver getDriver(String driverName) {
if (Strings.equals(driverName, "firefox")) {
return new FirefoxDriver();
} else if (Strings.equals(driverName, "chrome")) {
return new ChromeDriver();
} else if (Strings.equals(driverName, "ie")) {
return new InternetExplorerDriver();
} else if (Strings.equals(driverName, "safari")) {
return new SafariDriver();
}
}
WebDriver driver = getDriver(args[0]);
driver.get("http://www.google.com");
28
29. 各種プラットフォーム/ブラウザでのテスト
Windows Linux Mac
Internet Explorer 6 - -
Internet Explorer 7 - -
Internet Explorer 8 - -
Internet Explorer 9 - -
Firefox 3.x -
Firefox Latest -
Chrome Latest -
Safari
POINT
・Javascriptなどブラウザに依存することの確認を行うテストケースを実行
29
30. 31. 実行の長時間化
すべてのテスト1時間くらいで実行したい
1台で同時に5個のテストケースを、さらに10台にすると可能?
31
32. 33. アンチパターン
テスト実行ノードを指定
[実行するノードを制限]でノード名を直接指定
→ 複数台使用しても負荷を分散できない
→ サーバーごとに偏りが出てしまう
テスト実行開始時間の指定
[定期的に実行]で開始時間をずらして指定していた
→ 実行がかぶると負荷が高くなり不安定に
→ テスト待ち時間の無駄
33
34. 対応方針
テスト実行ノード
実行ノードの直指定は止める
テスト実行時にどこかのノードで実行されるか決める
全テストジョブを同時刻に実行開始
実行待ちの時間をなくす
slaveの[同時ビルド数]で負荷を調整
34
35. 変更後の構成イメージ
クライアント側 サーバー側
クライア サーバー
ントA A
クライア サーバー
ントB B
POINT
・すべてのビルドが1つのキューで管理され、順番にどこかのスレーブで実行される
・AWSインスタンスは自動ON/OFF
ビルドキューに溜まっているビルド数に応じて自動で起動/終了する
35
36. ラベル
slaveのラベル設定
slaveにはラベル(タグ)を複数設定できる
テストジョブの[実行するノードを制限]でラベル式を設定
→ 指定したラベルのどこかのslaveでテストが実行される
クライアント側 サーバー側
クライア サーバー
ントA A
クライア サーバー
ントB B
サーバー側とクライアント側で負荷のバランスがうまくいかずテストが安定しない。。
サーバー側とクライアント側を1:1にしないといけない?
36
37. 38. 39. 解決すべき課題
クライアントのPCをどうするか?
社内の余ってるPCを使う?
Saucelab (http://saucelabs.com)
- Seleniumテストをクラウドで(従量課金)
- Sauce OnDemand というJenkinsプラグイン
- 各種ブラウザに対応
- アプリケーションが社内にあるような場合でも利用できる
- 動画でのテストレポート
キューの仕組みをどうするか?
Pluginで使えそうなものはないか?
39
40. Clouds
お名前.com
メリット デメリット
コストパフォーマンス良い スケールしない
(常時稼動させる場合はAWSの1/10ぐらい違 毎回手動でセットアップ
う)
クラスタ構成ができない
FWが無いのでiptablesでセキュリティ確保しなけ
ればならない
AWS
メリット デメリット
APIによるスケーラブルなサーバ管理 常時稼動させるには割高
(イメージ管理、バックアップ 等) (リザーブドインスタンスも有るが、インスタン
スタイプが固定されてしまう)
負荷に応じてスケールアップができる 従量課金なので月額利用料の予測が必要
(機能増につれてメモリも増加するが、
AWSならボタン一つで対応可能)
40
41. スペック比較
AWS お名前.com
(ミディアムインスタンス) (KVM 2GB)
CPU 2 ECU(2 ECU × 1仮想コア) 3コア
メモリ 3.75 GB 2GB
IO速度 36.5 MB/s 133 MB/s
(ddコマンドによる簡易測定 )
Disk容量 8GB~ 200GB~
月額利用料 ¥10,775 ¥1,153
41
42. 43. 44. 45. 46. 47. 48. Seleniumテストの実行フロー
Jenkins
1. テスト
ジョブの実
行
2. 設定情報取得(perl) 2. 設定情報取得(perl)
3. テストケースチェックアウト 3. テストケースチェックアウト
4. セレニウムテストケースの 4. セレニウムテストケースの
エクスポート(java) エクスポート(java)
jUnit jUnit
5. テスト実 5. テスト実
行 行
6. ブラウザ 6. ブラウザ
起動 起動
コマンド コマンド
実行 実行
48
49. 50. Parameterized Trigger Plugin
ビルドのパラメータ化
テストジョブを[パラメータ付きジョブ]として設定
パラメータでテスト実行環境を指定できるように
Trigger parameterized build on other projects
上流のテストジョブで指定したパラメータ値を
下流のジョブに渡す
ビルドの実行
50
51. 52. 53. 新しく製品の自動テストを作るとしたら?
Seleniumテスト
- IDEかプログラムかは製品/機能によって使い分ける
ユニットテストとの切り分けも大事
すべてをSeleniumだけでカバーすることはできない
- 1機能に対して1テストケースにして15分以内に抑える
- 最初からパラレル実行できる構成を意識
テストケース間が依存しないように
a. パラレルで実行すれば短時間で終了できる
b. 変更の際にメンテナンスしやすい
c. テストケースが失敗してもペナルティが少ない
http://sauceio.com/index.php/2011/02/speed-up-your-selenium-tests/
53
54. 55. 56. 57.