Что-то я не понимаю эти вот страдания по поводу того, что покрытие кода не 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... )
Comments 96
У нас вот 0% процентов покрытия тестами на текущий момент, на эрланге это больно. И щас вот теряя тапки
побежали прикручивать регрессионные, без них невозможно уже.
Reply
У меня тоже не было тестов в эрливидео, пока кодовая база не начала расти.
Reply
Reply
Reply
(Что, конечно, не отменяет того, что coverage - бессмысленная метрика).
Reply
Reply
Поясню: в memory-unsafe языке причиной появления неверного значения в переменной потенциально может послужить любая операция, изменяющая состояние памяти. Недостаточно проглядеть только те части, которые меняют соответствующую переменную, необходимо читать или гонять всю программу целиком. В memory-safe языке достаточно посмотреть, что трогает соответствующую переменную, что гораздо проще.
При этом чем ограниченнее возможность раздавать ссылки на переменные вокруг, тем проще отлаживаться (в диапазоне от Java "гуляй рванина" до Haskell'овой монады ST, где мутабельная память инкапсулирована максимально).
Reply
Reply
Что не мешает быть покрытию полезным, чтобы смотреть, что вообще не оттестировано. При этом построчное покрытие - слишком грубо. Покрытие по веткам дает более приличный результат.
Reply
Reply
Reply
Покрытие на 100% проверяет, что таких опечаток нет.
Например, такое покрытие гарантирует отсутвие ошибок вида "бля вы это пробовали запустить хотя бы раз после написания", и предотвращает грех "я думал, это такое простое исправление, что можно не проверять".
Это полезно, так как большинство опечаток - именно простые, а не для хитрой комбинации параметров.
Еще покрытие на 100% проверяет, что нет dead code
Ну и да, отличие кода от данных оно искусственное. Еще, даже эквивалентные преобразования кода могут привести к тому, что поменяется покрытие со 100% на другое.
Reply
Reply
Reply
Reply
Reply
Reply
Leave a comment