Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Как мы заставили роботов тестировать
Search
Paul Stashevsky
October 05, 2013
Programming
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Как мы заставили роботов тестировать
Про автоматизацию тестирования веб-приложений
Paul Stashevsky
October 05, 2013
More Decks by Paul Stashevsky
See All by Paul Stashevsky
Инструменты для тестирования веб-приложений
shiron
0
130
Управляя автоматизацией тестирования
shiron
0
220
Эпидемиология.pdf
shiron
0
92
Почем автотесты?
shiron
0
250
Как управлять автоматизацией тестирования?
shiron
1
230
Автоматизация тестирования как сервис
shiron
0
230
Other Decks in Programming
See All in Programming
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
270
Verilogで学ぶCPU自作入門
uyuki234
8
4.2k
The Rails Doctrine Decade
koic
2
600
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
240
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
1.6k
APNsからLive Activityを開始する話
yumnumm
0
170
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
330
Jetpack Compose Mechanisms
skydoves
3
820
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.7k
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5.2k
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
190
Featured
See All Featured
Side Projects
sachag
456
43k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.9k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Claude Code のすすめ
schroneko
67
230k
Product Roadmaps are Hard
iamctodd
55
13k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
600
Designing for humans not robots
tammielis
254
26k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
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 Сташевский Павел