Информация об изменениях

Сообщение Re[4]: И как тестировать алгоритм? от 08.12.2014 8:57

Изменено 08.12.2014 8:58 devcoach

Здравствуйте, landerhigh, Вы писали:

L>Уменьшает, как я это показал — вместо экспоненциального закона количество тестов растет линейно.

Не уменьшает ни на единицу. Вы что, не можете понять такую простую вещь, что от разнесения методов кода меньше не стало? А раз кода столько же, то и тестов требуется столько же. Единственное, в чем это помогает — упрощает изоляцию ошибок.

Вариант 1:
int bigMethod(int x, int y, int z) {
    if (x ^ y == 0)
        return z;
    else 
        return -z;
}

Вариант 2:
int bigMethod(int x, int y, int z) {
    if (smallMethod(x, y))
        return z;
    else 
        return -z;
}

bool smallMethod(int x, int y) {
    return x ^ x;
}

Из этого примера понятно, что такое "точки перехода"? Даже когда вы доказали, что smallMethod() возвращает правильные значения, вам надо проверить, что вы правильно интегрировали его в bigMethod(), что приводит нас к тому же количеству юнит-тестов.
Re[4]: И как тестировать алгоритм?
Здравствуйте, landerhigh, Вы писали:

L>Уменьшает, как я это показал — вместо экспоненциального закона количество тестов растет линейно.

Не уменьшает ни на единицу. Вы что, не можете понять такую простую вещь, что от разнесения методов кода меньше не стало? А раз кода столько же, то и тестов требуется столько же. Единственное, в чем это помогает — упрощает изоляцию ошибок.

Вариант 1:
int bigMethod(int x, int y, int z) {
    if (x ^ y == 0)
        return z;
    else 
        return -z;
}

Вариант 2:
int bigMethod(int x, int y, int z) {
    if (smallMethod(x, y))
        return z;
    else 
        return -z;
}

bool smallMethod(int x, int y) {
    return x ^ y == 0;
}

Из этого примера понятно, что такое "точки перехода"? Даже когда вы доказали, что smallMethod() возвращает правильные значения, вам надо проверить, что вы правильно интегрировали его в bigMethod(), что приводит нас к тому же количеству юнит-тестов.