Прагматичный IT-сервис в стиле Google

Объясняем, как Google подходит к качеству без отдельного отдела QA и в каких случаях тестировщики действительно нужны.

  • Тестирование в запутанной среде
  • Впрочем, это слова. А как это выглядит в жизни?
  • Почему такой расклад не идёт на пользу ни разработчику, ни тестировщику, ни продукту?
  • Неявная ответственность за продукт

почему в запутанных средах использование тестировщиков идёт во вред продукту 15.2.2023 Принято считать, что серьезной IT-компании не обойтись без отдела тестирования. Сегодня мы разберёмся: так ли это?

Тестирование в запутанной среде

  1. Почему такой расклад не идёт на пользу ни разработчику, ни тестировщику, ни продукту?

  2. Почему в Google нет тестировщиков To test or not to test?

  3. Статья опубликована в журнале IT-world

  4. Принято считать, что серьезной IT-компании не обойтись без отдела тестирования.

  5. Воплощая принцип разделения труда, тестировщики более эффективно вылавливают баги, разгружают разработчиков, повышают качество продукта и его ценность.

  6. Мы привыкли к маркировке Q.A. Passed на разной электронике и ожидаем, что с IT-продуктами контроль будет работать так же.

  7. Но разработка — не конвейерное производство.

  8. Мировой опыт (и опыт IT-интегратора kt.team в том числе) говорит о том, что в запутанных средах критерии оценки определяются для каждой фичи — это явно выходит за пределы компетенции обычных тестировщиков. С их привлечением размывается ценность продукта, растёт его себестоимость и сроки разработки, внутри команды начинаются конфликты из-за неправильно разделенной ответственности.

  9. Разберу детально, почему так происходит.

Тестирование в запутанной среде

  1. «Запутанные среды» — это понятие из фреймворка Кеневин, который делит все среды на четыре типа: простые, сложные, запутанные и хаотичные. В линейных (простых и сложных) средах тестировщикам достаточно строго следовать регламенту.

  2. Там всё понятно: достаточно сверить план и факт, «прозвонить детали» или воткнуть прибор в розетку.

  3. Результат тестирования однозначен, продукт либо соответствует регламенту, либо нет.

  4. Но в запутанной среде всё не так. В ней нет финального результата и фиксированного пути, по которому этот результат достигается.

  5. Нет стандарта приемлемого и отличного результатов — только вектор развития.

  6. Типичные для тестирования критерии оценки не совпадают с фундаментальными принципами Agile, которые наиболее эффективны в запутанной среде. В запутанной среде на первый план выходит реакция на изменения и обратную связь, а не регламент.

Впрочем, это слова. А как это выглядит в жизни?

Однажды в IT-компании…

Почему такой расклад не идёт на пользу ни разработчику, ни тестировщику, ни продукту?

Они оба поставлены в условия, когда качество результата уходит на второй план и конфликты неизбежны. Вот факторы, которые их провоцируют.

Неявная ответственность за продукт

Плохо, если разработчики начинают думать, что их задача — поставлять код, а не ценность. В кейсе выше, с разработчиком Петей и тестировщиком Витей, Ю о ценности не думает ни один из них: разработчик думает про количество фич, а тестировщик — про количество багов. Интересы бизнеса остаются за пределами процесса.

Неизбежная бюрократия

Требования к результату меняются в каждом Agole-цикле и в каждой фиче. Чтобы избежать конфликтов, нужно написать критерии оценки к каждой фиче. А это приводит к чудовищному росту бюрократии и времени на разработку регламента. На продукт и у разработчика, и у тестировщика останется гораздо меньше времени.

Постоянное переключение между задачами

  1. Проведите небольшой эксперимент, описанный в книге «Фокус».

  2. Сначала последовательно напишите «мама мыла раму», а потом попытайтесь писать эти слова параллельно: «м… м… р…», «ма. мы. ра.» и т. д.

  3. На какой вариант уйдёт больше времени и сил? В разработке то же самое.

  4. Пете прилетели баги по задаче X («ма.»), он уже с головой погрузился в задачу Z («ра.»).

  5. Ему пришлось вспомнить свой код, дописать («мам.») его или оспорить исправления и опять вернуться в текущую задачу («рам.»).

  6. На одни переключения он потратит больше времени, чем на работу с задачей.

Подберем материалы под вашу задачу

Ответим в течение 30 минут и пришлем релевантные кейсы, схемы или разборы под ваш контекст.

Потеря связи с пользователем

Когда разработчик не держит в голове вариант ошибки или трудности, с которыми может столкнуться пользователь, он не может их предусмотреть. Поэтому разработчик Петя, полностью переложивший на своего тестировщика мысли о том, как пользователь будет взаимодействовать Пока Витя пытается посмотреть на фичу глазами пользователя, Петя теряет связь с реальностью.

Почему в Google нет тестировщиков

Мировые лидеры IT-рынка не используют тестировщиков.

На примере компаний MAANG: Meta* (запрещена в РФ), Apple, Amazon, Netflix, Google — мы видим отношение к идее конвейерного тестирования как к устаревшей концепции.

Хедлайнеры не верят, что привлечение тестировщиков по умолчанию добавляет качественную ценность программному обеспечению. Например, в книге «Как Google тестирует программное обеспечение» авторы указывают, что Feature Developers имеют все необходимое для самостоятельной доставки качественной ценности, а так называемые Software Engineers in Test устарели. Google пишет о продуктовых IT-компаниях, но и в практике сервисных компаний, которые работают по Agile, действует та же логика.

В практиках Agile тестировщики отсутствуют как класс.

Кеневин рекомендует для работы с нелинейными задачами тактику частой поставки ценности и постоянной обратной связи от продуктива. Соответственно, нужен единый центр, ответственный и за поставку ценности, и за получение этой обратной связи — разработчик.

Как только он начинает делить ответственность с тестировщиком, он неизбежно теряет фокус.

To test or not to test?

  1. Исходя из опыта компании kt.team, оптимальный вариант построения процесса — такой, когда разработчик:

  2. Парное программирование Test driven development (тесты пишутся разработчиками до кода)

  3. Это проверенный практикой и работающий способ избежать масштабного отказа.

  4. Протестировали разные схемы работы с тестировщиками и без них.

  5. Уже более года назад на основе проведенных экспериментов мы убрали звено тестирования из нелинейных задач.

  6. Вместо этого активно применяем техники экстремального программирования: изначально думает о ценности, а не о коде; покрывает код тестами и беспокоится о наиболее высокой скорости сбора обратной связи через логирование и дашборды. И еще одно практическое наблюдение: для улучшения качества продукта нужно максимально использовать разные виды обратной связи.

Когда тестировщики нужны

Не буду утверждать, что тестировщики в запутанных средах не нужны вообще никогда. Есть ситуации, в которых без Q.A. в команде не обойтись.

Процесс тестирования специфичный

  1. Например, при создании мобильного приложения.

  2. Есть множество платформ и вариантов устройств, на которых приложение должно корректно работать.

  3. Разработчик может протестировать его работоспособность на нескольких основных платформах и устройствах, но «прогонять» его по всем только силами разработчика не имеет смысла. К этому лучше привлечь Q.A., особенно если используется специфичная аппаратная часть, не имеющая программной эмуляции — например, какие-нибудь редкие контроллеры не производителей второго эшелона.

  4. Привлечение тестировщиков здесь оправдано: ответственность за ценность продукта осталась у разработчика, а за ловлю багов при тиражировании системы на редкие вариации устройств отвечают тестировщики.

  5. Не стоит спихивать на Q.A. тестирование под популярные браузеры: функциональные тесты справляются с такими задачами на тестирование намного эффективнее. К тому же, сейчас не 2010 год, нет никакой проблемы, если в какой-то версии редкого браузера поплывёт кнопка.

  6. Да и автоматизированные средства попиксельного DOM-анализа под любые браузеры есть в легком доступе.

Нужно настроить процессы тестирования в компании

В этом случае компании нужен не рядовой «ловец багов», а менеджер, который думает о глобальных задачах и строит процессы тестирования, исходя из них. Он определяет зоны для тестирования, сертифицирует команды на качество, разрабатывает и внедряет стандарты тест-дизайна, настраивает процессы сбора и реакции на обратную связь от пользователей.

Тестировщик необходим по требованиям безопасности или законодательства

  1. Есть узкие области разработки, которые строго регламентируются особенностями законодательства или особыми требованиями безопасности.

  2. Даже в банковском секторе к таким относится небольшая часть работ, которыми занимаются только технологичные мегакорпорации.

  3. Это компании, в которых много систем, работающих как единое целое на всех континентах и подчиняющихся единой правовой и прочей специфике.

  4. Тестировщики в таких компаниях проверяют как раз соответствие нормам и соблюдение единых стандартов.

  5. Поставка ценности не входит в их зону ответственности: их задача — регулярное чтение кода и выявление конкретной уязвимости.

  6. Обнаружив слабое место, они включают часть автоматизированного теста в код, который потом должен поддерживаться командой.

  7. Такие специалисты — ювелиры в своем деле. В работе им очень помогает наличие в компании сложившейся культура и эталона для оценки экспертизы разработчиков.

Обсудить статью: Прагматичный IT-сервис в стиле Google

Отправить через: