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
В фича-командах
Сидят рядом с разработчиками и покрывают тестами / тестируют продукт
Советуют разработчику как ему жить
Советуют продакту как жить продукту
В отделах
Сидят большим отделом и делают тестирование
Общаются только со своим тимлидом
Хорошая концентрация и обмен навыками автоматизированного и ручного тестирования
В душах разработчиков
Сидит в голове у разработчика
Довольно часто бывает в небольших командах
Просто одна из ролей в команде
Не всегда её любят
В аутсорсе
Вот ТЗ
Вот продукт
Вот код (иногда)
Гоните тесткейсы
Гоните автотесты
Гоните репорты
что-нибудь ещё?
Made with Slides.com