дата публикации
13.07.23
минут
7'
формат
статья
Все хотят делать качественные ИТ-системы, чтобы на «проде» ноль багов, а пользователи были счастливы от нажатия каждой кнопки. Мало у кого получается, потому что это сложно, не всегда понятно… и вообще, дотащить бы таску до статуса Ready to Test, а там будь что будет. В этой статье основное внимание уделим именно процессам. Логично, что если процесс производства плох, то и продукт получится не очень.
Дисклеймер: речь мы здесь будем вести не о стартапах и проверках теорий (MVP), а о рабочих продуктах, которые уже прошли эти стадии и сейчас активно разрабатываются.
Понятно, что качество — важная характеристика, а тестирование играет видную роль в обеспечении качества. В таком случае, почему тестированию часто не уделяют должного внимания? Из нашего опыта на это есть несколько причин.
Функциональность и строки кода очень легко измерить, этот процесс легче контролировать, поэтому появляется желание сделать побольше. Фичи продать инвесторам и пользователям легко, а вот их качество — это сложно измеримый показатель, который, на первый взгляд, неочевиден.
Больше половины проектов терпят неудачу, так как не попадают в бюджеты. Чаще всего в угоду экономии урезают именно тестирование. Логично: зачем тратить треть бюджета, если можно сразу писать хорошо, и вложить эти деньги в ускорение разработки? Сначала код, его на прод, а там уже дошлифуем напильником. На первый взгляд, никакого подвоха, но есть нюансы.
Это целая пачка проблем. Здесь и непонимание метрик качества проекта, и того, какой профит для бизнеса и продукта получится на выходе. Как итог, если специалиста по качеству и подключают, то в конце проекта, и ему уже сложно что-то менять. Аналогично и QA-инженер в команде видит таску, когда она попала в колонку “готово к тестированию”, и мало влияет на процесс разработки.
Мы рассмотрели самые частые причины отказа от тестирования. Но как понять, что наш текущий проект страдает от отсутствия или недостатка качества? Вот список симптомов назревающей «качественной недостаточности»:
Давайте разберёмся, как работать над процессами так, чтобы этих проблем становилось меньше.
Ходят слухи, что чем больше в продукте фич, тем у него больше потенциальных пользователей. Основной аргумент — это быстрорастущий рынок ПО. Для того, чтобы на нём эффектно выделиться, требуется взять всё, что есть у конкурентов, и пересобрать это в удобном и понятном виде. Главное в этой гонке за богатой функциональностью не упустить, что проседающее качество отпугнёт пользователя. Попытка сделать из приложения швейцарский нож в ущерб тестированию и качеству приводит к сложностям с поддержкой продукта и ряду других проблем:
Так идет до момента X, когда становится очевидно, что эту махину нужно срочно реанимировать, потому что решением уже сложно пользоваться.
За бюджет в тестировании отвечает стоимость обеспечения качества продукта. Не будем углубляться в стандарты ПО и нефункциональные требования к качеству. Рассмотрим самую верхушку айсберга и возьмем за основу работоспособность системы и её функциональность.
Есть разные этапы разработки, на которых можно обнаружить ошибки:
Например:
Расходы значительно растут от этапа к этапу. Это тот самый график удорожания бага с течением времени.
Это база. Многие знают её в теории, но на практике до 80% написанных требований избыточны, некорректны или никогда не используются. Понятно почему: хочется побыстрее начать разрабатывать, показать результат заказчикам и инвесторам. В итоге на второй этап попадает больше багов, чем могло бы, а если процесс тестирования оставляет желать лучшего, то и на третий этап заходят критичные ошибки.
Проблем будет меньше, если уделять достаточное внимание тестированию требований и первичной документации по проекту. По этой причине подключение специалистов по качеству на ранних этапах не растягивает бюджет, а экономит его за счет оптимизации времени разработчиков на исправление ошибок и устранения репутационных рисков.
Как же нащупать то самое заветное качество, чтобы радовались и заказчики, и клиенты, и даже команды разработки? Базовый принцип нашей компании:
Тестирование — это часть разработки продукта. О повышении качества выдаваемого кода и продукта должны думать все
Большое влияние на мотивацию команды оказывают качество процессов и конечного продукта. Всегда приятно работать над проектом, в котором есть хорошо поставленные задачи и правильно описанные баги, процессы идут гладко и предсказуемо.
Сильно на процесс разработки влияет майндсет всей команды. Для его выстраивания важно понять и принять несколько принципов:
Поначалу легко забыть все эти истины, потому что самым важным кажется выдать хоть какой-то результат как можно быстрее. Не стоит поддаваться этой иллюзии. Даже если на старте проекта царит хаос, нужно включать в план работ выход на качественные процессы в обозримые сроки. Пока вы ещё не написали десять тысяч строк зубодробительного легаси.
Выше мы выставили ориентиры в виде принципов и этапов. Давайте теперь вернёмся к симптомам качественной недостаточности и посмотрим, какие практики мы используем для их прямого или косвенного устранения.
65% написанных требований вообще никак не используются на проекте и ещё 15% некорректны. Это суровая реальность
Представьте то же производство колбасы. У нас есть рецепт, но не факт, что он верный, и прочесть его способен только один человек. Чтобы этого избежать, требования нужно проверять на качество. Смысл этого процесса в том, чтобы убедиться, что команда правильно поняла всю бизнес-логику и задала все важные вопросы. Иначе разработчики будут оценивать задачи “в вакууме”, не учитывая нюансов конкретного проекта.
На самых ранних этапах проекта стоит прикидывать user flow на графических макетах, это облегчает документацию и взаимопонимание между заказчиком и командой разработки.
Хорошее планирование решает сразу множество проблем. Важно сделать так, чтобы:
Что работает для нас на практике:
В командах иногда вообще убирают колонку testing. Есть To Do, Work in Progress и Done. Вся работа идёт в колонке Work in Progress. Задача уходит в Done, только когда завершено тестирование. Некоторым командам это подходит: в таком процессе разработчики не переключаются между задачами, им не приходится вспоминать, что они писали две недели назад.
Мы стараемся строить процесс с трёх сторон — бизнес, разработка и тестирование, чтобы и бизнес, и технологии одинаково понимали происходящее. То есть в процесс вовлечены QA, бизнес-аналитик/продакт и технический лид
Сложноизмеримые процессы — это всегда боль, здесь нет каких-то унифицированных подходов. Но оцифровка важна, так как делает результат более осязаемым
Простой пример: нужно добавить модальное окно определённого вида. Но наш компонент просто не может принять такой вид, потому что так уж он написан. То есть, чтобы добавить модалку, сначала нужно переписать компонент. А если этого не учесть, то точная оценка уходит в закат рука об руку с качеством. В более сложных системах задача может задевать сразу несколько уровней абстракции и значительно влиять на исполнение. Поэтому в выяснение задач нужно включать и анализ технических нюансов.
У нас зачастую сами тестировщики ставят задачи разработчикам. Первые уже хорошо знают систему отталкиваются от будущих тест кейсов, что сильно повышает вероятность получить ожидаемый результат с первой итерации.
То есть наш конвейер должен уверенно ехать в сторону майндсета, нацеленного на качество. Мы работаем как бы с двух сторон:
Качество полностью пронизывает продукт сквозь все этапы жизненного цикла: от требований, через процессы разработки и до итогового результата. Как и у любого процесса, здесь есть ответственный. Он понимает, как эти этапы должны работать, и как убедиться, что всё идёт по плану.
QA в данном случае — это главный технолог по качеству, который контролирует все процессы изготовления продукции.
Но это не одиночка, воюющий против всех. Это игрок, который поддерживает команду и структурирует процесс обеспечения качества.
По нашему опыту, даже держа в уме все эти принципы и практики, сложно сразу начать делать идеально. Нужно итеративно оптимизировать процесс разработки под свою команду и конкретный продукт. По факту, это проект внутри проекта.
15:00
10:00
7:00