1. Автоматизация. Начало
    1. Причина автоматизации
      1. Регрессионное тестирование занимало высокий % времени
      2. Индикатор состояния работоспособности проекта на настоящий момент
    2. Детальное изучение структуры/архитектуры проекта
      1. SFDiPOT
      2. Доп. требования
    3. Состояние тестирования
      1. Фиксированный регрессионный тест-план
      2. Фиксированные тест-кейсы/чек-листы для каждой ЮС
      3. Исследовательское тестирование
    4. Выбор средств автоматизация, основываясь на имеющихся ресурсах
      1. Разработка ведется на C#
  2. Этап 00. SoapUI
    1. Было сделано
      1. Исполнитель
        1. Сотрудник команды тестирования
      2. Созданы тесты для 90% методов
    2. Использование
      1. Ручной запуск в процессе регресса итерации
    3. Проблемы
      1. Смена приоритетов проекта с добавлением веб-интерфейса
      2. Поддержка
        1. Ресурсозатратно поддерживать разработанные тестовые сценарии при постоянно меняющемся проекте
  3. Этап 0. Обучение
    1. Создание автотестов на С#
    2. Selenium
  4. Этап 1. Автоматизация GUI
    1. Было сделано
      1. GUI Tests
        1. TFS, Git, VS, C#, NUnit, PageObject, Selenium
      2. Основные пользовательские сценарии (часть регрессионный тест-кейсов)
      3. Работа над тестами велась имеющейся командой тестирования
    2. Выводы
      1. Работа с автотестами это полная занятость
        1. Необходим специалист по автоматизациии, который будет заниматься только автотестами
        2. Участие программистов в разработке автотестов
      2. Автотесты- это самостоятельный програмный продукт
        1. Необходимо поддерживать
        2. Использовать best-practise для его создания и улучшения
        3. Необходимы code review, CI,...
        4. Работа с багами
        5. ....
      3. Избегать UI автоматизацию, если это возможно
        1. Автотесты не стабильны, если проект находится в стадии разработки
        2. Ресурсозатратны
      4. Используемые ручные тест-кейсы не всегда подходят для автоматизации в том виде, в котором они есть
        1. Применяем техники тест-дизайна для проектирования тест-кейсов
        2. Четко зафиксировать тест- кейсы, которые будут автоматизированы
          1. Пройти их перед началом работ по автоматизации
          2. Часто позволяет выловить баги
      5. Использовать Data-driven подход
        1. Создавать набор тестов не только с валидными типичными значения, но и другими положительными и негативными
  5. Этап 2. Нагрузочное тестирование
    1. Обучение
      1. Jmeter
    2. Спроектированы сценарии тестов
      1. Сотрудник команды тестирования
    3. Согласованы
      1. Сценарии
      2. Цели испытаний
        1. Профили нагрузки
      3. Расписание испытаний
      4. Вид предоставляемой отчетности
    4. Разработаны сценарии нагрузочного тестирования
      1. Сотрудник команды тестирования
    5. Поддержка
      1. При планировании итерации учитываются работы по нагрузочному тестированию
        1. Изменение имеющихся
        2. Создание новых
        3. Проведение тестовых испытаний
  6. Этап 3. Автоматизация API
    1. Специалист по автоматизированному тестированию
      1. Полная занятость
    2. Специалист по тестированию
      1. Подготовил
        1. Четко прописанные сценарии
        2. Набор тестовых данных
    3. Итеративная разработка
      1. TFS
      2. Самостоятельный проект
    4. Стэк технологий
      1. Nunit, REST API, EntityFramework Core
    5. Архитектура
      1. Разделение функционала на небольшие модули, взаимодействующие с контекстом тестовых данных, предоставляющие действия для совершения шага теста, ожидаемые и актуальные тестовые данные
    6. Структура теста
      1. Тест представляет собой набор сценариев, каждый сценарий реализовывает 1 действие и 1 проверку, на основе одних сценариев можно строить другие сценарии
    7. Поддержка
      1. Сотрудники команды тестирования
      2. Своевременное обновление тестовых сценариев
    8. Использование
      1. Регресионное тестирование (ручной запуск тестов)
      2. Ночной автозапуск
  7. Этап 4. Автоматизация GUI....
    1. Исполнители
      1. Специалист по автоматизированному тестированию
        1. Полная занятость
      2. Разработчики основного проекта
      3. Специалисты по тестированию текущего проекта
    2. Модель разработки
      1. Итеративная разработка
      2. Спринт
        1. 2 недели
        2. Четкое формулирование цели
        3. Планирование и оценка трудозатрат
    3. Подготовка
      1. Разработаны и четко прописаны автоматизируемые сценарии
      2. Для стабильности тестов веб-элементам добавлены тестовые классы
    4. Стэк технологий
      1. Nunit, Selenium, EntityFrameworkCore, Dependency Injection (Autofac)
    5. Архитектура
      1. Уникальная архитектура, полученная за счет использования особенностей паттернов MVC и PageObject, использование слоев UI Map, сервисы для взаимодействия с UI, данные, обработчики данных, тесты, система легко расширяется и поддерживается
    6. Структура теста
      1. Тест представляет собой набор сценариев, каждый сценарий реализовывает 1 действие и 1 проверку, на основе одних сценариев можно строить другие сценарии
  8. Помним
    1. Нельзя автоматизировать все, что только возможно
    2. Выбранные средства автоматизации, не решат все проблемы
    3. Только Юнит тесты и TDD не позволяют обеспечить высокое качества выпускаемого продукта
    4. Автоматизацию можно применять не только для этапа непосредственно выполнения тестов, но и для
      1. Подготовки тестовых данных
      2. Автоматического развертывания тестовых стендов
      3. Обработки полученных данных
      4. Генерации тест-кейсов
      5. Подготовка начальных условий
      6. ....
    5. Средст Record and Run недостаточно для создания полноценных проектов
    6. Последовательность создания автотестов
      1. Unit
      2. API
      3. GUI