К основному контенту

И снова про code review или новая единица измерения качества (WTF/minute)

Интересная статья про инспекцию (рецензирование) кода (code review). Джим приводит интересную статистику и
дает советы по тому, как не тратить время во время code review.

Небольшой конспект и мои мысли. Можно не читать тут и идти сразу в оригинал.

1. Сам процесс должен быть легким. Групповое (когда назначается совещание и команда совместно смотрит код) ревью малоэффективно. Только 4% ошибок находится во время такого способа проведения инспекции. Лучше это делать по запросу по email или с помощью специальных инструментов. Тут наша горячо любимая Visual Studio отличилась. Ее возможность Code Review и так не ахти. А если вы храните ваши исходники в git-репозитории, то у вас нет даже ее. Приходится опять смотреть на сторонние инструменты. Недавно попробовали Upsource от Jetbrains работает в TFS-git. Пока завелось.

2. Сколько людей в команде надо привлекать к ревью? Джим считает, что всех приглашать не нужно - бесполезная трата денег. Некоторые исследования показывают, что разработчик глядя на свой код находит половину всех дефектов. Считается, что двое ревьеверов делают работу эффективнее, чем четверо. Возможно имеет эффект "размытия ответственности" - каждый думает "остальные точно проверят качественно".

3. Кроме количества ревьюверов важны еще и их навыки, а также то, как они разбираются в предметной области, к которой относится код. Иначе основным результатом ревью являются замечания по code-style и форматированию. У нас в команде действительно получается так, что специфичные области требующие углубленных знаний плохо инспектируются - тяжело смотреть код без понимания того, что и зачем он делает. Возможно парное программирование или некое его подобие облегчит проблему?

4. Используйте статический анализ. Он поможет улучшить качество ревью.

5. Критические области кода, на которые нужно обращать внимание при ревью:
  • Сетевое API
  • Код библиотек
  • Критическая бизнес-логика
  • Код по управлению, реализующий административный функционал
  • Критичные по безопасности и производительности места
  • Старый код, код, в котором раньше было много дефектов, переписываемый многими людьми
  • Код, который правят новички
  • Большие изменения (новое в старом коде)
  • Большой рефакторинг (изменения старого кода)
6. Получите от code review больше
Если вы неправильно его внедряете - вреда от него может быть больше, чем пользы. Но так как польза очевидна, то надо действовать аккуратно :)
Как уже упоминалось никаких совещаний, никаких наказаний. Старайтесь избегать замечаний по форматированию и code style. Не надо брать разработчиков за яйца - боюсь им это не понравится и в следующий раз ревью превратится или в фикцию, или попытку доказать кто тут на самом деле умный.
Инспекции кода - это не единственный инструмент обеспечения качества. Попробуйте делать просто больше тестов :) 

Удачи!

Комментарии

Отправка комментария

Популярные сообщения из этого блога

Mock vs Stub

Когда мы начали изучать модульное тестирование, то одними из первых терминов, с которыми пришлось познакомиться, стали Mock и Stub.

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

Проверять работоспособность тестируемого объекта (system uder test - SUT) можно двумя способами: оценивая состояние объекта или его поведение.

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

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

Собственно, если коротко, то в одном случае используется Stub, а в другом Mock. Это объекты, которые создаются и используются взамен реальных объектов, с которым взаимодействует SUT в процессе своей работы.

Теперь подробнее.

Gerard Meszaros использует термин Test Double (дублер), как обозначение для объекта, который зам…

План "Б" или как прикольно провести субботний день

Всем привет.
Вчера состоялась конференция "План Б". Организаторами выступили ребята из Яндекса, за что им большое спасибо. Судя по приблизительным подсчетам в мероприятии участвовало около 200 человек.

Основной темой конференции было планирование, планирование всего: проектов, разработки, тестирования, дизайнеров и даже организации музыкального фестиваля.
Сначала думал написать отчет в обычном своем стиле: кто и что говорил, но почитав твиттер по #pbconf понял, что просто потеряю время :) Поэтому кому оооочень интересно узнать подробности следуйте за птичкой и вы все узнаете (тэг #pbconf попал в top-30 твиттера)
Здесь приведу лишь те вещи, которые мне запали в мозг
Роман Чернин о продуктовой разработке: "нет заказчика, нет требований, нет сроков -> как принимать решения? ответ: заводим себе Product Manager-а"
Оля Павлова (@op): "бойтесь иллюзии точной формулировки" "заказчик - ребенок, выдаем ему игрушку как можно чаще" "не забываем, …

Полезные ресурсы для молодых (и не только) тестировщиков

Уже 3 месяца провожу собеседования тестировщиков.
Поначалу они просто  веселили - после 15-летнего опыта собеседования С++-разработчиков, общение с тестировщиками (чаще были "-цы") было чем то экзотическим и забавным.

Потом становилось все грустнее и грустнее, мимими закончилось. Началась печаль.