Создаем IT-продукты на заказ

За 5 лет мы создали продукты с топовыми e-commerce компаниями, ритейлом, банками и другими бизнесами по всему миру.

Специализируемся на SaaS-решениях на архитектуре микросервисов, делаем аналитику IT-проекта перед стартом.

Посмотрите, что говорят о нас клиенты и как комфортно мы стартуем проекты.

Для обсуждения проекта пишите на ceo@byndyusoft.com или звоните +7 (904) 305 5263

четверг, 23 апреля 2009 г.

Эффективный модульный тест

На сколько ваши тесты эффективны? Получаете ли вы максимум отдачи от создания тестов? Тесты должны экономить время, затраченное на разработку системы в целом. Время - это деньги вашего заказчика.

Тест эффективен, если...

Написан до написания кода, который он тестирует

Это обязательное условие успешной разработки.

Независим от других тестов

Тест не должен зависеть от удачного/неудачного окончания других тестов или от данных, которые эти тесты используют.

Не зависит от внешних источников данных

Тесты должны проходить быстро. Иначе отпадет желание запускать их часто. Это может случится, если в тесте вы пытаетесь проверить данные, которые берутся из базы данных, файловой системы и т.п. Для избежания этой проблемы необходимо использовать поддельные реализации источников данных (mock objects).

Не зависит от модулей, которые не участвуют в тестировании

Классы, которые мы хотим протестировать, могут напрямую зависеть от других классов. Если мы хотим протестировать первые, то для их правильной работы придется настраивать вторые. Получается, что для должны потратить много времени на настройку инфраструктуры для запуска простого теста. В этой ситуации надо применять принцип инверсии зависимостей и использовать поддельные реализации объектов.

Является документацией к модулю, который тестирует

Чтобы понять, как использовать API системы, разработчики и пользователи смотрят тесты, которые используют интересующие их модули.

Является повторяемым

При каждом запуске тест должен показывать один и тот же результат.

Имеет название, которое показывает цель этого теста

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

Плохое название : Save

Хорошее название: SaveShouldClearAllRelatedData

Модульные тесты позволяют ускорить процесс разработки системы, дают вам уверенность при рефакторинге и являются самой актуальной документацией. Стремитесь к лучшему соотношению результата к затраченным ресурсам, повышайте вашу эффективность.

2 комментария:

  1. Мне больше нравится именование тестов в стиле MethodUnderTest_Scenario_ExpectedBehavior. А здесь можно взять темплейты для Resharper с подобным именованием.

    ОтветитьУдалить
  2. @Idsa
    Спасибо за ссылку. Да, я тоже иногда именю через подчеркивание, если название очень длинное получается.

    ОтветитьУдалить

Создаем IT-продукты на заказ

За 5 лет мы создали продукты с топовыми e-commerce компаниями, ритейлом, банками и другими бизнесами по всему миру.

Специализируемся на SaaS-решениях на архитектуре микросервисов, делаем аналитику IT-проекта перед стартом.

Посмотрите, что говорят о нас клиенты и как комфортно мы стартуем проекты.

Для обсуждения проекта пишите на ceo@byndyusoft.com или звоните +7 (904) 305 5263