Поблочное тестирование, примерно разговор, тестируя биты Вашего кода в изоляции с тестовым кодом. Прямые преимущества, которые приходят на ум:
, которое, если тестовый код пишет в файл, открывает соединение с базой данных или делает что-то по сети, это более соответственно категоризировано как интеграционный тест. Интеграционные тесты являются хорошей вещью, но не должны быть перепутаны с модульными тестами. Код модульного теста должен быть коротким, сладким и быстрым для выполнения.
Другой способ посмотреть на поблочное тестирование состоит в том, что Вы пишете тесты сначала. Это известно как Разработка через тестирование (TDD, если коротко). TDD приносит дополнительные преимущества:
, Если Вы не делаете поблочного тестирования теперь, я рекомендую начать на нем. Получите хорошую книгу, практически любая xUnit-книга сделает, потому что понятия очень передаваемы между ними.
Иногда модульные тесты записи могут быть болезненными. Когда это получает тот путь, попытайтесь найти, что кто-то, чтобы помочь Вам и сопротивляться искушению к "просто пишет проклятый код". Поблочное тестирование много похоже на то, чтобы мыть посуду. Это не всегда приятно, но это содержит Вашу метафорическую кухню в чистоте, и Вы действительно хотите, чтобы он был чист.:)
<час>Редактирование: Одно неправильное представление приходит на ум, хотя я не уверен, распространено ли это настолько. Я услышал, что менеджер проектов говорит, что модульные тесты заставили команду записать весь код дважды. Если это стили тот путь, ну, в общем, Вы делаете его неправильно. Не только делает записи, тесты обычно ускоряют разработку, но и это также дает Вам удобное, "теперь я сделан" индикатор, который Вы не имели бы иначе.
http://en.wikipedia.org/wiki/Luhn_algorithm
Вы можете минимизировать это ниже в очень мало места в вашем коде.
function isCreditCard( CC )
{
if (CC.length > 19)
return (false);
sum = 0; mul = 1; l = CC.length;
for (i = 0; i < l; i++)
{
digit = CC.substring(l-i-1,l-i);
tproduct = parseInt(digit ,10)*mul;
if (tproduct >= 10)
sum += (tproduct % 10) + 1;
else
sum += tproduct;
if (mul == 1)
mul++;
else
mul--;
}
if ((sum % 10) == 0)
return (true);
else
return (false);
}
Если вы хотите быть уверенным, что это действительный номер карты, вам нужно будет проверить гораздо больше, чем цифра Луна.
Цифра Луна предназначена только для проверки ошибок транспонирования, и может быть легко подделана числами, например, 22222222222222222
Следует проверить первые шесть цифр номера карты. Эти цифры известны как идентификационный номер эмитента и могут использоваться, чтобы гарантировать, что номер находится в пределах распознанного диапазона. К сожалению, вам будет сложно найти исчерпывающий список IIN, не в последнюю очередь потому, что эмитенты постоянно добавляют и удаляют диапазоны. В Википедии есть очень простой обзор: Номер банковской карты
Если вы можете определить тип карты по ИИН, вы также можете попытаться проверить длину номера.
Если у вас нет очень хорошая причина,