Теперь я знаю, что люди могут считать этот вопрос дублирующим или задавали его много раз, и в этом случае я был бы признателен за ссылку на соответствующие вопросы с ответом на мой вопрос.
Недавно я был в разногласии с некоторыми людьми по поводу покрытия кода. У меня есть группа людей, которые хотят, чтобы наша команда вообще отказывалась рассматривать покрытие кода, основываясь на том аргументе, что 100% покрытие не означает тесты хорошего качества и, следовательно, код хорошего качества.
Я смог оттолкнуть меня, продав аргумент, что Code Coverage говорит мне, что не было проверено наверняка, и помогает нам сосредоточиться на этих областях.
(Вышеупомянутое обсуждалось аналогичным образом в других вопросах SO, подобных этому - /programming/695811/pitfalls-of-code-coverage )
Аргумент от этих людей заключается в том, что тогда команда будет реагировать, быстро создавая тесты низкого качества и, таким образом, тратить время, не добавляя при этом никакого существенного качества.
Хотя я понимаю их точку зрения, я ищу способ сделать более надежное обоснование для покрытия кода путем введения более надежных инструментов / структур, которые заботятся о большем количестве критериев покрытия (Functional, Statement,Decision, Branch, Condition, State, LCSAJ, path, jump path, entry/exit, Loop, Parameter Value etc)
.
То, что я ищу, - это предложение сочетания таких инструментов и практик / процессов покрытия кода, которые могут помочь мне противостоять таким аргументам, в то же время чувствуя себя комфортно в отношении моей рекомендации.
Я также приветствовал бы любые сопутствующие комментарии / предложения, основанные на вашем опыте / знаниях о том, как противостоять такому аргументу, потому что, будучи субъективным, охват кода помог моей команде лучше понять качество кода и ценность тестирования.
Редактировать: чтобы избежать путаницы в моем понимании слабости типичного покрытия кода, я хочу отметить, что я не имею в виду Statement Coverage
(или строки исполняемого кода) инструменты (их много). На самом деле вот хорошая статья обо всем, что с ней не так: http://www.bullseye.com/statementCoverage.html
Я искал больше, чем просто покрытие заявлений или строк, углубляясь в несколько критериев и уровней охвата.
Смотрите: http://en.wikipedia.org/wiki/Code_coverage#Coverage_criteria
Идея состоит в том, что если инструмент может сообщить нам о нашем покрытии на основе нескольких критериев, то это станет разумной автоматизированной оценкой качества теста. Я ни в коем случае не пытаюсь сказать, что покрытие линии - хорошая оценка. На самом деле это предпосылка моего вопроса.
Редактировать:
Хорошо, возможно, я спроектировал это слишком драматично, но вы поняли. Проблема заключается в том, чтобы установить процессы / политики в целом для всех групп однородно / согласованно. И общий страх заключается в том, как обеспечить качество тестов, как распределить гарантированное время без каких-либо мер. Поэтому мне нравится иметь поддающуюся измерению особенность, которая при поддержке соответствующих процессов и правильных инструментов позволила бы нам улучшить качество кода, зная, что время не тратится на расточительные процессы.
РЕДАКТИРОВАТЬ: Пока что я имею из ответов:
- Обзоры кода должны охватывать тесты для обеспечения качества тестов
- Стратегия Test First помогает избежать тестов, написанных после факта, просто увеличив охват%
- Изучение альтернативных инструментов, которые охватывают критерии тестирования, отличные от простого утверждения / строки
- Анализ покрытого кода / количества найденных ошибок поможет оценить важность покрытия и улучшить ситуацию
- Самое главное доверять вкладу команды, чтобы делать правильные вещи и бороться за свои убеждения
- Блоки Крытые / # испытаний - Спорно, но имеет некоторое значение
Спасибо за потрясающие ответы до сих пор. Я действительно ценю их. Эта тема лучше, чем часы мозгового штурма с теми силами, которые могут быть.