Немного про тестирование
Nov 21, 2016
6 minutes read

Сегодня не программировал, пол-дня покатался по побережью в попытке открыть счет в банке. Форма на сайте не работает - думал зайти физически, но в понедельник отделение оказалось закрыто. Вторую половину дня слегка уделил бизнесу: написал письмо коллегам и кастомерам, которое по большей части и прилагаю (за исключением коммерческих деталей).

Про тестирование

Всем привет!

Саша Т. написал достойный анализ ситуации и разумные предложения по тестированию. Но Саша писал их “изнутри системы”, я же хотел бы поделится мыслями и наблюдением “снаружи”.

Мысль следующая: “Команда X (как единое целое) не считает тестирование чем то важным”. Поскольку эта “мысль” выглядит как камень в огород команды - у меня есть неколько пояснений, почему это так и почему не стоит воспринимать ее в штыки.

Во-первых, очень многие команды не воспринимают тестирование серьезно. Во-вторых, на каких-то этапах развития проекта любое тестирование (ручное, автоматическое, и так далее) на самом деле не только не важно, но и является бессмысленной тратой времени и денег. В третьих - я сам до 2005 года считал тестирование пустой тратой времени (которое гораздо важнее потратить на разработку), и я уверен очень многие и сейчас думают так, как старый (вернее, молодой я).

Действительно, если комада постоянно переделывает предмет тестирования, каждый раз выдавая новый предмет, с другим интерфейсом (API или визуальным), с другим поведением, и так далее, то какой смысл тратить силы на тестирования предмета, на смену которому завтра придет другой (скорее всего новый предмет будет называться так же как и предыдущий, но пусть нас это не обманывает - это будет новый предмет).

Теперь про то почему я считаю что “Команда X (как единое целое) не считает тестирование чем то важным” (еще раз это ни хорошо и не плохо, это просто факт, и серьезное отношение к тестированию безусловно бы привело к просадке в других местах, например в скорости реализации новых фич).

Первое: отсутствие Continuous Integration. Поставить сервер Continuous Integration - это не значит что у вас есть Continuous Integration. Это значит что у вас есть в лучшем случае автоматизированная сборка. Continuous Integration - это процесс разработки. Неотъемлемая часть такого процесса - “зеленый билд” и автоматизированные тесты. “Зеленый билд” это вообще лакмусовая бумажка, показывающая наличие или отсутствие Continuous Integration процесса и отношение команды к тестированию.

Тестирование (и тесты) могут быть важнейшей частью процесса разработки, а могут быть несерьезное как у меня до 2005 года: я конечно не против если кто-то помогает мне с тестированием, и даже находит баги необходимые к починке, и если меня бы спросили о тестировании я бы ответил, что да мы тестируем, и у нас есть тесты и люди-тестировнщики, и это все очень полезно, но все это несерьезное отношение к тестированию, поскольку для меня тогда тесты не были важнейшей и неотъемлемой частью процесса.

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

Это непреложное правило которое очень просто работает: если обновления редки (раз в пол-года, или даже раз в квартал), то команда надеется на себя (и это очень правильно): у команды найдется достаточно времени перед релизом (ну или она так наивно полагает, что время найдется) для того, чтобы “отрелизится”. Пофиксить баги, и выкатить “релиз” за который не стыдно, ну или там не дадут по голове. В таком режиме нет очевидных причин относится к тестированию серьезно и тратить на него немалый ресурс.

Изменение сознания происходит когда продукт начинает уходить кастомерам чаще: раз в месяц или раз в две недели. Лучше раз в две недели - в таком режиме команде не на что надеятся, кроме тестов. У нее нет времени на “релизы” (под релизами понимается тот процесс который у многих происходит перед релизом - feature freeze, починка багов, тестирование, починка багов и с начала). Даже если заниматься “выпуском продукта в мир” одну неделю (что очень жестко для большого продукта), при релизах раз в две недели времени на разработку практически не остается.

Сознание меняется у всей команды: с самого верха до самого низа. И это в первую очередь касается процессов. Дело даже не в самих тестах и инструментах. К любой команде можно “прикрепить” отдел тестирования с самыми лучшими специалистами и инструментами, и ничего существенно не изменится. Серезное отношение определяется не количеством и качеством людей участвующих в процессе тестирования, а отношением к нему лидера, программистов, всех остальных участников. Это отношение определяет (влияет на) процесс разработки в целом. Чтобы поставть такой процесс необходим высочайший административный ресурс проекта. Такой процесс может поставить только человек, с высшими командными полномочиями.

Возьмем, к примеру, пресловутый “зеленый билд”. Какой бы замечательной не была команда QA, только с высоты управления всем проектом можно “нагнуть” всех у частников проекта на то, что без “зеленого билда” нет будущего - и понизить приоритет всем задачам пока такой сборки не будет. Никто другой, кроме лидера проекта не обладает для этого досточными полномочиями.

Далее: меняется отношение к тестам - не важно какую замечтельную фичу или что-то там ты сделал, если твое изменение ломает билд - твоего кода просто не существует (до выяснения проблемы). Качество кода, определяемое тестами, становится приоритетнее всего остального. Наполнение тестами тестовой базы приносит радость, а людей которые ее наполняют целуют в задницу, ибо наконец на собственном опыте почувствовали как они облегчают им жизнь.

Проект с серьезным отношением к тестам - это дорого. Это время разработчиков. Они не могут забить на непроходящие тесты, они вынужденны докапываться до истины, а не просто перекидывать проблему на соседа (“это вроде у тебя там”) и обратно. Это время на создание инструментария: как бы там ни казалось в любом крупном продукте с серьезным отношением к тестированию присутсвуют самодельные тествые фреймворки и инстументы написанные под их специфику - я не раз про такое слышал общаясь с людми про RCPTT, и количество кода в проекте созданного исключительно для тестирования может достигать 50% кодовой базы.

Конкретика по нашей ситуации

…вырезано…

Опыт

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

Соответственно, отношение проекта к тестированию должно определятся стратегией на высшем уровне. Расстановкой приоритетов между качеством/фичами, и так далее. Инструменты и тестировщики в вопросах тестирования дело уже второе.

Какой подход выбрать - стратегический вопрос, который должно решать руководство. Исторически так случилось, что Саша Т. и девочки что-то пытаются сделать с тестированием не имея ни полномочий ни ресурсов добится чего-либо существенного в этой области. Хотелось бы снять с нас эту ответственность и предать лицу обладающему такими возможностями. Что касается ресурсов (тестировщиков), если в людях есть необходимость, то я думаю нет никаких проблем девушкам продолжать заниматься тестированием под соответсвующим руководителем выполняя задачи им поставленные.

Простите за длинное письмо, я даже не думаю что мои мысли что-то изменят, но для того, чтобы быть “на одной странице” и конкретного разговора про дальнейшие шаги в тестировании, давайте определимся с важнейшим вопросом: разработка X - это Continuous Integration процесс или нет? От ответа на этот вопрос зависит гораздо больше чем кажется на первый взгляд.

Спасибо, Платов


Назад, к записям


comments powered by Disqus