Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Бесполезность юнит-тестов - качество бывает лишним

Нельзя подходить к проблеме тестирования так, как будто нам нужно обеспечить бесконечное качество.

Подобно проиборостроению, в софтостроении можно говорить о "гарантийном периоде эксплуатации" и MTBF. Гарантийный период - это период, после которого поломка не будет иметь для покупателя никакого значения. Для IE6 это время оказалось 8 лет, для windows 2000 и Висты - года три. Для моего проекта это где-то полгода - через полгода требования пересматриваются и многое приходится выкидывать и переписывать под новые требования, так что если в каком-то куске за полгода не обнаруживается баг - то достигнут предел качества. Работать над качеством, когда достигнут предел - смысла нет.

MTBF - это матожидание времени между обнаружением багов. Скажем, если мой единственный заказчик (он же единственный пользователь) будет обнаруживать баг каждую неделю, у него встанет производство. А один баг в два месяца или один баг в год - уже никакой разницы для него нет. С другой стороны, если у винды миллиард пользователей, и за год эксплуатации этими пользователями может быть выявлено 200 мелких функциональных багов и 50 уязвимостей - то мы получаем очень высокое необходимое MTBF, соответственно.

Соответственно, и подходы к тестированию будут разные для разных комбинаций гарантийных периодов и MTBF.

Ещё надо учитывать экономическую составляющую - соотношение ущерба от бага и стоимости написания теста. Лучше перераспределить бюджет (который обычно фиксирован) с тестирования менее важных фич на более важные. Скажем, если Windows будет крешиться во время установки у 1000 человек - это не так повлияет на продажи, как если она отформатирует не тот раздел у десяти.

Учет подобных факторов приводит к тому, что для целых классов проектов юнит-тесты оказываются бесполезными.
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 10 comments