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
73
Как мы заставили роботов тестировать
Про автоматизацию тестирования веб-приложений
Paul Stashevsky
October 05, 2013
Tweet
Share
More Decks by Paul Stashevsky
See All by Paul Stashevsky
Инструменты для тестирования веб-приложений
shiron
0
110
Управляя автоматизацией тестирования
shiron
0
150
Эпидемиология.pdf
shiron
0
67
Почем автотесты?
shiron
0
230
Как управлять автоматизацией тестирования?
shiron
1
210
Автоматизация тестирования как сервис
shiron
0
180
Other Decks in Programming
See All in Programming
⼤規模⾔語モデルの拡張(RAG)が 終わったかも知れない件について
nearme_tech
23
15k
大規模UIKitベースアプリへのTCAの段階的導入/gradual-adoption-of-tca-in-a-large-scale-uikit-based-app
takehilo
1
180
Git Lint
bkuhlmann
4
750
Micro Frontends for Java Microservices - Devnexus 2024
mraible
PRO
0
500
PHPはいつから死んでいるかの調査
chiroruxx
1
400
Milestoner
bkuhlmann
1
410
Random\Randomizer クラスで日常のあれこれを解決しよう! / Random\Randomizer class solves familiar trouble
cocoeyes02
0
250
ゆるい個人開発のススメ
kuroppe1819
10
990
TCAとKMPを用いた新規動画配信アプリ 「ABEMA Live」の設計
tomu28
1
110
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
230
冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
upamune
0
800
Anthropic Cookbook のおすすめレシピ
schroneko
7
990
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
50
9.2k
Creatively Recalculating Your Daily Design Routine
revolveconf
210
11k
RailsConf 2023
tenderlove
4
540
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.6k
Building an army of robots
kneath
300
41k
How to name files
jennybc
65
93k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
2
1.3k
How GitHub (no longer) Works
holman
304
140k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
116
18k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
9
8.3k
Done Done
chrislema
178
15k
KATA
mclloyd
15
12k
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 Сташевский Павел