44
Автоматизация тестирования Уровни. Инструменты. Методы.

Test automation. Part 2. Уровни. Методики. Стек автоматизации

  • Upload
    -

  • View
    36

  • Download
    0

Embed Size (px)

Citation preview

Автоматизация тестирования

Уровни. Инструменты. Методы.

Уровни атоматизации

● Модули

Уровни атоматизации

● Non-GUI функционал● Модули

Уровни атоматизации

● GUI функционал● Non-GUI функционал● Модули

Уровни атоматизации

● GUI функционал● Non-GUI функционал● Модули

?

Уровни атоматизации

● GUI функционал● Non-GUI функционал● Модули

Уровни атоматизации

● GUI функционал● Non-GUI функционал● Модули

Уровни атоматизации

Как исправить?

Уровни атоматизации

Как исправить?● Культура написания обширных unit-тестов

Уровни атоматизации

Как исправить?● Культура написания обширных unit-тестов● Testable API

Методики автоматизации

Методики автоматизации

● Record/Play● Plain old tests● Keyword-driven● Data-driven● TDD/BDD

Методики автоматизации: Record/Play

Чувствительность к:● Изменениям интерфейса● Изменениям в функционале● Внешним данным

Методики автоматизации: Record/Play

● Виртуальный пользователь ● Встроенная поддержка

Система

Интерфейс

Rec/Play

Система

Интерфейс

Rec/Play

Методики автоматизации: Record/Play

Факторы успешного применения● Независимость от контекста● Функциональная стабильность● Независимость от UI● Разделение тестов на UI и логику

Методики автоматизации: Record/Play

● Старый код● Ручные сценарии

неоправданны● Неизменность

интерфейса как требование

● Поведение будет значительно меняться

● Невозможно зафиксировать состояние данных

● Тесты как часть спецификации системы

Методики автоматизации: Plain coding

driver.Url= baseUrl+ "/login/";

driver.FindElement(By.Id("username")).Clear();

driver.FindElement(By.Id("username")).SendKeys("admin");

driver.FindElement(By.Name("password")).Clear();

driver.FindElement(By.Name("password")).SendKeys("admin");

driver.FindElement(By.Name("submit")).Click();

driver.FindElement(By.LinkText("Log out")).Click();

driver.SwitchTo().Alert().Accept();

Методики автоматизации: Plain coding

LoginAs("admin", "admin");

Logout();

Методики автоматизации: Plain coding

Факторы успешного применения● Тесты как полноценный программный

продукт● Высокий уровень владения навыками

программирования

Методики автоматизации: Keyword driven

Window Component Action Data Expected Value

LoginPage DomainComboBox Select CompanyDomain

LoginPage UserIDTextBox EnterText <username>

LoginPage UserPasswordTextBox EnterText <password>

LoginPage LoginButton VerifyAction "loggedIn"

Методики автоматизации: Keyword driven

Факторы успешного применения● Разделение деятельности сценаристов и

разработчиков● Определение уровня абстракции

Методики автоматизации: Data driven

Методики автоматизации: Data driven

Факторы успешного применения

● Параметризация тестов● Сочетание с другими методами

Методики автоматизации: TDD

Методики автоматизации: TDD

Факторы успешного применения

● Поддержка со стороны менеджмента● Фокус на качестве тестов ● Старые тесты - самые ценные ● Ревью и перекрестное написание тестов/кода● Ложное чувство идеальности

Методики автоматизации: BDD

Методики автоматизации: BDD

Факторы успешного применения● Выяснение целей владельцев продукта● Фичи в соответствуют целям● Спецификация наглядным тестом● Вовлечение владельцев в разработку фич и

сценариев.

Методики автоматизации: BDD

Стек автоматизации

Стек автоматизации

Система

Тесты

Стек автоматизации

● Непосредственно тесты

Система

Тесты

Стек автоматизации

● Непосредственно тесты

● Драйвер для работы с системой

Система

Драйвер системы

Тесты

Стек автоматизации

● Фреймворк запуска тестов

● Непосредственно тесты

● Драйвер для работы с системой

Система

Драйвер системы

Фреймворк

Тесты

Стек автоматизации

● Сборщик проекта

● Фреймворк запуска тестов

● Непосредственно тесты

● Драйвер для работы с системой

Система

Драйвер системы

Фреймворк

Сборщик

Тесты

Стек автоматизации

● Сервер CI

● Сборщик проекта

● Фреймворк запуска тестов

● Непосредственно тесты

● Драйвер для работы с системой

Система

Драйвер системы

Фреймворк

Сборщик

CI

Тесты

Язы

к

Стек автоматизации

● Сервер CI

● Сборщик проекта

● Фреймворк запуска тестов

● Непосредственно тесты

● Драйвер для работы с системой

● Язык разработки

Система

Драйвер системы

Фреймворк

Сборщик

CI

Тесты

Язы

к

Стек автоматизации

● Сервер CI

● Сборщик проекта

● Фреймворк запуска тестов

● Непосредственно тесты

● Драйвер для работы с системой

● Язык разработки

● IDE Система

Драйвер системы

Фреймворк

Сборщик

CI

Тесты

IDE

Репозиторий

Стек автоматизации

● Сервер CI

● Сборщик проекта

● Фреймворк запуска тестов

● Непосредственно тесты

● Драйвер для работы с системой

● Язык разработки

● IDE

● Репозиторий

Система

Драйвер системы

Фреймворк

Сборщик

CI

Тесты

Язы

к

IDE

Репозиторий

Стек автоматизации

● TFS, Travis, Jenkins, QAComplete

● CMake, MSBuils, Ant, TestComplete

● xUnit, MSTest, TestComplete

● Непосредственно тесты

● WebDriver, CodedUI, TestComplete

Система

Драйвер системы

Фреймворк

Сборщик

CI

Тесты

Язы

к

IDE

Стек автоматизации: как выбрать?

Тестируемая система

● доступные инструменты● требуемое покрытие по платформам

Стек автоматизации: как выбрать?

Язык разработки тестов

● доступность специалистов● возможность обучения● «кто нам поможет?»● возможности языка● среда разработки

Стек автоматизации: стоимость владения

Внешняя

● лицензии● консультации● обучение● доработка

Внутренняя

● зарплата● обучение● доработка

Стек автоматизации: стоимость владения

● схема оплаты● открытость● портируемость