Встраивание качества

built-in quality


Олег Неумывакин
тестировщик
oneumyvakin@plesk.com

Что я делаю


- тестирую
- пишу на Go
- ???

О чем доклад

Качество - это метрики

Метрики фокусируют усилия:
- TTM - time to market
- IPU - incident per user/unit
- NPS - net promote score
- TTR - time to resolution
- MAU - monthly active user
- MTTR - mean time to recovery
- MTBF - mean time between failures

Гипотеза: через скорость можно выкачать любую метрику

Качество - это скорость

- если мы не можем "быстро", то это "плохо"
- если мы исправляем баги мгновенно, не важно сколько мы их сделаем
- на большой скорости всё что мешает отвалится
- скорость объективна

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

- это инструмент привнесения "качества" в "продукт" извне
- это время на feedback loop больше нуля
- всегда постфактум, т.е. справа, т.е. поздно
- возможности улучшения качества ограниченны

А может встроить "качество" в продукт?

Цели встраивания качества

- время на feedback loop ноль или меньше
- снижение затрат на обслуживание
- снижение затрат на разработку
- увеличение скорости

Рецепт встраивания качества

- получение качественной обратной связи из эксплуатации продукта
- сделать невозможным создание классов ошибок
- установка дополнительных требований и ограничений
- тестирование должно быть вынужденным
-- думать как не тестировать
-- уменьшать необходимость применения техник тестирования
- производство должно быть вынужденным

Встраивания качества - это подход наделения продукта свойствами, которые делают его невосприимчивым к классам ошибок с целью постоянного увеличения скорости

Промышленные примеры

- XSS / SQL injections в web приложениях
- проверки в компиляторах
- переход на Rust в Firefox

Административные примеры

- Google C++ Style Guide
"As every C++ programmer knows, the language has many powerful features, but this power brings with it complexity, which in turn can make code more bug-prone and harder to read and maintain."

Собственные примеры

- тайм-ауты для выполнения системных команд
- образы VM от вендора вместо собственных
- доставка PHP приложения Docker'ом
- использование Go вместо PHP
- генерация ISO файла для VM

Общие примеры

- "падать раньше"
- "не падать на не критичных проверках"
- "достаточное абстрагирование"
- "намерение на удаление"
- "источники состояния"

Проблемы

- мешает инерция мышления
- не тестировать - страшно
- постоянное сопротивление
- не работает c лютым легаси
- не работает с аутсорсом и фрилансом

Проблемы

- мешает инерция мышления
- не тестировать - страшно
- постоянное сопротивление
- не работает c лютым легаси
- не работает с аутсорсом и фрилансом

Что ещё мы знаем

- Quality at Speed - Atlassian
- How to Build in Quality from Day 1 using Lean QA and Agile Testing - Atlassian

Выводы

- встраивание качества возможно
- встраивание качества выгодней тестирования
- нужно шарить опыт

Вопросы?