casper js エスキュービズム勉強会0718

21
CasperJS による機能テスト⾃動化 画像: http://docs.casperjs.org/en/latest/

Upload: -

Post on 19-Jun-2015

305 views

Category:

Technology


3 download

DESCRIPTION

7月18日に行われたエスキュービズム・テクノロジー社内勉強会資料になります。

TRANSCRIPT

Page 1: Casper js エスキュービズム勉強会0718

CasperJSによる機能テスト⾃動化

画像: http://docs.casperjs.org/en/latest/

Page 2: Casper js エスキュービズム勉強会0718

もくじ

1. はじめに

2. 機能テストへの活⽤

3. 開発者の⽅へ

4. まとめ

Page 3: Casper js エスキュービズム勉強会0718

1.CasperJSとは

• CasperJS is an open source navigation scripting navigation scripting navigation scripting navigation scripting & & & & testing utilitytesting utilitytesting utilitytesting utility written in Javascript for the PhantomJS WebKit headless browser and SlimerJS (Gecko).

• PhantomJSというヘッドレスブラウザを便利に操ってWebサイトを⾃由に操作できる。

• 画⾯のテストをするための便利機能がある。

出典: http://casperjs.org/index.html

Page 4: Casper js エスキュービズム勉強会0718

1.CasperJSを使う

• 簡単に使えます

– CasperJS をインストールする

– PhantomJS をインストールする

– CoffeeScript (またはJavaScript)で書く

Page 5: Casper js エスキュービズム勉強会0718

2.テストへの活⽤

•影響範囲の⼤きい改修– PHP バージョンアップ– 新Package

 → 機能テストに使う  •パフォーマンスの課題

– 商品○○○万件 店舗○千店… → データ作成に使う

Page 6: Casper js エスキュービズム勉強会0718

2.使⽤例(1) 会員登録

•TOP ↓•規約 ↓•個⼈情報⼊⼒ ↓•確認 ↓•完了

画⾯に沿って、これを⾃動でやってもらいます

Page 7: Casper js エスキュービズム勉強会0718

2.使⽤例(1) 会員登録

• おまじない → TOP

Page 8: Casper js エスキュービズム勉強会0718

2.使⽤例(1) 会員登録

• TOP → 規約

Page 9: Casper js エスキュービズム勉強会0718

2.使⽤例(1) 会員登録

• 個⼈情報⼊⼒ → 確認

Page 10: Casper js エスキュービズム勉強会0718

2.使⽤例(1) 会員登録

• 確認 → 完了

Page 11: Casper js エスキュービズム勉強会0718

2.使⽤例(2) 店舗登録(たくさん)

• config にこんな感じで設定します

Page 12: Casper js エスキュービズム勉強会0718

2.使⽤例(2) 店舗登録(たくさん)

• 繰り返し画⾯をたたきます

Page 13: Casper js エスキュービズム勉強会0718

3.開発者の⽅へ

• ドキュメントは公式がよい• Stack Overflowなど、英語の情報はまあある

• ⽇本⼈は、画⾯キャプチャとるくらいしかしてない(⼈が多い)

Page 14: Casper js エスキュービズム勉強会0718

3.EC-Orangeでのディレクトリ構成

html/core/protected/tests/+--capture #キャプチャ保存+--fixtures| +--functional #テストデータ(機能テスト⽤)+--functional #機能テスト本体| +--exec #実⾏ファイル群| +--routines #各処理のスクリプト群+--performance #負荷テスト⽤+-- casper_config.coffee #設定ファイル+-- casper_routine.coffee #共通処理

Page 15: Casper js エスキュービズム勉強会0718

3.Tips alertを使う

• こういうのを書いておくと

処理完了alertを待って、次に進める

Page 16: Casper js エスキュービズム勉強会0718

3.Tips alertを使う

•ちなみに、 alert は勝⼿に OK になります。

Page 17: Casper js エスキュービズム勉強会0718

3.Tips popup

•Popupの画⾯– ポップアップが消えて– 親画⾯が更新されるのを待って– 親画⾯の表⽰確認

Page 18: Casper js エスキュービズム勉強会0718

3.Tips popup

•Popupの画⾯– ポップアップが消えて– 親画⾯が更新されるのを待って– 親画⾯の表⽰確認

→ やっかい  eventをうまく制御してやる必要がある と思う。  popup.closed をうまく使って waitFor するとか

Page 19: Casper js エスキュービズム勉強会0718

3.課題

• 全体を通すテストランナー的なもの

• 冪等性– データの作り⽅、消し⽅

• ⾃動テスト作成(だれでもテストエンジニア)– Resurrectio : ⾃動でCasperJSのテストコードを⽣

成するChrome拡張– js2coffee:JSをCoffeeSciptに変換してくれるサイト

Page 20: Casper js エスキュービズム勉強会0718

4.まとめ

• あまり触らない個所が知らないうちにデグレないために、テストを増やしていきましょう。

• HTMLとEC-Orangeを理解し、寿命が⻑く、再利⽤の効くコードを。

Page 21: Casper js エスキュービズム勉強会0718

参考リンク集

http://casperjs.org CasperJS公式http://casperjs.readthedocs.org/en/latest/index.html

CasperJSドキュメント集http://coffeescript.org/ CoffeeScript公式http://yakinikunotare.boo.jp/orebase/index.php?XML%2FXPath%2FXPath%A4%CE%BD%F1%A4%AD%CA%FD

XPathの書き⽅http://www.moongift.jp/2013/12/resurrectio-casperjs向けのテストコードをwebブラウザ上で⽣成/ Resurrectiohttp://js2coffee.org/ JS→Coffee