Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Как мы заставили роботов тестировать
Search
Paul Stashevsky
October 05, 2013
Programming
0
88
Как мы заставили роботов тестировать
Про автоматизацию тестирования веб-приложений
Paul Stashevsky
October 05, 2013
Tweet
Share
More Decks by Paul Stashevsky
See All by Paul Stashevsky
Инструменты для тестирования веб-приложений
shiron
0
110
Управляя автоматизацией тестирования
shiron
0
200
Эпидемиология.pdf
shiron
0
73
Почем автотесты?
shiron
0
240
Как управлять автоматизацией тестирования?
shiron
1
210
Автоматизация тестирования как сервис
shiron
0
200
Other Decks in Programming
See All in Programming
Rubyでやりたい駆動開発 / Ruby driven development
chobishiba
1
380
エラーって何種類あるの?
kajitack
5
310
Cursor AI Agentと伴走する アプリケーションの高速リプレイス
daisuketakeda
1
130
Team operations that are not burdened by SRE
kazatohiei
1
210
「Cursor/Devin全社導入の理想と現実」のその後
saitoryc
0
150
LINEヤフー データグループ紹介
lycorp_recruit_jp
0
880
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
250
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
46
30k
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
510
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
390
Java on Azure で LangGraph!
kohei3110
0
170
VS Code Update for GitHub Copilot
74th
1
360
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
140
7k
Docker and Python
trallard
44
3.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Building Adaptive Systems
keathley
43
2.6k
Gamification - CAS2011
davidbonilla
81
5.3k
Unsuck your backbone
ammeep
671
58k
Making the Leap to Tech Lead
cromwellryan
134
9.3k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Site-Speed That Sticks
csswizardry
10
660
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
Rails Girls Zürich Keynote
gr2m
94
14k
Transcript
Как мы заставили роботов тестировать Сташевский Павел, 2ГИС
None
None
Привет:) По образованию: программист По призванию: тестировщик По работе: руководитель
группы автоматизации тестирования ПО
[email protected]
@paulstashevsky
None
None
None
русский english italiano
36 конфигураций
None
Нужен робот!
Что должен уметь робот? 1. Управлять браузером
Что должен уметь робот? 1. Управлять браузером 2. Уметь проверять
Что должен уметь робот? 1. Управлять браузером 2. Уметь проверять
3. Уметь запускаться
1. Управляем браузером
Selenium webdriver
Как установить? 1. Устанавливаем java, если еще не стоит. 2.
Скачиваем selenium webdriver http://selenium.googlecode.com/files/selenium- server-standalone-2.35.0.jar 3. Запускаем java -jar selenium-server.jar
Что под капотом? Python, Ruby, Java, C#, JavaScript, PHP, ...
Selenium webdriver Your awesome App API HTTP HTTP
from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.support.ui
import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Firefox() driver.get("http://www.google.com") inputElement = driver.find_element_by_name("q") inputElement.send_keys("cheese!") inputElement.submit() print driver.title try: WebDriverWait(driver, 10).until(EC.title_contains("cheese!")) print driver.title finally: driver.quit()
Демо!
from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.support.ui
import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Firefox() driver.get("http://2gis.ru") inputElement = driver.find_element_by_id("search-what") inputElement.send_keys("IKEA") inputElement.submit() print driver.title driver.quit()
Демо!
2. Делаем проверки
None
Тест-кейс 1. Предусловия 2. Шаги 3. Ожидаемый результат
unittest
import unittest from selenium import webdriver from selenium.webdriver.common.keys import Keys
class PythonOrgSearch(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() def test_search_in_python_org(self): driver = self.driver driver.get("http://www.python.org") self.assertIn("Python", driver.title) elem = driver.find_element_by_name("q") elem.send_keys("selenium") elem.send_keys(Keys.RETURN) self.assertIn("Google", driver.title) def tearDown(self): self.driver.close() if __name__ == "__main__": unittest.main()
Для чего нужен unittest? 1. Сделать тест-кейс (TestCase) 2. Cделать
предусловия и постусловия (setUp, tearDown) 3. Добавить в тест проверки (assert)
None
3. Управляем запуском
Как запустить тесты?
Как запустить тесты? 1. IDE
Как запустить тесты? 1. IDE 2. Консоль
Как запустить тесты? 1. IDE 2. Консоль 3. Continuous integration
Jenkins
None
Как в 2ГИС?
Jenkins maps. 2gis.ru tests (python) selenium
Полезное почитать 1. http://selenium2.ru/ 2. http://seleniumhq.org/ 3. Kent Beck «Test
Driven Development: By Example»
[email protected]
@paulstashevsky https://speakerdeck.com/shiron/kak-my- zastavili-robotov-tiestirovat Сташевский Павел