2015-03-22 8 views
3

При проверке заявление покрытия для моего кода:Включает ли подсчет операторов false false, если утверждения?

double programme(double x, double y) 
{ 
    double z 
    if(x>=5){ 
     z = 15; 
    } 
    else if(x>=3){ 
     z= 10; 
    } 
    else { 
     z=0; 
    } 
    if (y>z) 
    { 
     z=y; 
    } 

    return z; 
} 

с помощью двух тестов (например, тест 1: х = 6, у = 10 и тест 2: = 3, у = 5)

Я m не уверен, что покрытие оператора равно 100% или 66% на основании того факта, что я не уверен, считаете ли вы последний оператор if, поскольку он является ложным оба раза.

+1

Итак, вы закрываете 'z = 0;' заявление? – zerkms

+0

Если y заканчивается меньше, чем z (например, y = 5. z = 10), вы все равно добавляете это утверждение в общий охват заявления? –

+0

Ну, вопрос - это 'z = 0;' когда-либо выполнялся? – zerkms

ответ

4

Есть восемь заявлений в вашем методе - три условных, четыре задания, и return:

  1. if (x>=5)
  2. z=15
  3. if (x>=3)
  4. z=10
  5. z=0
  6. if (y>z)
  7. z=y
  8. возвращение

Первый тест охватывает утверждения 1, 2, 6 и 8. Второй тест охватывает 1, 3, 4, 6 и 8. Таким образом, заявления 1 , 2, 3, 4, 6 и 8 покрыты для 6 из 8 или 75% охвата.

+0

Разве это не покрытие ветви? –

+1

@CormacHallinan В этом случае он близок, потому что каждая ветвь имеет один оператор. Однако охват заявок может быть пронзительным, хотя в одном закрытом ветви есть множество заявлений, в то время как у нескольких незакрытых ветвей есть один оператор. – dasblinkenlight

+0

Я не уверен на 100%, что вы подразумеваете под этим. Не могли бы вы привести пример на основе кода, который я составил? –