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

13,989 views

Published on

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

Published in: Technology, Business
0 Comments
19 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
13,989
On SlideShare
0
From Embeds
0
Number of Embeds
180
Actions
Shares
0
Downloads
48
Comments
0
Likes
19
Embeds 0
No embeds

No notes for slide

サイボウズ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 />

×