Страницы

вторник, 27 марта 2012 г.

Эффективное тестирование. Скажи нет мock’ам – дополнение о скорости.

  Предыдущее сообщение  заканчивал грустными строками:

“Но чтобы быть честным, упомяну о еще одном параметре – время выполнения тестов. Тест с mock-объектами выполняется примерно 110 мс, а тест с инфраструктурой и заглушками примерно 950 мс (+ 2000мс на инициализацию NHibernate, но это время может быть размазано время тестов всех тестов). Да, время увеличилось, но увеличилось приемлемо”.

  Это меня печалило. Не хотелось верить, что NHibernate работает настолько медленно. И к счастью, дело обстоит не совсем так. Что включает в себя время теста? Это время на загрузку сборок и jit-компиляцию. А NHibernate содержит по-настоящему много кода. Поэтому я решил провесит небольшой эксперимент. Скопировать, и дважды выполнить каждый из тестов: с mock-объектами и без них. И вот что из этого получилось:

image

  Совсем другое дело! На повтором прогоне тест с NHibernate стабильно обгоняет тест с Moq на 2-3 миллисекунды! Что это значит? Это значит, что кроме первого теста, который будет инициализировать и компилировать NHibernate, остальные будут работать со скоростью модульных тестов. Последняя причина использовать mock-объекта окончательно растворилась.

Комментариев нет:

Отправить комментарий