Первоначально это было опубликовано в Ускоряйте доставку блог
QA в инженерии
Цель команд разработчиков программного обеспечения — максимизировать пропускную способность и стабильность усилий, вложенных в продукт. Я хотел бы изучить, где вписывается в эту цель. Чтобы калибровать, Википедия описывает QA как:
Средство мониторинга процессов и методов разработки программного обеспечения, используемых для обеспечения качества
Из моего опыта назначенная роль выполняет QA, инженер QA. Этот человек проверяет, что разработчики закодировали то, что они намеревались. Инженеры QA проверяют, что усилия разработчика соответствуют ожиданиям управления дизайном и продукта. Вот диаграмма, показывающая упрощенный поток доставки для новой функции, и где QA подходит:
Как упомянутая цель инженера — максимизировать пропускную способность и стабильность. Что мы подразумеваем под максимизацией стабильности? Мы можем заменить «стабильность» на «ожидаемое поведение». Мы хотим максимизировать ожидаемое поведение от нашего продукта. Это ожидаемое поведение может охватить широкий спектр. На одном конце спектра стабильности обеспечивает рабочие потребности. Например, стабильность может означать, что ваш продукт быстро и надежно масштабируется в сценарии с высоким трафиком. На другом конце спектра стабильности обеспечивает запросы пользовательского интерфейса. Например, стабильность может означать, что синяя кнопка имеет цвет и типографику, которые намеревался.
Домен инженера QA — это стабильность. Добавление шага проверки QA к вашему конвейеру доставки оказывает влияние. Что такое компромисс для этой стабильности?
Хорошо
Во -первых, инженеры QA улучшают качество, если они выполняют свою работу. Разработчики делают ошибки. Позвольте мне написать это снова, потому что это факт, и это нормально. Разработчики делают ошибки. QA распространяет бремя ловли ошибок. Это бремя уже разделяется разработчиком, который написал Код, рецензенты и принимающий менеджер по продукту. Проверка QA — это дополнительная проверка.
Во -вторых, перспектива инженера QA является полезным дополнением. Разработчики хотят получить работу кода. Для этого они обычно сосредотачиваются на счастливом пути. Оценки сверстников сосредотачиваются немного меньше на счастливом пути, но, как правило, сочувствуют разработчику. Инженеры QA пытаются сломать код. Это их уникальная перспектива. Код для них является черным ящиком. Это не хорошо расположенный шаблон дизайна, последняя библиотека JavaScript или умный алгоритм. Это то, с чем они взаимодействуют. Они хотят, чтобы это взаимодействие было предсказуемым под давлением.
Наконец, доверие улучшается с шагом QA в конвейере доставки. Аналогии, которые я слышу от менеджеров по продуктам:
- Вы держите полицейский на улице, чтобы предотвратить преступность
- Вы положили за задней стойкой за кувшин
- У вас есть вратарь в качестве последней линии защиты
- Вы можете двигаться 120 миль в час и добраться туда, куда вы идете быстрее, но несчастные случаи будут хуже.
Эти аналогии — плохие абстракции (что, если нам больше не нужны «бит -полицейские»? Что если это больше похоже на «просить кувшина шаг медленнее, чем 50 миль в час»? Что, если машины позволят нам безопасно двигаться 120 миль в час?), Но их намерение ясно. У нас более высокая степень доверия, если мы снижаем нашу терпимость к риску. Если мы соблюдаем правила, мы можем ожидать меньше радикальных актеров, выполняющих ненадежные действия. Если мы отправим нашу работу в QA до его отправки, мы провели должную осмотрительность.
Плохо
Позвольте мне предварительно предвещать этот раздел с предостережением. Мой опыт работы с аутсорсинговыми инженерами QA в другом часовом поясе. Кроме того, я говорю с конвейером доставки веб -разработки. Обратите внимание на эти предостережения! Они имеют огромное значение при обсуждении роли инженера QA. Отрегулируйте следующие пункты в вашу собственную ситуацию; Вероятно, это другое, но связано.
Расходы
Есть финансовые затраты для инженеров QA. Сравните эту стоимость с ценой плохой сборки, делающей ее до производства. Для некоторых продуктов цена плохой сборки выше, чем у других. В веб -разработке откатится, плохая сборка легко. Однако даже в веб -разработке плохая сборка может быть дорогой. QA -инженеры требуют денег. Спросите себя, стоит ли это стоимость.
Пропускная способность
Пропускная способность будет страдать в любое время, когда вы добавляете шаг в свой конвейер доставки. Наша команда QA на семь часов впереди нашей команды разработчиков. Это плохой раскол. Это означает, что любая работа, которую мы заканчиваем, не имеет надежды на проверку в тот же день. Вот приблизительные дополнения времени цикла, когда разработчик создает запрос на тягу, который должен проверить QA:
- +1 день:
- День 1: нет проблем, слияние PR
- +2 дня:
- День 1: у QA есть вопросы, Мы отвечаем
- День 2: QA утверждает, слияние PR
- +X дней:
- День 1: QA находит проблемы, обновления DEV
- День 2: обзоры качества, находит проблемы
- День x: Повторяйте до слияния PR
Ожидание хотя бы одного дня для QA на каждом выпуске — высокая цена.
Стабильность
В PBS, для продукта PBS.org, мы провели эксперимент. У нас не было назначенной роли QA в течение двух месяцев. Из 202 запросов, которые мы поставляли за это время, мы отметили <5% в качестве проблем с качеством. Эти проблемы с качеством были тривиальными по стандартам инженеров и менеджеров продуктов. Я перевел «тривиальный», чтобы означать, что их легко исправить и не повлиял на миссию. Несколько примеров:
- Нажатие космического промежутка на Firefox не воспроизводило/не воспроизводило видео
- Мы отобразили экран «пожертвования» вместо экрана «связанных видео» в конце подмножества видео
- Карусель неожиданно вернулась к предыдущей итерации
Это не были отключения системы или события восстановления (в смысле MTTR). С зрелым, надежным автоматическим тестовым набором. Мы могли бы увеличить пропускную способность с небольшим влиянием на стабильность.
Смягчения
Как вы идете на компромисс на пропускной способности при увеличении стабильности?
Селективный QA
Нам не нужно иметь шаг проверки для каждого изменения. Есть случаи, когда QA более ценен:
Эта диаграмма показывает квадранты риска в качестве важности миссии увеличение сложности развертывания. Существует зеленый квадрант с низким риском для доставки без QA. Есть желтые области осторожности, где вы должны использовать свое усмотрение. Наконец, красный квадрант иллюстрирует высокоэффективную, высокую ценную работу, которая выигрывает от QA.
Переместить QA в рецензирование
Вы можете свернуть шаги и проверку рецензирования в один. Пусть инженеры QA проверяют работу разработчиков по запросу о привлечении Анкет Это все еще влияет на время цикла. Плюсом является то, что он позволяет нам продолжать разработку на основе багажника. Когда мы объединяем запрос на привлечение, он готов к развертыванию. Нет необходимости в управлении бесценным выпуском через Git Cherry Bicking. QA проверил работу, и багажник находится в развертываемом состоянии.
Качественный аудитор
Измените точку, где QA проверяет качество. Инженер QA контролирует продукт в производстве. Они создают проблемы в начале конвейера доставки. Это заключается в контракте с шагом проверки в середине трубопровода. Преимущество подхода заключается в том, что QA не влияет на время цикла. Разработчики и инженеры QA не увязают в хешинге по краям среднего развития. Это сведет к минимуму работы. Однако стабильность производства может снизить. Надежда состоит в том, что аудиторы поймают проблемы и сохранят качество в долгосрочной перспективе.
Автоматизировать 🤖
Напишите и доверяйте своими тестами. Разработчики программного обеспечения становятся ответственными за кодирование своего компаньона QA. Мы сделаем ошибки. Цель состоит в том, чтобы никогда не совершать одну и ту же ошибку дважды.
Саморефлексия
Изучите, где может улучшиться процесс доставки. У вас есть растущее отставание функций? Попробуйте увеличить пропускную способность. У вас есть растущее отставание ошибок? Попробуйте увеличить стабильность. Кроме того, проверьте дорожную карту вашей компании. Ваша команда выполняет долгосрочные планы? Из ваших «больших идей» 2018 года, сколько было достигнуто? Если планы нереализованы, спросите себя, стоит ли амбиции цены на безопасность. Цитируя Никколо Макиавелли Принц :
Все курсы действий рискованны, поэтому осторожность не во избежании опасности (это невозможно), а расчет риска и действует решительно. Сделайте ошибки амбиций, а не ошибок ленивца. Развивайте силу, чтобы делать смелые вещи, а не силу страдать.
Оригинал: «https://dev.to/acceldelivery/the-impact-of-qa-on-continuous-delivery-345m»