ithr-school

Тестирование

Тестировщик

Тест-кейсы

Тест-раны

Окружение

Продукт

Определение по ISO

  • Исследование, испытание ПО
  • Проверяет, что продукт работает как должен
  • Есть набор тест-кейсов

Quality Assurance

QA

Почти тоже самое

(в обиходе одно и тоже)

Тестирование бывает

По объекту тестирования

Функциональное тестирование

  • Всё работает по ТЗ
  • Решает ту задачу, которую должно
  • Не решает задачи, которое не должно

Нагрузочное тестирование

  • Выдерживает нужную нагрузку (не падает)
  • Выдерживает нагрузку (работает быстро)
  • Выдерживает нагрузку (нет деградации функциональности)

Юзабилити/аксесабилити тестирование

  • Кнопку можно найти
  • Слепой может пользоваться
  • Большой и маленький экран не мешают

Тестирование безопасности

  • Нельзя намеренно сломать (особенно известными способами)
  • Нельзя украсть данные пользователя
  • Нельзя распространять неправильную информацию

Тестирование совместимости

  • Проверяем что новое не ломает старое (сохраняем обратную совместимость)
  • Проверяем что новое работает на старых данных (правильно выполняет миграции)

По знанию о системе

Метод черного ящика

  • Про реализацию ничего не известно
  • Можно найти нестандартные сценарные баги 
  • Исходим не из реализации, а из задачи (ТЗ или документации)

Метод серого ящика

  • Про реализацию что-то известно
  • Обычная жизнь ручного тестировщика или тестировщицы
  • Смотрим на ТЗ, знаем что добавили разработчики

Метод белого ящика

  • Про реализацию всё известно
  • Доступен исходный код приложения, можно проверять разные гипотезы
  • Есть размах для проверок безопасности
 

По степени автоматизации

Ручное тестирование

  • Работаем как обычный пользователь
  • Если тестируем как белый ящик, имеем доступ к админкам и настройкам системы
  • Проверяем тест-кейсы, ищем баги, несложно представить
  • Нужен навык

Мануальный тестировщик

  • Навык составлять тест кейсы
  • Навык описывать баги
  • Глубокое понимание продукта и сценариев работы с ним

Автоматическое тестирование

  • Пишем тесты — код, который эмулирует поведение пользователя на разных уровнях
  • Тесты пишутся на уровне приложения, на приёмочном уровне и т.д.
  • Покрываем те же кейсы, что и ручное тестирование
  • Не заменяет ручное тестирование

Покрытие тестами

  • Можно автоматически анализировать какой код покрыт тестами, а какой нет
  • 100% покрытие тестами — хорошая метрика

Инженер автоматизации тестов

  • Jenkins / Gitlab CI (делает CI)
  • Yandex Tank, JMeter (нагрузочное тестирование)
  • Selenium (приёмочное тестирование фронтенда)
  • Appium (приёмочное тестирование мобилок)
  • ??? (Юнит тесты)

По степени изолированности

Модульное (юнит) тестирование

  • Почти всегда делается разработчиком
  • Тестирует блоки кода, часто функции
  • Окружение во время тестов мокают
  • Автоматическое

Интеграционное тестирование

  • Часто делается разработчиком
  • Тестирует взаимодействие между компонентами
  • Окружение во время тестов мокают
  • Почти всегда автоматическое

Системное тестирование

  • Часто делается разработчиком
  • Тестируется вся система в сборе
  • На этом этапе возможно ручное тестирование

По назначению

Смок-тестинг (дымовой)

  • Небольшие тест-кейсы, покрывающие всё пространство приложения
  • Проверяют базовые вещи
  • Выполняется часто, при любых изменениях
  • Интересная история названия

Регрессионное тестирование

  • Проверяем всё приложение, все тест-кейсы
  • Выполняется перед релизом
  • На время теста изменения замораживаются
  • Относительно долго идёт
  • Первый кандидат на автоматизацию

Приёмочное тестирование

  • Проверяем по ТЗ
  • Проверяем полноценные сценарии использования        (end-to-end, e2e)
  • Перед сдачей внешнему или внутреннему заказчику
  • Относительно долго идёт
  • Сложно автоматизируется

По позитивности

Позитивное

Негативное

Адские практики

Test Driven Development (TDD)

  • Парадигма написания программ, когда сначала пишется тест на заглушечную функцию
  • Проверяется что тест падает
  • Пишется решение, которое проходит тесты
  • Повторяется, пока все не будет готово
  • Рефакторинг!

Системы отслеживания ошибок

  • Специальные системы, которые собирают все ошибки, необработанные программой (исключения)
  • Собирают разную информацию в момент падения: последние логи продукта, параметры запроса и т.д.
  • Классные

Системы хранения тест-кейсов

  • Специальные системы в которые можно заносить тест-кейсы и размечать их
  • Запускать тест-раны, связывать, помечать падения и т.д.
  • Классные

Как мы живём в синдикаторе

Вот так

  • Придумали фичу
  • Сделали фичу
  • Покрыли тест-кейсами фичу
  • Разметили тест-кейсы
  • Провели тест-ран
  • Автоматизировали что можно
  • Подготовили релиз
  • Сделали регрес
  • Сделали релиз

Где живут QA

В фича-командах

  • Сидят рядом с разработчиками и покрывают тестами / тестируют продукт
  • Советуют разработчику как ему жить
  • Советуют продакту как жить продукту

В отделах

  • Сидят большим отделом и делают тестирование
  • Общаются только со своим тимлидом
  • Хорошая концентрация и обмен навыками автоматизированного и ручного тестирования

В душах разработчиков

  • Сидит в голове у разработчика
  • Довольно часто бывает в небольших командах
  • Просто одна из ролей в команде
  • Не всегда её любят

В аутсорсе

  • Вот ТЗ
  • Вот продукт
  • Вот код (иногда)
  • Гоните тесткейсы
  • Гоните автотесты
  • Гоните репорты

что-нибудь ещё?

Тестирование

By b0g3r

Тестирование

QA и всё про это

  • 198