Выбор ответа Senior Процессы и метрики качества обновлено

Покрытие операторов и ветвей

Вопрос

Функция:

function price(p, isVip) {
  let d = 0;
  if (isVip) d = 0.1;
  return p * (1 - d);
}

Есть один тест price(100, true). Какое покрытие он даёт?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 100% операторов, 50% ветвей. С isVip = true выполняются все операторы, включая d = 0.1, поэтому покрытие операторов 100%.

Варианты ответа

  1. 100% операторов и 100% ветвей
  2. 50% операторов, 50% ветвей
  3. 100% операторов, 50% ветвейправильный ответ
  4. 75% операторов, 100% ветвей

Разбор

С isVip = true выполняются все операторы, включая d = 0.1, поэтому покрытие операторов 100%. Но у if две ветви: истинная и ложная, а ложная (обычный клиент) не выполнялась ни разу, это 50% ветвей. 100% ветвей потребует второго теста с false. Покрытие ветвей всегда не слабее покрытия операторов, поэтому вариант «75% операторов, 100% ветвей» невозможен.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.