Я инженер-программист в компании среднего размера. У нас есть достаточно надежная платформа тестирования, работающая на TeamCity. Он выполняет юнит-тесты при каждой регистрации и ежедневный юнит-тест / запуск BVT.
Проблема в том, что у нас много сломанных юнит-тестов.
Довольно часто я вспоминаю бессмысленность юнит-тестов, если они постоянно ломаются и не поддерживаются. Отсутствие возможности увидеть, вызвало ли изменение регрессию, приводит к потере большей части ценности платформы модульного тестирования.
Я хотел бы посадить семя, которое создаст культуру хороших привычек - исправление тестов, когда они сломаны, восприятие их как ценных, расстановка приоритетов в тестировании наряду с другой работой.
Я пробовал взяточничество (выпечка!), Просто спрашивал и разговаривал с руководителями команд. Все говорят, что это хорошая идея, но я вижу, что единственный, кто что-то делает с этим.
Каков наилучший способ начать побуждать других к исправлению своих тестов и расставлять приоритеты по исправлению тестов в своих спринтах?
Если есть менее субъективный способ задать это, я был бы рад принять любые советы.
источник
Ответы:
Сделайте так, чтобы на самом деле ничего не выпустить без исправления тестов.
Дело в том, что если ваша сборка прерывается более чем на 15 минут за раз (и это включает в себя неудачные тесты), то вы не выполняете непрерывную интеграцию .
«Ядерная опция» заключается в том, чтобы ваш сервер управления исходным кодом отказывался от фиксации / регистрации от любого пользователя, кроме того, кто нарушил сборку. Очевидно, что администратор должен иметь возможность временно отменить это, если указанный человек уходит в отпуск - но, если все знают, что вся команда испорчена, пока они не исправят свои тесты, то они решат это чертовски быстро.
Хорошей политикой (которая даже лучше, когда она автоматизирована) является возвращение источника к последней известной стабильной фиксации после 15 минут сбоя сборки. Другими словами, если вы не можете это исправить или не знаете, что привело к сбою сборки или теста, верните его и работайте локально до тех пор, пока оно не будет решено - никогда не заставляйте других разработчиков вертеть пальцами, пока вы не решите проблема, которая их не волнует.
PS Если у вас уже есть много неудачных тестов, вы можете использовать «конечный порог» в CI. Настройте его так, чтобы сборка завершалась неудачно только в том случае, если тестовых сбоев будет больше, чем в прошлый раз. Это, наряду с правилом покрытия, заставит разработчиков в конечном итоге улучшить тестовую ситуацию, если они захотят продолжать работать.
PPS Я понимаю, что некоторым это может показаться суровым, но это все в вашей культуре. Если вы попадаете в точку, когда люди просто не оставляют сборку неработоспособной или тесты не выполняются (моя команда почти никогда не делает этого, хотя мне иногда приходится им напоминать), тогда вам не нужно продолжать соблюдать самый строгий набор правил. Хотя IMO, вы всегда должны проваливать сборку на сломанном модульном тесте Интеграционные / браузерные тесты могут иногда проваливаться.
источник
Тесты модулей, которые не проходят, не являются проблемой. Они являются симптомом .
Настоящая проблема в культуре. Тебе нужно осторожно наступить: здесь будут драконы . Вы не можете изменить культуру самостоятельно, и то, что скрипучее колесо, в конце концов, сделает вас изгоем. Буквально.
Я предлагаю это, если вы попытаетесь найти старшего человека, чтобы защитить дело и проложить путь. Если это не помогло, попробуйте поднять его на общем собрании разработчиков, не указывая пальцами и не называя имен. Другой вариант - взять на себя ответственность за правильную работу: просто исправляйте еще несколько тестов каждый раз, когда вы проходите регистрацию. Держите на стене график, показывающий, сколько тестов со временем провалилось. Другие увидят это: возможно, они согласятся.
Нет простого ответа.
источник