53
ТЕСТИРОВАНИЕ КАК ПАРАРАЗРАБОТКА @p0deje [email protected]

2015-03-07 02 Алексей Родионов. Тестирование как параразработка

  • Upload
    -

  • View
    53

  • Download
    0

Embed Size (px)

Citation preview

ТЕСТИРОВАНИЕКАК ПАРАРАЗРАБОТКА

@p0deje [email protected]

• 7+ лет в тестировании

• Head QA @ Toptal

• Code monkey @ Watir

• (ex) Контрибутор @ Mozilla

АЛЕКСЕЙ РОДИОНОВ

КАЧЕСТВО

КАЧЕСТВОсоответствие реализации заданным характеристикам

КАЧЕСТВОсоответствие реализации заданным характеристикам

(функциональная спека, дизайн, юзабилити, etc.)

ТЕСТИРОВАНИЕполучение информации о качестве

ЗАЧЕМ?

ЗАЧЕМ?изменение текущих процессов разработки

ЗАЧЕМ?более лучшее качество

ЗАЧЕМ?выше конкурентоспособность

ЗАЧЕМ?увеличение прибыли

PROFIT!

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]

СПАСИБО!