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