Есть ряд багов, которые нельзя поймать ни тестами, ни тестировщиками. Потому что формально установить наличие ошибки по выхлопу нельзя. Собственно, настоящие, красивые, баги появляются именно так, а не так, как мы уже привыкли: те "баги", которые мы видим каждый день — это либо дефекты выбранного алгоритма, либо его "забытые" тёмные закоулки (необработанные ошибки, нереализованные ветвления, неосвобождённая память и т.п.). А эти ошибки можно найти только анализируя код. И даже если это будет не тот "настоящий, красивый баг", которым можно восхищаться годами, постоянно переоткрывая его в багзилле, но тоже может быть интересно.
Вот простой пример:
Показана часть длинного сообщения. Читать дальше ->
Вот простой пример:
sub very_bin_integer($) {
my $length = int(shift) or die "Illegal length";
my $ret = '';
for ( 1 .. $length )
{
my $n = 0;
while ( not $n ) {
$n = int(rand(9));
};
$ret .= $n;
}
return $ret;
}
Даже обработка некорректного ввода есть. Кто напишет корректный юнит-тест на эту ошибку — может рассчитывать на пирожок.