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
94
Как мы заставили роботов тестировать
Про автоматизацию тестирования веб-приложений
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
75
Почем автотесты?
shiron
0
240
Как управлять автоматизацией тестирования?
shiron
1
210
Автоматизация тестирования как сервис
shiron
0
210
Other Decks in Programming
See All in Programming
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
580
Go言語はstack overflowの夢を見るか?
logica0419
0
520
Vueのバリデーション、結局どれを選べばいい? ― 自作バリデーションの限界と、脱却までの道のり ― / Which Vue Validation Library Should We Really Use? The Limits of Self-Made Validation and How I Finally Moved On
neginasu
2
550
XP, Testing and ninja testing ZOZ5
m_seki
3
810
コード生成なしでモック処理を実現!ovechkin-dm/mockioで学ぶメタプログラミング
qualiarts
0
250
CSC305 Lecture 08
javiergs
PRO
0
270
実践Claude Code:20の失敗から学ぶAIペアプログラミング
takedatakashi
18
7.8k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
180
スマホから Youtube Shortsを見られないようにする
lemolatoon
27
33k
What's new in Spring Modulith?
olivergierke
1
170
20251016_Rails News ~Rails 8.1の足音を聴く~
morimorihoge
2
680
O Que É e Como Funciona o PHP-FPM?
marcelgsantos
0
190
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
Making Projects Easy
brettharned
120
6.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Designing Experiences People Love
moore
142
24k
Why Our Code Smells
bkeepers
PRO
340
57k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Practical Orchestrator
shlominoach
190
11k
Docker and Python
trallard
46
3.6k
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 Сташевский Павел