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.

Python Autotest pdc2008w

3,517 views

Published on

Python auto test with buildbot. (Python 自動テスト)

Published in: Technology
  • Be the first to comment

Python Autotest pdc2008w

  1. 1. Python Developers Camp 2008 冬 in 松本
  2. 2. テスト自動化 Buildbot & Selenium http:// 清水川 .jp/
  3. 3. アジェンダ <ul><li>Buildbot </li></ul><ul><ul><li>実行の流れ </li></ul></ul><ul><ul><li>デモ </li></ul></ul><ul><ul><li>しくみ </li></ul></ul><ul><li>Selenium </li></ul>
  4. 4. <ul><li>Buildbot </li></ul>
  5. 5. UnitTest を書く class TestCricket(unittest.TestCase): def test_throw(self): cricket = Cricket() cricket.throw(18,1) self.assertEqual( cricket.score(18),1) def test_throw_2(self): cricket = Cricket() cricket.throw(18,2) self.assertEqual( cricket.score(18),2)
  6. 6. テストを実行する [c:utdarts]python ut1.py -v test_throw (__main__.TestCricket) ... ok test_throw_2 (__main__.TestCricket) ... ok test_throw_2_1 (__main__.TestCricket) ... ok test_throw_3 (__main__.TestCricket) ... ok test_throw_mix_a2_b1 (__main__.TestCricket) ... ok test_throw_mix_all (__main__.TestCricket) ... ok ------------------------------------------------------------- Ran 6 tests in 0.001s OK OK
  7. 7. Subversion に保存する .java .c .py コミット!
  8. 8. Buildbot に通知
  9. 9. 自動テスト [c:utdarts] python ut1.py ...... --------------------------------------------- Ran 6 tests in 0.000s OK
  10. 10. テスト結果を Web で閲覧
  11. 11. 時々 UT せずにコミット まあ動くよね
  12. 12. 自動テスト失敗 .... FAIL: test_throw_mix_all (__main__.TestCricket) ---------------------------------------------------- Traceback (most recent call last): File &quot;ut1.py&quot;, line 66, in test_throw_mix_all self.assertEqual( AssertionError: 3 != 4 ---------------------------------------------------- Ran 6 tests in 0.018s FAILED (failures=1)
  13. 13. エラーだと通知やパトランプ Powered by Gainer
  14. 14. <ul><li>Demo </li></ul>
  15. 15. もうちょっと 詳しく
  16. 16. Buildbot とは <ul><li>継続的インテグレーション(ビルド・コンパイルの自動化) </li></ul><ul><li>Python で書かれている </li></ul><ul><ul><li>Pythonが動作する -> BuildBot も動作 </li></ul></ul><ul><li>類似ソフト </li></ul><ul><li>Tinderbox (http://www.mozilla.org/tinderbox.html) </li></ul><ul><li>CruiseControl (http://cruisecontrol.sourceforge.net/) </li></ul>
  17. 17. Buildbot の構成 <ul><li>http://buildbot.sourceforge.net/manual-0.7.5.html </li></ul>
  18. 18. Buildbot実行の流れ <ul><li>ビルド実行のトリガー </li></ul><ul><ul><li>SVN/CVS のコミット </li></ul></ul><ul><ul><li>前回のテストからN時間たった </li></ul></ul><ul><li>マスターが各スレーブにビルド命令を出す </li></ul><ul><li>各スレーブがマスターにビルド結果を報告 </li></ul><ul><li>マスターが各スレーブのビルド結果を報告 </li></ul><ul><ul><li>メール </li></ul></ul><ul><ul><li>Waterfall(ブラウザー) </li></ul></ul>
  19. 19. ビルド実行のトリガー <ul><li>バージョン管理システムの変更 </li></ul><ul><ul><li>Subversion </li></ul></ul><ul><ul><li>CVS </li></ul></ul><ul><ul><li>Darcs </li></ul></ul><ul><ul><li>Mercurial </li></ul></ul><ul><ul><li>Arch/Bazaar </li></ul></ul><ul><ul><li>P4 </li></ul></ul><ul><li>スケジューリング </li></ul><ul><ul><li>周期的 </li></ul></ul><ul><ul><li>Cron 風 </li></ul></ul><ul><ul><li>… </li></ul></ul>
  20. 20. ビルドステップ <ul><li>master.cfg ファイルに記述 </li></ul><ul><li>中身は Python プログラム </li></ul><ul><li>スレーブごとにビルド内容やビルドトリガーを設定することも可能 </li></ul><ul><ul><li>ソースコードの階層が変更された </li></ul></ul><ul><ul><li>開発の活発さが異なる </li></ul></ul><ul><ul><li>場合などに便利 </li></ul></ul>
  21. 21. ユースケース 1 <ul><li>Python( 本体 ) の場合 </li></ul><ul><li>ソースコードのアップデート (trunk/branch) </li></ul><ul><li>configure </li></ul><ul><li>make </li></ul><ul><li>make test </li></ul><ul><li>... を様々なハードウェア (Windows/POSIX|32/64 bit) で実行 </li></ul>
  22. 22. ユースケース 2 <ul><li>Web アプリの場合 </li></ul><ul><li>ソースコードのアップデート (trunk/branch) </li></ul><ul><li>ユニットテスト </li></ul><ul><li>ファンクショナルテスト </li></ul><ul><li>テスト失敗時にはメール送信 ( エラーログを添付 ) を定期的 (2 時間間隔 ) に Windows/Linux で実行 </li></ul>
  23. 23. Buildbot 使ってるツール類 <ul><li>Buildbot, Twisted, ILM, Free Geek, Mono, SpamAssassin, Boost, Zope, OpenID, Python, KDE, Enfold Systems, Subversion, GHC, OpenOffice, Jython, OpenSG, NUT, GNOME, Gentoo Linux, wxWidgets.... http://buildbot.net/trac/wiki/SuccessStories </li></ul><ul><li>Python の buildbot ページ http://www.python.org/dev/buildbot/all/ </li></ul>
  24. 24. 参考リンク <ul><li>Buildbot: 本家 http://buildbot.net/ </li></ul><ul><li>Buildbot: マニュアル (0.7.5) http://buildbot.net/repos/release/docs/buildbot.html ユーザーマニュアル </li></ul><ul><li>Buildbot: build/test automation http://buildbot.sourceforge.net/PyCon-2003/buildbot.html BuildBot の概要 (PyCon 2003 の発表資料 ) </li></ul>
  25. 25. <ul><li>Selenium </li></ul>
  26. 26. Selenium <ul><li>ウェブアプリ用自動テスト用フレームワーク </li></ul><ul><li>JavaScript でブラウザを制御 </li></ul><ul><li>ThoughtWorks が開発->オープンソース化 </li></ul><ul><li>Selenium Core </li></ul><ul><li>Selenium IDE </li></ul><ul><li>Selenium RC </li></ul>
  27. 27. マルチ OS ・ブラウザ対応 <ul><li>OS </li></ul><ul><ul><li>Windows </li></ul></ul><ul><ul><li>Mac </li></ul></ul><ul><ul><li>Linux </li></ul></ul><ul><li>ブラウザ </li></ul><ul><ul><li>IE </li></ul></ul><ul><ul><li>Firefox </li></ul></ul><ul><ul><li>Opera </li></ul></ul><ul><ul><li>Safari </li></ul></ul><ul><ul><li>など </li></ul></ul>
  28. 28. テスト実行画面 テスト実行エリア テスト操作 テストケース テストスイート
  29. 29. Selenium テストの書き方 – テストケース <ul><li>HTML テーブルでブラウザの動作と期待される結果を表現 </li></ul>コマンド一覧 http://www.openqa.org/selenium-core/reference.html
  30. 30. Selenium IDE <ul><li>Firefox Extension </li></ul><ul><ul><li>OS に依存しない </li></ul></ul><ul><ul><li>インストールが簡単 </li></ul></ul><ul><li>Selenium 用テストコードの作成・生成ツール </li></ul><ul><li>Selenium Core の実行環境 </li></ul>
  31. 31. SeleniumIDE でテストコード作成・生成 <ul><li>ブラウザの操作をレコードし、Selenium コマンドに変換 </li></ul><ul><li>コマンドの追加・編集 </li></ul><ul><li>作成したテストケースをその場で実行できる </li></ul><ul><ul><li>リプレイ->編集というサイクル </li></ul></ul><ul><li>サーバーにアップロードさせる必要もない </li></ul>
  32. 32. Selenium RC <ul><li>http://www.openqa.org/selenium-rc/tutorial.html </li></ul>
  33. 33. Selenium Server の役割 <ul><li>クライアントからコマンドを受け取る </li></ul><ul><li>ブラウザのプロキシサーバー </li></ul>
  34. 34. Selenium RC クライアント <ul><li>さまざまな言語に対応 </li></ul><ul><li>(各言語のテストフレームワークの上にドライバーは作成されている) </li></ul><ul><li>- Java(JUnit) </li></ul><ul><li>- C#(NUnit) </li></ul><ul><li>- Perl(Test::More) </li></ul><ul><li>- Python(unittest) </li></ul><ul><li>- PHP(PHPUnit) </li></ul>
  35. 35. 例 :Python ドライバ >>> sel = selenium(&quot;localhost&quot;, 4444, &quot;*firefox&quot;, >>> &quot;http://www.google.com/webhp&quot;) >>> sel.start() >>> sel.open(&quot;http://www.google.com/webhp&quot;) >>> sel.type(&quot;q&quot;, &quot;hello world&quot;) >>> sel.click(&quot;btnG&quot;) >>> sel.wait_for_page_to_load(5000) >>> sel.get_title() hello world - Google Search
  36. 36. 参考リンク <ul><li>Open QA </li></ul><ul><ul><li>http://www.openqa.org/ </li></ul></ul><ul><ul><li>Selenium-Core, Selenium-RC など </li></ul></ul><ul><li>Selenium 徹底活用 </li></ul><ul><ul><li>http://labs.gree.jp/presentation/20060824/slides/selenium.html </li></ul></ul><ul><ul><li>Selenium IDE 作者による Selenium の紹介資料 </li></ul></ul>
  37. 37. Buildbot with Trac <ul><li>Using Buildbot and Trac together http://buildbot.net/trac/wiki/BuildbotAndTrac </li></ul>発表予告していましたが 今回は時間切れでした ... この資料の元を作成してくれた 同僚のジョージさん、ありがとう!

×