際際滷

際際滷Share a Scribd company logo
WebのテストをPythonでやって
エビデンス函誼恬Iから_慧?
?SeleniumL龍?
#nds47 @civic
お念だれよ
? @civic
? NDS砿尖宀
? Python, Java
書晩三す坪否
書晩三す坪否
? Pythonがメインではありません
? E2Eテストについて
? 皆艶鉛艶稼庄顎馨について
? デモ
融隼ですが
鰻禽皆のk燕宀は讐弗ではない
k燕宀である暴徭附も聞い兵めようと{べて
いる粁Aですので、書わかっている坪否につ
いて鷂罎垢襪箸いμ紊
vじゃなくても僥嶄の附で
k燕できるのがNDS
vじゃなくても
僥嶄の附で
k燕できるのが
NDS
E2E (End to End) テスト
E2Eテスト
? End to Endテスト
? テスト鵑箸覆襯轡好謄爐鯤垢辰謄謄好
? Webシステムの栽?ブラウザを聞って...
? UI
? Webのネットワ`ク俊A
? サ`バ`サイドのI尖
? デ`タベ`ス
E2Eテスト
? g悶テストで_Jした朕を壅び畠何テストするわけ
ではない
? な泣はg悶テストで_Jしているので、畠悶議
なシナリオにそって嘛するかを_Jする
? テストが寄笋如rgもかかるためできるかぎり楚
をpらしたい
★な坪否はg悶テスト?Y栽テストでW_する
エビデンス
? テストがちゃんとg仏されたという^┘┘咼妊鵐坑
? 箭
? 鮫中のスクリ`ンショット┐舛磴鵑晩械に竃薦さ
れてます
? デ`タベ`スのダンプI尖念?I尖瘁
? 荷恬してスクリ`ンショットをとってExcelにNり原け
るだけの碧並...
エビデンス
仝Xのテストg仏しました 
仝わかった。よくやった々
???
仝音醤栽だXが講しい.謄好箸靴燭里 
仝しました 
仝ほんとか 
仝ホントです 垢張┘咼妊鵐
仝よし〕┐譯 
音醤栽はあったが、Xについてテストは
きちんとおこなわれていた^苧になった
皆艶鉛艶稼庄顎馨について
Selenium
? E2Eテストを徭啝するツ`ル
? Y硬いs雰(2004?)
? Selenium 2.0で寄きく笋錣辰
? WebDriver
? 劣坤擧`ジ坪JavaScriptでブラウザを荷恬
Java麿★JSコ`ドにQ★ペ`ジに托めzみ
? 書坤屮薀Ε兇C嬬でブラウザを荷恬
光N冱ZでブラウザのC嬬を荷恬
WebDriver
Selenium WebDriverでWebアプリのテストが笋錣襭念」
http://www.atmarkit.co.jp/ait/articles/1210/05/news104.html
WebDriverによって
? WebDriverによって
? ブラウザを荷恬するのは光ブラウザごとに喘吭され
たC嬬で佩うChromeはブラウザ云悶
? WebDriverへの峺幣をクライアントライブラリから僕
るHTTP)
? クライアントライブラリとしては、HTTPを僕るだけ
だから?な冱Zで喘吭辛嬬
? Selenium ServerをU喇することでxれた侭でも荷
恬できる★SauceLabsなどのサ`ビス
デモ
REPLでブラウザを荷恬
h廠B
? クライアントライブラリにPythonを聞喘
? Seleniumモジュ`ルのインスト`ル
$ pip install selenium
?ipython というREPLh廠でしてみます
REPLで_J
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.google.com")
q = driver.find_element_by_name('q')
q.send_keys("LIT_k宀茶氏")
q.submit()
driver.screenshot()
driver.quit()
デモ
pythonのunittestでテストコ`ド峰
テストプログラム晒
? Pythonのテストコ`ドとして峰
? 淵謄好肇薀ぅ屮薀unittestを聞喘する箭
蒙にSelenium喘に蒙晒しなくてよい
class MyTest(unittest.TestCase):
def test_mytest(self):
driver = webdriver.Firefox()
driver.get("www.google.com")
....
テストメソッド-念磯
テストメソッド-朔磯
勣泣をかいつまんで
? エレメントの函誼 find_element?
driver.find_element_by_name('q')
? キ`秘薦
element.send_keys('cheese!')
? スクリ`ンショット函誼
driver.get_screenshot_as_file("filename")
? 棋C
ui.WebDriverWait(driver, 10).until(...)
テストコ`ドの峰の碧圭については、
ダラダラといてしまったが、メンテしやす
くiみやすいコ`ドにすべき
★ ペ`ジオブジェクトパタ`ン
http://www.seleniumhq.org/docs/06_test_design_considerations.jsp#page-object-design-pattern
SauceLabsを聞った
クロスブラウザでのテスト
SauceLabs
? ブラウザのg佩h廠を戻工してくれるサ`ビス
? Selenium Remote WebDriver
デモ
SauceLabsでリモ`トのブラウザでテスト
Remote WebDriver
? Remote 安艶恢禽姻庄厩艶姻を聞うだけでテストコ`ドは揖じ
まとめ
まとめ
? Seleniumを聞えばブラウザの荷恬を徭啝できる
? 光N冱ZPythonふくむでテストコ`ドをける
? E2Eのテストのき圭は垢健が駅勣
? すべてをW_するテストはユニットテストの圭で
? テストをがんばりすぎない

More Related Content

#nds47 WebのテストをPythonでやってエビデンス函誼恬Iから_慧