「第2回日本Seleniumユーザーコミュニティ勉強会」で発表してきました

こんにちは、kintone チームの宮田です。 第2回日本 Selenium ユーザーコミュニティ勉強会で kintone チームの Selenium テスト運用事例を発表してきました。

Q&Aの補足

発表内容については全員分まとめていただいているブログ記事などもあるので、この記事では自分の発表後の Q&A で出た質問について補足してみます。

どうやってチームでテストを書く運用を整えたのか?

本ブログの「失敗からはじめる Selenium」でも書きましたが、kintone チームの Selenium テストは過去に1度メンテ不能状態になったことがあります。

その後、継続的デリバリー実践アジャイルテストといった本の勉強会を行い、どのような運用をしたらうまく回るのか学びつつ、チームの認識を合わせて進めていきました。実践アジャイルテストの勉強会にはプログラマーだけでなく QA や PM にも参加していただきました。

Selenium テストを片手間で自動化・メンテナンスを続けていくのは厳しいので、関係者の理解が重要だと思います。kintone は信頼性が大事な基幹システムなので基本的な機能が動かないような不具合は絶対に出せない、その上で機能追加のリリース頻度を上げていきたいので、そのために自動テストが必要というのは共感を得られたようです。あとは、単純にチームの文化として新しい改善の導入に積極的なところもあります。レガシー化したソフトウェアの保守の大変さを理解しているメンバーが多かったのもよかったと思います。

Selenium テストの録画はどうやって実現しているのか?

vnc2flv という Python のライブラリを利用しています。 テスト開始時にスクリプトを叩いて録画を開始して、終了時に停止、失敗したテストのみ保存します。 容量が大きくなりがちなので、一定ビルド数までしか保存されないようにしています。

Selenium テストを高速で動かすための実行環境は?

ブラウザですと、Chrome と Firefox はある程度安定して速いです。 PhantomJS がより速いらしいのですが、やはり実ブラウザでないことと、少し前の時点だと安定しないという話を聞いていたのでまだ試していません。 OS は Windows の VM を使っていますが、安定性やリソースの面から Linux+docker を検討中です。 理想的には全環境で実行したいのですが、各 driver 間の挙動の違いを吸収するのもメンテナンスに時間がとられるので、とりあえずは1つ安定する環境をつくって運用してから考えるのがいいと思います。

所感

Selenium は細かな tips などはけっこう情報が転がっているのですが、実際の運用事例は探してもなかなか見つかりません。なので、今回のような Selenium を主題とした勉強会は実際に運用している人たちの話が聞けてありがたかったです。kintone チームのノウハウもまだまだベストプラクティスと呼べるようなものではないですが、少しでも参考にしていただけるところがあればと思い発表させていただきました。企画・運営していただいた日本 Selenium ユーザーコミュニティの皆様ありがとうございました。

最近 E2E テスト自動化は盛り上がりつつあるように感じますが、kintone チームでも Selenium テストのおかげで安心かつ高速な開発が実践できつつあると感じています。 今後もツールの改善やノウハウの共有が進んで、1人でも多くのエンジニアが自動テストの恩恵にあずかることができるようになると幸いです。