Python Autotest pdc2008w
Upcoming SlideShare
Loading in...5
×
 

Python Autotest pdc2008w

on

  • 3,172 views

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

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

Statistics

Views

Total Views
3,172
Views on SlideShare
2,515
Embed Views
657

Actions

Likes
1
Downloads
11
Comments
0

6 Embeds 657

http://www.freia.jp 389
http://makopi23.blog.fc2.com 182
http://shimizukawa.bitbucket.org 40
http://control.blog.fc2.com 37
http://webcache.googleusercontent.com 8
http://new.freia.jp 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Python Autotest pdc2008w Python Autotest pdc2008w Presentation Transcript

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