kintoneチームを支えるseleniumテスト

15
kintone チチチチチチチ Selenium チチチ サササササササササ ササササ 2015/10/20 Selenium サササ サササササ

Upload: jumpei-miyata

Post on 09-Jan-2017

5.085 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: kintoneチームを支えるSeleniumテスト

kintone チームを支える Selenium テスト

サイボウズ株式会社 宮田淳平2015/10/20 Selenium 勉強会@サイボウズ

Page 2: kintoneチームを支えるSeleniumテスト

2

kintone

Page 3: kintoneチームを支えるSeleniumテスト

kintone

▌3,000 社以上に導入されているクラウド業務改善ツール

▌3 ヶ月に 1 回のペースで機能追加を含むアップデート

▌サーバーサイド: Java 24 万行

▌クライアントサイド: JavaScript 39 万行

▌PM3 人、 PG15 人、 QA20 人くらい

▌多拠点開発PG は東京と大阪、 QA は東京と松山と上海

3

Page 4: kintoneチームを支えるSeleniumテスト

kintone チームの Selenium テストの経緯

▌一度チャレンジしたけどメンテ不能になった大きな UI 変更でほとんど動かなくなってそのまま

放置

▌『継続的デリバリー』を読んで再チャレンジkintone で常にリリースできる状態を保つには

Selenium テストが必須

4

Page 5: kintoneチームを支えるSeleniumテスト

kintone チームの Selenium テスト

▌合計 1,000 テストケース以上

▌QA が試験設計、 PG が自動化

▌Java + Selenium WebDriver公式の Selenium クライアントで構造化している一からやり直すなら Selenide みたいなラッパーライブラリを検討す

5

Page 6: kintoneチームを支えるSeleniumテスト

Selenium テストのライフサイクル

▌新機能実装と同時に受け入れ試験を自動化する試験開始時に受け入れレベルの機能が動作してることが保証される

▌既存機能の回帰試験も手が空いたときに自動化するQA の分析でリスクが高い機能から優先して自動化

▌メインブランチに変更が入るたびにすべてのテストが実行される失敗したら晒しあげられる

6

Page 7: kintoneチームを支えるSeleniumテスト

7

Page 8: kintoneチームを支えるSeleniumテスト

メンテナンス性を上げる

▌PageObject パターンUI 変更がありえるなら UI 層の構造化は必須

▌失敗時のスクリーンショット動画も一時期試したけどリソース使いすぎるのでやめた

▌コード品質を高める製品コードもテストコードも同じくらい大事コード規約、レビューDRY 、 KISS 、 YAGNI

8

Page 9: kintoneチームを支えるSeleniumテスト

安定性を高める

▌リトライ一定回数まで失敗したときにリトライして不安定なテストを救うリトライしたテストは後から分かるようにして直す

▌wait要素を探すときに一定時間探し続けるようにするSelenium のラッパーライブラリならだいたい実装されてるはず

9

Page 10: kintoneチームを支えるSeleniumテスト

実行時間を高速化する

▌余計なテストを作らない本当に重要なテストだけにする単体テスト、 API テストなどでカバーする

▌並列化1,000 テストケースだと直列に実行すると 10 時間以上かかる実行時間が長いとテストが失敗したときの絶望感が半端じゃない

10

Page 11: kintoneチームを支えるSeleniumテスト

Selenium Grid で並列化

▌1,000 テストケースを 48 並列で 20 分くらい

11

hub

node

Page 12: kintoneチームを支えるSeleniumテスト

docker-selenium で環境構築を楽にする

▌Selenium Grid を構築するための docker イメージが提供されているubuntu 上の chrome と firefox

▌高速デプロイ&軽量Selenium のバージョンが上がったときとかに作りなおせばいいの

で楽

12

Page 13: kintoneチームを支えるSeleniumテスト

Selenium Grid を Google Cloud Platform 上で動かす

▌ノード数が増えるとマシンリソースの用意が大変

▌クラウドに移行すれば金の力で解決

▌コスト削減のために Selenium テストのジョブが実行されるごとにインスタンスを作成→削除

▌Google Compute Engine は課金が分単位で最小課金時間が10 分EC2 だと課金が時間単位

13

Page 14: kintoneチームを支えるSeleniumテスト

まとめ

14

Page 15: kintoneチームを支えるSeleniumテスト

WE ARE HIRING!

15

Selenium テスト完備の環境で働きたい方はぜひサイボウズへ!http://cybozu.co.jp/company/job/recruitment/