0
Python Developers Camp 2008  冬  in  松本
テスト自動化 Buildbot & Selenium http:// 清水川 .jp/
アジェンダ <ul><li>Buildbot </li></ul><ul><ul><li>実行の流れ </li></ul></ul><ul><ul><li>デモ </li></ul></ul><ul><ul><li>しくみ </li></ul>...
<ul><li>Buildbot </li></ul>
UnitTest を書く class TestCricket(unittest.TestCase): def test_throw(self): cricket = Cricket() cricket.throw(18,1) self.asse...
テストを実行する [c:utdarts]python ut1.py -v test_throw (__main__.TestCricket) ... ok test_throw_2 (__main__.TestCricket) ... ok t...
Subversion に保存する .java .c .py コミット!
Buildbot に通知
自動テスト [c:utdarts] python ut1.py ...... --------------------------------------------- Ran 6 tests in 0.000s OK
テスト結果を Web で閲覧
時々 UT せずにコミット まあ動くよね
自動テスト失敗 .... FAIL: test_throw_mix_all (__main__.TestCricket) ---------------------------------------------------- Tracebac...
エラーだと通知やパトランプ Powered by Gainer
<ul><li>Demo </li></ul>
もうちょっと 詳しく
Buildbot  とは <ul><li>継続的インテグレーション(ビルド・コンパイルの自動化) </li></ul><ul><li>Python で書かれている </li></ul><ul><ul><li>Pythonが動作する -> Bui...
Buildbot  の構成 <ul><li>http://buildbot.sourceforge.net/manual-0.7.5.html </li></ul>
Buildbot実行の流れ <ul><li>ビルド実行のトリガー </li></ul><ul><ul><li>SVN/CVS のコミット </li></ul></ul><ul><ul><li>前回のテストからN時間たった </li></ul><...
ビルド実行のトリガー <ul><li>バージョン管理システムの変更 </li></ul><ul><ul><li>Subversion </li></ul></ul><ul><ul><li>CVS </li></ul></ul><ul><ul><...
ビルドステップ <ul><li>master.cfg ファイルに記述 </li></ul><ul><li>中身は Python プログラム </li></ul><ul><li>スレーブごとにビルド内容やビルドトリガーを設定することも可能 </l...
ユースケース  1 <ul><li>Python( 本体 ) の場合 </li></ul><ul><li>ソースコードのアップデート (trunk/branch)  </li></ul><ul><li>configure </li></ul><...
ユースケース  2 <ul><li>Web アプリの場合 </li></ul><ul><li>ソースコードのアップデート (trunk/branch) </li></ul><ul><li>ユニットテスト </li></ul><ul><li>ファ...
Buildbot 使ってるツール類 <ul><li>Buildbot, Twisted, ILM, Free Geek, Mono, SpamAssassin, Boost, Zope, OpenID, Python, KDE, Enfold ...
参考リンク <ul><li>Buildbot:  本家 http://buildbot.net/ </li></ul><ul><li>Buildbot:  マニュアル (0.7.5) http://buildbot.net/repos/rele...
<ul><li>Selenium </li></ul>
Selenium <ul><li>ウェブアプリ用自動テスト用フレームワーク </li></ul><ul><li>JavaScript  でブラウザを制御 </li></ul><ul><li>ThoughtWorks  が開発->オープンソース化...
マルチ OS ・ブラウザ対応 <ul><li>OS </li></ul><ul><ul><li>Windows </li></ul></ul><ul><ul><li>Mac </li></ul></ul><ul><ul><li>Linux </...
テスト実行画面 テスト実行エリア テスト操作 テストケース テストスイート
Selenium テストの書き方 – テストケース <ul><li>HTML テーブルでブラウザの動作と期待される結果を表現 </li></ul>コマンド一覧 http://www.openqa.org/selenium-core/refere...
Selenium IDE <ul><li>Firefox Extension </li></ul><ul><ul><li>OS に依存しない </li></ul></ul><ul><ul><li>インストールが簡単 </li></ul></ul...
SeleniumIDE でテストコード作成・生成 <ul><li>ブラウザの操作をレコードし、Selenium コマンドに変換 </li></ul><ul><li>コマンドの追加・編集 </li></ul><ul><li>作成したテストケースを...
Selenium RC <ul><li>http://www.openqa.org/selenium-rc/tutorial.html </li></ul>
Selenium Server の役割 <ul><li>クライアントからコマンドを受け取る </li></ul><ul><li>ブラウザのプロキシサーバー </li></ul>
Selenium RC クライアント <ul><li>さまざまな言語に対応 </li></ul><ul><li>(各言語のテストフレームワークの上にドライバーは作成されている) </li></ul><ul><li>- Java(JUnit) <...
例 :Python  ドライバ >>> sel = selenium(&quot;localhost&quot;, 4444, &quot;*firefox&quot;, >>>  &quot;http://www.google.com/web...
参考リンク <ul><li>Open QA </li></ul><ul><ul><li>http://www.openqa.org/ </li></ul></ul><ul><ul><li>Selenium-Core, Selenium-RC な...
Buildbot with Trac <ul><li>Using Buildbot and Trac together http://buildbot.net/trac/wiki/BuildbotAndTrac </li></ul>発表予告して...
Upcoming SlideShare
Loading in...5
×

Python Autotest pdc2008w

2,918

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,918
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "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>発表予告していましたが 今回は時間切れでした ... この資料の元を作成してくれた 同僚のジョージさん、ありがとう!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×