Этот курс предназначен для обучения тестировщиков программированию на языке Java (для тех, кого интересует программирование на С# у нас есть другой курс).
Бытует мнение, что тестировщикам вредно уметь программировать. Якобы это умение мешает им потому, что из-за него они слишком много думают о реализации программы и слишком мало о том, как же её протестировать.
Определенный смысл в этом есть, возможно для кого-то умение программировать действительно служит отвлекающим фактором. Но если вы умеете бороться с искушениями, тогда этот навык может оказаться весьма полезным, потому что он даёт возможность переложить часть своей работы на компьютер.
Да, имеется в виду автоматизацию тестирования. Но под автоматизацией подразумевается не только написание скриптов, которые эмулируют взаимодействие пользователя с графическим интерфейсом программы. Помимо этих скриптов можно автоматизировать генерацию тестовых данных, проверку содержимого базы данных, развёртывание и настройку тестового окружения, проверку отсутствия сообщения об ошибках в лог-файлах, генерацию отчётов, и многое-многое другое.
Сложно ли научиться программировать? Вероятно, бывают люди, для которых алгоритмический стиль мышления абсолютно неприемлем. Но большинство айтишников по крайней мере на интуитивном уровне уже обладают алгоритмическим мышлением. Многие тест-дизайнеры пишут весьма подробные инструкции для ручного тестирования, это почти готовые программы, но предназначенные для "биороботов". Осталось сделать один небольшой шаг и научиться управлять настоящими роботами-компьютерами.
Разучитесь ли вы тестировать, научившись программировать? Вовсе нет, существующие навыки тестировщика от вас никуда не денутся. Но в дополнение к ним в ваших руках появится ещё один инструмент, и весьма мощный. Разумеется, владение навыками программирования не означает, что их нужно применять здесь и там без разбора, стремясь автоматизировать всё подряд. Силу нужно держать под контролем и применять её лишь там, где её применение обосновано. Для этого нужно хорошо овладеть силой, чтобы она подчинялась вам, чтобы это был привычный инструмент с понятными принципами работы, а не магический артефакт, управляемый загадочными заклинаниями.
Ну что ж, довольно слов, пора перейти к делу.
Как и всякий навык, умение программировать нужно тренировать и закреплять. Недостаточно просто прочитать книжку и выучить набор команд. Знать ещё не значит уметь. Поэтому тренинг "Программирование для тестировщиков" будет содержать как теоретические сессии, так и практические задания для самостоятельного выполнения.
Помогите найти ошибку в коде или подскажите, что я сделал не так
Автотест должен заходить на сайт, вводить логин/пароль и нажимать кнопку Войти. Код нужно написать на Python + silenium с применением ООП. Интерпретатор мне выдает Ran 0 tests in 0.000s OK, то есть он не выполняет тестов вообще. Код и сам автотест прикрепил:
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
class MainPageLocators(object):
login_line = (By.ID, 'loginName')
password_line = (By.ID, 'loginPass')
enter_button = (By.ID, 'logButton')
class BasePageElement(object):
def __set__(self, obj, value):
driver = obj.driver
WebDriverWait(driver, 100).until(
lambda driver: driver.find_element_by_id(self.locator))
driver.find_element_by_id(self.locator).send_keys(value)
def __get__(self, obj, owner):
driver = obj.driver
WebDriverWait(driver, 100).until(
lambda driver: driver.find_element_by_id(self.locator))
element = driver.find_element_by_id(self.locator)
return element.get_attribute("value")
class BasePage(object):
def __init__(self, driver):
self.driver = driver
self.driver.get('https://fix-inside.tensor.ru')
class MainPage(BasePage):
def login(self):
element = self.driver.find_element(*MainPageLocators.login_line)
element.send_keys('check_rigth_user')
def password(self):
element = self.driver.find_element(*MainPageLocators.password_line)
element.send_keys('qwerty123')
def button_click(self):
element = self.driver.find_element(*MainPageLocators.enter_button)
element.click()
class main(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
#driver.get('https://fix-inside.tensor.ru')
def new_test(self):
main_page = MainPage(self.driver)
main_page.login()
main_page.password()
main_page.button_click()
def tearDown(self):
self.driver.close()
if __name__ == "__main__":
unittest.main()