unit-testing
Единичное тестирование циклов (Java)
Поиск…
Вступление
Петли считаются одной из важных структур управления на любом языке программирования. Существуют различные способы, с помощью которых можно достичь охвата петлей.
Эти методы различаются в зависимости от типа цикла.
Одиночные петли
Вложенные петли
Конкатенированные петли
Тест с одним циклом
Это петли, в которых их тело цикла не содержит других циклов (самый внутренний цикл в случае вложенности).
Чтобы охватить петлю, тестеры должны провести тесты, приведенные ниже.
Тест 1: спроектировать тест, в котором тело цикла не должно выполняться вообще (т.е. нулевые итерации)
Тест 2: спроектировать тест, в котором переменная управления контуром будет отрицательной (отрицательное число итераций)
Тест 3: спроектировать тест, в котором цикл повторяется только один раз
Тест 4: спроектировать тест, в котором цикл повторяется дважды
Тест 5: спроектируйте тест, в котором цикл повторяется определенное количество раз, скажем m, где m <максимальное число возможных итераций
Тест 6: спроектируйте тест, в котором цикл повторяет одно меньше максимального числа итераций
Тест 7: спроектировать тест, в котором цикл выполняет итерацию максимального количества итераций
Тест 8: спроектируйте тест, в котором цикл повторяет более, чем максимальное количество итераций
Рассмотрим приведенный ниже пример кода, который применяет все указанные условия.
открытый класс SimpleLoopTest {
private int [] numbers = {5, -77,8, -11,4,1, -20,6,2,10};
/** Compute total of positive numbers in the array
* @param numItems number of items to total.
*/
public int findSum(int numItems)
{
int total = 0;
if (numItems <= 10)
{
for (int count=0; count < numItems; count = count + 1)
{
if (numbers[count] > 0)
{
total = total + numbers[count];
}
}
}
return total;
}
}
открытый класс TestPass расширяет TestCase {
public void testname() throws Exception {
SimpleLoopTest s = new SimpleLoopTest();
assertEquals(0, s.findSum(0)); //Test 1
assertEquals(0, s.findSum(-1)); //Test 2
assertEquals(5, s.findSum(1)); //Test 3
assertEquals(5, s.findSum(2)); //Test 4
assertEquals(17, s.findSum(5)); //Test 5
assertEquals(26, s.findSum(9)); //Test 6
assertEquals(36, s.findSum(10)); //Test 7
assertEquals(0, s.findSum(11)); //Test 8
}
}
Тест вложенных циклов
Вложенный цикл представляет собой цикл внутри цикла.
Внешний контур изменяется только после полного завершения / прерывания внутреннего цикла.
В этом случае тестовые примеры должны быть сконструированы таким образом, чтобы
Начните с самого внутреннего цикла. Установите все внешние петли на их минимальные значения. Выполните Простые проверки циклов в самом внутреннем цикле (Test3 / Test4 / Test5 / Test6 / Test7). Продолжайте до тех пор, пока все петли не пройдут проверку
Тест конкатенированных петель
Две петли конкатенированы, если можно достичь одного после выхода из другого на том же пути от входа до выхода. Иногда эти две петли независимы друг от друга. В этих случаях мы можем применять методы проектирования, указанные как часть однотактного тестирования.
Но если значения итерации в одном цикле прямо или косвенно связаны с итерационными значениями другого цикла, и они могут встречаться на одном пути, то мы можем рассматривать их как вложенные циклы.