Светлый идеал 100% покрытия тестами

Jan 24, 2015 02:42

Что-то я не понимаю эти вот страдания по поводу того, что покрытие кода не 100%. Ну допустим ваша тулза показывает 100%. Что это значит, можно конюшни больше не чистить? А вот и нет:

int f(int a, int b) {
int arr[2] = { 0, 0 };
int i = 1;

if(a == 1) i--;

if(b == 1) i--;

return arr[i];
}И что это вам дало? Покрытие по строчкам 100%, а ( Read more... )

Leave a comment

Comments 96

psilogic January 24 2015, 10:50:24 UTC
что значит "покрытие 100%" в данном случае??

Reply

levgem January 24 2015, 10:58:24 UTC
Это значит что во время тестов хоть раз исполнялась каждая строчка кода.

Reply

psilogic January 24 2015, 11:10:02 UTC
а если я весь код в одну строчку сверну? :)))

Reply

levgem January 24 2015, 11:11:59 UTC
Думаю, что коллеги будут визжать от восторга и хлопать в ладошки =)

Reply


levgem January 24 2015, 10:58:02 UTC
То, что тесты - это инструмент, а не самоцель (особенно 100% покрытие), даже нечего обсуждать.

У нас вот плавно вырабатывается подход к тестам такой: фичу при первичном выкатывании тестами не покрываем. Её будем менять и нет смысла даже дергаться и тратить на это _лишнее_ время. Опять же, это не догма, а скорее практика.

Когда фича начинает внедряться и опробываться, она начинает обрастать тестами, причем мы придерживаемся почти всегда интеграционных тестов. Не надо тестировать кишки, запроси свою систему по HTTP и проверь ответ. У нас форматы ответов мало меняются, а кишки мы часто рефакторим.

Тут как раз code coverage помогает увидеть _нетестированные_ куски кода. Больше он ни для чего не нужен.

Reply

provokatorz January 24 2015, 12:37:20 UTC
В посте о другом написано. Если у вас нет юнит тестов, то и проблемы другие.

Reply

levgem January 24 2015, 12:44:47 UTC
Я не очень понимаю принципиальной разницы между юнит-тестами и интеграционными.

Reply


mr_parson January 24 2015, 11:00:04 UTC
любой код без обработки ошибок можно покрыть тестами на 100% без особого толку. Ну и вообще, самые важные ошибки в коде, который забыли написать. Покрыть его тестами отдельная не всегда простая история.

Reply


fi_mihej January 24 2015, 11:04:27 UTC
>>По опыту, у 84% программистов какой-то blind spot, не позволяющий ощутить масштаб проблемы.

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

Reply

archaicos January 24 2015, 11:22:18 UTC
Народ тупит на простейших вещах и забывает, что простую работу или простое решение часто можно ещё проще проверить (увы, софт мы делаем слишком часто охрененно сложный и с т.з. разработки, и с т.з. тестирования).

Для лулзов, если кто ещё не видел:
http://www.scientificamerican.com/article/rational-and-irrational-thought-the-thinking-that-iq-tests-miss/

Даже я сперва неправильно решил задачу №1 (остальные правильно). Позор на главу!

Reply


archaicos January 24 2015, 11:11:54 UTC
Поработаю вторым капитаном на полставки. Существуют разные виды покрытия. Это самое простое, очевидно не дающее полную картину полноты и качества кода и близко.

Reply


Leave a comment

Up