kintoneチームを支えるseleniumテスト
TRANSCRIPT
kintone チームを支える Selenium テスト
サイボウズ株式会社 宮田淳平2015/10/20 Selenium 勉強会@サイボウズ
2
kintone
kintone
▌3,000 社以上に導入されているクラウド業務改善ツール
▌3 ヶ月に 1 回のペースで機能追加を含むアップデート
▌サーバーサイド: Java 24 万行
▌クライアントサイド: JavaScript 39 万行
▌PM3 人、 PG15 人、 QA20 人くらい
▌多拠点開発PG は東京と大阪、 QA は東京と松山と上海
3
kintone チームの Selenium テストの経緯
▌一度チャレンジしたけどメンテ不能になった大きな UI 変更でほとんど動かなくなってそのまま
放置
▌『継続的デリバリー』を読んで再チャレンジkintone で常にリリースできる状態を保つには
Selenium テストが必須
4
kintone チームの Selenium テスト
▌合計 1,000 テストケース以上
▌QA が試験設計、 PG が自動化
▌Java + Selenium WebDriver公式の Selenium クライアントで構造化している一からやり直すなら Selenide みたいなラッパーライブラリを検討す
る
5
Selenium テストのライフサイクル
▌新機能実装と同時に受け入れ試験を自動化する試験開始時に受け入れレベルの機能が動作してることが保証される
▌既存機能の回帰試験も手が空いたときに自動化するQA の分析でリスクが高い機能から優先して自動化
▌メインブランチに変更が入るたびにすべてのテストが実行される失敗したら晒しあげられる
6
7
メンテナンス性を上げる
▌PageObject パターンUI 変更がありえるなら UI 層の構造化は必須
▌失敗時のスクリーンショット動画も一時期試したけどリソース使いすぎるのでやめた
▌コード品質を高める製品コードもテストコードも同じくらい大事コード規約、レビューDRY 、 KISS 、 YAGNI
8
安定性を高める
▌リトライ一定回数まで失敗したときにリトライして不安定なテストを救うリトライしたテストは後から分かるようにして直す
▌wait要素を探すときに一定時間探し続けるようにするSelenium のラッパーライブラリならだいたい実装されてるはず
9
実行時間を高速化する
▌余計なテストを作らない本当に重要なテストだけにする単体テスト、 API テストなどでカバーする
▌並列化1,000 テストケースだと直列に実行すると 10 時間以上かかる実行時間が長いとテストが失敗したときの絶望感が半端じゃない
10
Selenium Grid で並列化
▌1,000 テストケースを 48 並列で 20 分くらい
11
hub
node
docker-selenium で環境構築を楽にする
▌Selenium Grid を構築するための docker イメージが提供されているubuntu 上の chrome と firefox
▌高速デプロイ&軽量Selenium のバージョンが上がったときとかに作りなおせばいいの
で楽
12
Selenium Grid を Google Cloud Platform 上で動かす
▌ノード数が増えるとマシンリソースの用意が大変
▌クラウドに移行すれば金の力で解決
▌コスト削減のために Selenium テストのジョブが実行されるごとにインスタンスを作成→削除
▌Google Compute Engine は課金が分単位で最小課金時間が10 分EC2 だと課金が時間単位
13
まとめ
14
WE ARE HIRING!
15
Selenium テスト完備の環境で働きたい方はぜひサイボウズへ!http://cybozu.co.jp/company/job/recruitment/