ТЕСТИРОВАНИЕКАК ПАРАРАЗРАБОТКА
@p0deje [email protected]
• 7+ лет в тестировании
• Head QA @ Toptal
• Code monkey @ Watir
• (ex) Контрибутор @ Mozilla
АЛЕКСЕЙ РОДИОНОВ
КАЧЕСТВОсоответствие реализации заданным характеристикам
КАЧЕСТВОсоответствие реализации заданным характеристикам
(функциональная спека, дизайн, юзабилити, etc.)
ТЕСТИРОВАНИЕполучение информации о качестве
ЗАЧЕМ?изменение текущих процессов разработки
ЗАЧЕМ?более лучшее качество
ЗАЧЕМ?выше конкурентоспособность
ЗАЧЕМ?увеличение прибыли
N.B. Иллюстрация принципа “why stack” компании ThoughtWorks
КАК?Верификация и Валидация
ВЕРИФИКАЦИЯмы сделали то, что требовалось
ВАЛИДАЦИЯто, что мы сделали, соответствует ожиданиям (клиента, пользователей)
КАК?Требования, планы, кейсы, трэкер и т.д.
КАК?Требования, планы, кейсы, трэкер и т.д. Требования, планы, кейсы, трэкер и т.д.
КАК?Требования, планы, кейсы, трэкер и т.д. Требования, планы, кейсы, трэкер и т.д. Требования, планы, кейсы, трэкер и т.д.
КАК?Требования, планы, трэкер и т.д. Требования, планы, трэкер и т.д. Требования, планы, трэкер и т.д.
КАК?Требования, трэкер и т.д. Требования, трэкер и т.д. Требования, трэкер и т.д.
КАК?Требования и т.д. Требования и т.д. Требования и т.д.
“РЕГРЕССИОННАЯ СПИРАЛЬ СМЕРТИ”
РУЧНОЕ ТЕСТИРОВАНИЕ НЕ МАСШТАБИРУЕТСЯ
КОЛИЧЕСТВО ➜ КАЧЕСТВО
АВТОМАТИЗАЦИЯ ТЕСТИРОВАНИЯ
УРОВНИ
Юнит тесты Интеграционные тесты Системные тесты
ЮНИТ ТЕСТЫ
• Методы и классы
• В 90% случаев разработчики
ИНТЕГРАЦИОННЫЕ ТЕСТЫ
• Взаимодействие отдельных компонентов
• Big bang, bottom-up, top-down
СИСТЕМНЫЕ ТЕСТЫ
• Полностью собранная система
• GUI, Exploratory, Ad hoc, Security, Usability, etc.
Входные данные Тестируемая система Оракул
ТЕСТ
ВХОДНЫЕ ДАННЫЕ
daysInMonthToString(days)
ВХОДНЫЕ ДАННЫЕ
daysInMonthToString(days)daysInMonthToString(10) #=> “10 days”
ВХОДНЫЕ ДАННЫЕ
daysInMonthToString(days)daysInMonthToString(10) #=> “10 days”
daysInMonthToString(50) #=> Error: “No more than 31 days”
АНАЛИЗ ПОГРАНИЧНЫХ ЗНАЧЕНИЙ
… -1 0 31 32 …
АНАЛИЗ ПОГРАНИЧНЫХ ЗНАЧЕНИЙ
… -1 0 31 32 …
Неверно НеверноВерно
АНАЛИЗ ПОГРАНИЧНЫХ ЗНАЧЕНИЙ
daysInMonthToString(-1)daysInMonthToString(0)daysInMonthToString(31)daysInMonthToString(32)
КЛАССЫ ЭКВИВАЛЕНТНОСТИ
Единственное число - day Множественное число - days
КЛАССЫ ЭКВИВАЛЕНТНОСТИ
daysInMonthToString(-1)daysInMonthToString(0)
daysInMonthToString(31)daysInMonthToString(32)
daysInMonthToString(1)
Входные данные Тестируемая система Оракул
ТЕСТ
ОРАКУЛ
• Предсказывает поведение системы
• Определяет результат теста (pass/fail)
• Джеймс Бах / Майкл Болтон: “FEW HICCUPPS”
• Дуг Хоффман: “Таксономия оракулов”
ЧТО ДАЛЬШЕ?Непрерывная интеграция, деплоймент, ATDD, etc.
ЧТО ДАЛЬШЕ?Непрерывная интеграция, деплоймент, ATDD, etc. Оптимизация тестов, инфраструктура, etc.
ТЕСТИРОВАНИЕ? ПАРАРАЗРАБОТКА!
ПАРАДЕВЧеловек в команде разработки, который
не является разработчиком
ПАРАДЕВЧеловек со множеством скиллов
и неограниченный формальными рамками
ПАРАДЕВЦель тестирования - перестать тестировать
ПАРАДЕВ“Test is dead” - Alberto Savoia
@p0deje [email protected]
СПАСИБО!