Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

サイボウズLiveの開発を支えるSeleniumテスト

14,334 views

Published on

2011/03/08 Shibuya.jsの発表資料です。

Published in: Technology, Business
  • Be the first to comment

サイボウズLiveの開発を支えるSeleniumテスト

  1. 1. サイボウズLiveの開発を支えるSeleniumテスト<br />@kazfuku<br />
  2. 2. 自己紹介<br />福嶋一史<br />http://twitter.com/kazfuku<br />https://cybozulive.com/profile/kazfuku<br />仕事<br />サイボウズLiveの技術責任者<br />好きな言語<br />Java, JavaScript<br />好きなモンスター<br />ナルガクルガ<br />
  3. 3. アジェンダ<br />サイボウズLiveの紹介<br />Seleniumテスト<br />テスト実行時間との戦い<br />
  4. 4. サイボウズLiveの紹介<br />
  5. 5. サイボウズLive<br />ToDoリスト<br />スケジューラー<br />https://cybozulive.com<br />コラボレーションツール<br />無料<br />2009年11月公開<br />グループ<br />グループ<br />ディスカッション<br />掲示板<br />ファイル共有<br />
  6. 6. 構成<br />構成<br />Apache, Tomcat, MySQL<br />言語<br />Java, JavaScript<br />
  7. 7. Seleniumテスト<br />
  8. 8. IDE<br />Selenium<br />jUnit + Selenium RC<br />Selenium IDEは保守で死ねる<br />RC<br />
  9. 9. 自動化<br />Hudson<br />1日2回(夜中と昼休み)<br />失敗したらメール<br />
  10. 10. テストの流れ<br />Shibuya.js<br />Test.js<br />DB<br />
  11. 11. JavaScriptのテストもできる<br /><a id=“good”>いいね!</a><br /><div class=“goodMemberList”><br />selenium.click( “good” );<br />Thread.sleep( 500 );<br />assertFalse( selenium.isElementPresent( “css=.goodMemberList” ) );<br />
  12. 12. テストがあると<br />工数は1.2~1.3倍<br />デグレードが防げる<br />安心してリファクタリングできる<br />
  13. 13. テスト実行時間との戦い<br />
  14. 14. テスト数と実行時間<br />
  15. 15. テストが終わらない<br />ブラウザ(Firefox)の起動が遅い<br />7秒かかる<br />1テストスイートでブラウザを使い回す<br />平均8テスト/テストスイート<br />-> 事実上、起動時間を1/8に<br />
  16. 16. テスト数と実行時間<br />
  17. 17. DBロールバックが大変<br />テスト後には、テスト前の状態に戻さないと他のテストに影響が出てしまう<br />影響するテーブルが多い処理だと、確認コードよりロールバック処理のほうが多くなったり<br />
  18. 18. バックアップとリストアで解決<br />最初のテストの前にバックアップを取る<br />各テストの終わりにリストア<br />ロールバック処理から開放される<br />
  19. 19. テスト数と実行時間<br />
  20. 20. でも遅すぎた<br />DBロールバック(リストア)1回に11秒<br />当時のテスト600個 × 11秒 = 2時間!<br />遅いと実装中に実行するのが嫌になる<br />
  21. 21. 高速化<br />リストア処理時間を測ってみた<br />DROP TABLE, CREATE TABLE 10秒!<br />INSERT 1秒<br />テストでテーブル定義を変更することはないので完全に無駄な処理<br />TRUNCATE TABLE に書き換えると1秒に短縮<br />
  22. 22. テスト数と実行時間<br />
  23. 23. そんなこんなで<br />Seleniumのテストは、約1600パターンを突破<br />開発者に安心と勇気を与えてくれる頼もしい存在<br />
  24. 24. TEST<br />

×