SlideShare uma empresa Scribd logo
1 de 15
Jenkins
JavaScript
CI
             @thunder_mono
アジェンダ


• JavaScriptでのテストについて
• JSTestDriverとは
• JSTestDriver + JenkinsでCI
JavaScriptでのテストについて



• 群雄割拠
 JSの世界はテスティングフレームワークが
 色々ありすぎてもうそれはそれは…
 QUnit, Jasmine, JsTestDriver, BusterJS, Mocha, JSUnit,
 etc....
JavaScriptでのテストについて




• 今回はその中からJsTestDriverを扱います。
 ・『テスト駆動JavaScript』で取り上げられている
 ・比較的新しめで使用感がいい感じ
JsTestDriverとは

• 特徴
 キャプチャ用のサーバーを立て、
 各ブラウザでアクセスしてキャプチャし、
 テスト実行コマンドを打ってテストを
 行うことが出来る
# 1. キャプチャ用のサーバーを立てる
$ java -jar JsTestDriver-1.3.4.b.jar --port 4224

# 2. サーバーにアクセスする
# ブラウザで http://localhost:4224 にアクセス(複数可)

# 3. テスト実行コマンドを流す
$ java -jar ./JsTestDriver-1.3.4.b.jar ¥
  --server http://localhost:4224 ¥
  --config jsTestDriver.conf ¥
  --tests all
# 4. 結果が表示される
setting runnermode QUIET
...
Total 3 tests (Passed: 3; Fails: 0; Errors: 0) (0.00 ms)
   Safari 534.34 Mac OS: Run 3 tests (Passed: 3; Fails: 0; Errors
0) (0.00 ms)
# gemの jstdutilを利用するといくらか便利になります
# ※要ruby環境
$ gem install jstdutil
$ jstestdriver ¥
  --server http://localhost:4224 ¥
  --config jsTestDriver.conf ¥
  --tests all

setting runnermode QUIET
...
Total 3 tests (Passed: 3; Fails: 0; Errors: 0) (1.00 ms)
   Safari 534.34 Mac OS: Run 3 tests (Passed: 3; Fails: 0; Errors
0) (1.00 ms)
JsTestDriver + JenkinsでCI
Jenkinsとの連携はすごい簡単。
簡単な流れを書くと、

•   【ビルド】->「シェルの実行」
    テスト実行コマンドを書く
    その際、JUnit形式のテスト結果XMLを吐かせる

•   【ビルド後の処理】 -> 「JUnitテスト結果の集計」

なお、テスト実行前にブラウザのキャプチャまでは
やっておく必要あり
# 「シェルの実行」に書く内容の例
[javaのパス]java -jar [JsTestDriverのパス]JsTestDriver[バー
ジョン番号].jar
 --server "http://localhost:4224"
 --config [jstestdriverのパス]jstestdriver.conf
 --tests all
 --testOutput [jenkinsのWorkspace以下の適当なディレ
クトリ]testOutput/
 --reset

# 「 JUnitテスト結果の集計」には上記の --testOutputの
内容を記載
その他

• JavaScriptの単体テストのライブラリは
 群雄割拠のため、他のライブラリだと
 どういった状況なのか不明。

• WebKitを使ったヘッドレスブラウザの
 PhantomJSを使えばサクサクテストが可能。
 ただし実際のブラウザではないので
 使いどころに注意が必要。
その他

• Git/SVNなどのSCMでクライアントサイド
 JavaScriptをどう管理すべきか?
 サブモジュール?一元管理?

• 変更に強い単体テストを行うには
 最低限Viewとmodelが別れてないと
 キツいよね・・・
 →Observer楽しいよObserver
その他



• JsTestDriverのサイトにCodeCoverageを
 取得するJarが置いてました。
 これもJenkinsで扱えるみたい(未確認)

• JavaScriptのミニファイもJenkinsでやれるはず
まとめ

• JsTestDriver + Jenkinsの構成であれば
 環境構築は簡単

• むしろJavaScript以外のコードとの兼ね合いや
 他のテストコードとの兼ね合いを
 気にする必要あり

• CodeCoverageとか単体テスト以外の項目にも
 手を出したいところ
参考文献


•   テスト駆動JavaScript
    Christian Johansen 著、長尾高弘 訳
    アスキーメディアワークス 発刊

•   JavaScript continuous integration with Hudson and JsTestDriver
    http://cjohansen.no/en/javascript/
    javascript_continuous_integration_with_hudson_and_jstestdriver

•   0-9 JsTestDriverとphantomjsとJenkinsを使ってのJSの継続的なテスト
    http://0-9.tumblr.com/post/23350719162/jstestdriver-phantomjs-jenkins

Mais conteúdo relacionado

Mais procurados

テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編Hisakuni Fujimoto
 
Html5の通信対戦ゲームをテスト駆動開発で作ってみた
Html5の通信対戦ゲームをテスト駆動開発で作ってみたHtml5の通信対戦ゲームをテスト駆動開発で作ってみた
Html5の通信対戦ゲームをテスト駆動開発で作ってみたYuusuke Takeuchi
 
JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所Koji Nakamura
 
Gruntを導入しよう!の話
Gruntを導入しよう!の話Gruntを導入しよう!の話
Gruntを導入しよう!の話Koji Nakamura
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
Shellを書こう 01 Shellcheckを使おう
Shellを書こう 01 Shellcheckを使おうShellを書こう 01 Shellcheckを使おう
Shellを書こう 01 Shellcheckを使おうKeisuke Oohata
 
Shellを書こう 02 shUnit2を使おう
Shellを書こう 02 shUnit2を使おうShellを書こう 02 shUnit2を使おう
Shellを書こう 02 shUnit2を使おうKeisuke Oohata
 
mod_cluster
mod_clustermod_cluster
mod_clusternekop
 
Jmeter20120421
Jmeter20120421Jmeter20120421
Jmeter20120421hatakyo
 
Selenium webdriver使ってみようず
Selenium webdriver使ってみようずSelenium webdriver使ってみようず
Selenium webdriver使ってみようずOda Shinsuke
 
Functional Testing in #YAPCASIA
Functional Testing in #YAPCASIAFunctional Testing in #YAPCASIA
Functional Testing in #YAPCASIAkyon mm
 
第4回 一撃サーバー構築シェルスクリプト勉強会(もくもく) 発表資料 - さくらのクラウド操作案内
第4回 一撃サーバー構築シェルスクリプト勉強会(もくもく) 発表資料 - さくらのクラウド操作案内第4回 一撃サーバー構築シェルスクリプト勉強会(もくもく) 発表資料 - さくらのクラウド操作案内
第4回 一撃サーバー構築シェルスクリプト勉強会(もくもく) 発表資料 - さくらのクラウド操作案内Yasutaka Hamada
 
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~johgus johgus
 
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成Kiyoshi Sawada
 
実践・ブラウザテスト自動化
実践・ブラウザテスト自動化実践・ブラウザテスト自動化
実践・ブラウザテスト自動化takahiro sakuma
 
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会Yasutaka Hamada
 
EWD 3トレーニング・コース #29 ewd-xpress を Linux systemdでサービスとして稼働させる
EWD 3トレーニング・コース #29 ewd-xpress を Linux systemdでサービスとして稼働させるEWD 3トレーニング・コース #29 ewd-xpress を Linux systemdでサービスとして稼働させる
EWD 3トレーニング・コース #29 ewd-xpress を Linux systemdでサービスとして稼働させるKiyoshi Sawada
 
MySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slaveMySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slaveTakanori Sejima
 
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させるEWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させるKiyoshi Sawada
 

Mais procurados (20)

テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編
 
Html5の通信対戦ゲームをテスト駆動開発で作ってみた
Html5の通信対戦ゲームをテスト駆動開発で作ってみたHtml5の通信対戦ゲームをテスト駆動開発で作ってみた
Html5の通信対戦ゲームをテスト駆動開発で作ってみた
 
JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所
 
Gruntを導入しよう!の話
Gruntを導入しよう!の話Gruntを導入しよう!の話
Gruntを導入しよう!の話
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Shellを書こう 01 Shellcheckを使おう
Shellを書こう 01 Shellcheckを使おうShellを書こう 01 Shellcheckを使おう
Shellを書こう 01 Shellcheckを使おう
 
Shellを書こう 02 shUnit2を使おう
Shellを書こう 02 shUnit2を使おうShellを書こう 02 shUnit2を使おう
Shellを書こう 02 shUnit2を使おう
 
mod_cluster
mod_clustermod_cluster
mod_cluster
 
Jmeter20120421
Jmeter20120421Jmeter20120421
Jmeter20120421
 
Selenium webdriver使ってみようず
Selenium webdriver使ってみようずSelenium webdriver使ってみようず
Selenium webdriver使ってみようず
 
Functional Testing in #YAPCASIA
Functional Testing in #YAPCASIAFunctional Testing in #YAPCASIA
Functional Testing in #YAPCASIA
 
第4回 一撃サーバー構築シェルスクリプト勉強会(もくもく) 発表資料 - さくらのクラウド操作案内
第4回 一撃サーバー構築シェルスクリプト勉強会(もくもく) 発表資料 - さくらのクラウド操作案内第4回 一撃サーバー構築シェルスクリプト勉強会(もくもく) 発表資料 - さくらのクラウド操作案内
第4回 一撃サーバー構築シェルスクリプト勉強会(もくもく) 発表資料 - さくらのクラウド操作案内
 
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
 
Nodejs
NodejsNodejs
Nodejs
 
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
 
実践・ブラウザテスト自動化
実践・ブラウザテスト自動化実践・ブラウザテスト自動化
実践・ブラウザテスト自動化
 
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会
 
EWD 3トレーニング・コース #29 ewd-xpress を Linux systemdでサービスとして稼働させる
EWD 3トレーニング・コース #29 ewd-xpress を Linux systemdでサービスとして稼働させるEWD 3トレーニング・コース #29 ewd-xpress を Linux systemdでサービスとして稼働させる
EWD 3トレーニング・コース #29 ewd-xpress を Linux systemdでサービスとして稼働させる
 
MySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slaveMySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slave
 
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させるEWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
 

Semelhante a Jenkins javascript ci

Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術finoue
 
Integration test with Arquillian and JBoss AS 7
Integration test with Arquillian and JBoss AS 7Integration test with Arquillian and JBoss AS 7
Integration test with Arquillian and JBoss AS 7Takayuki Konishi
 
JasmineによるJavascriptテスト駆動開発
JasmineによるJavascriptテスト駆動開発JasmineによるJavascriptテスト駆動開発
JasmineによるJavascriptテスト駆動開発Yoichi Toyota
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発Kentaro Ohkouchi
 
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システムTomohiro Ohtake
 
フロントエンド開発環境
フロントエンド開発環境フロントエンド開発環境
フロントエンド開発環境Masaki Kawaguchi
 
Javaone2012 BoF2-02 コンテナでテストをまわせ!Java EEへの自動テストの導入
Javaone2012 BoF2-02 コンテナでテストをまわせ!Java EEへの自動テストの導入Javaone2012 BoF2-02 コンテナでテストをまわせ!Java EEへの自動テストの導入
Javaone2012 BoF2-02 コンテナでテストをまわせ!Java EEへの自動テストの導入Takayuki Konishi
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaYuta Kawadai
 
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話Masaki Yamamoto
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめYu Nobuoka
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みChihiro Ito
 
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築Kazuki Takai
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.jsTanUkkii
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
OpenStack on OpenStack with CI
OpenStack on OpenStack with CIOpenStack on OpenStack with CI
OpenStack on OpenStack with CIkanabuchi
 

Semelhante a Jenkins javascript ci (20)

Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
 
Integration test with Arquillian and JBoss AS 7
Integration test with Arquillian and JBoss AS 7Integration test with Arquillian and JBoss AS 7
Integration test with Arquillian and JBoss AS 7
 
JasmineによるJavascriptテスト駆動開発
JasmineによるJavascriptテスト駆動開発JasmineによるJavascriptテスト駆動開発
JasmineによるJavascriptテスト駆動開発
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
 
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
 
Selenium
SeleniumSelenium
Selenium
 
フロントエンド開発環境
フロントエンド開発環境フロントエンド開発環境
フロントエンド開発環境
 
Gradle handson
Gradle handsonGradle handson
Gradle handson
 
Javaone2012 BoF2-02 コンテナでテストをまわせ!Java EEへの自動テストの導入
Javaone2012 BoF2-02 コンテナでテストをまわせ!Java EEへの自動テストの導入Javaone2012 BoF2-02 コンテナでテストをまわせ!Java EEへの自動テストの導入
Javaone2012 BoF2-02 コンテナでテストをまわせ!Java EEへの自動テストの導入
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for Java
 
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話
 
Maven2 plugin
Maven2 pluginMaven2 plugin
Maven2 plugin
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
CLRH_120414_WFTDD
CLRH_120414_WFTDDCLRH_120414_WFTDD
CLRH_120414_WFTDD
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
OpenStack on OpenStack with CI
OpenStack on OpenStack with CIOpenStack on OpenStack with CI
OpenStack on OpenStack with CI
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 

Jenkins javascript ci

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n