Начало работы с модульным тестированием - PullRequest
23 голосов
/ 20 августа 2008

Модульное тестирование - это, грубо говоря, тестирование битов вашего кода изолированно с тестовым кодом. Непосредственные преимущества, которые приходят на ум:

  • Выполнение тестов становится автоматизируемым и повторяемым
  • Вы можете тестировать на гораздо более детальном уровне, чем тестирование по принципу "укажи и щелкни" с помощью графического интерфейса пользователя

Rytmis

У меня вопрос: каковы текущие «лучшие практики» с точки зрения инструментов, а также когда и где использовать модульное тестирование как часть вашего ежедневного кодирования?

Давайте попробуем быть несколько независимыми от языка и охватить все основы.

Ответы [ 7 ]

22 голосов
/ 20 августа 2008

Хорошо, вот несколько советов от того, кто не проводит модульный тест столько, сколько должен ...

  1. Убедитесь, что ваши тесты тест один вещь и только одна вещь.
  2. Пишите юнит-тесты на ходу. Предпочтительно перед вы пишете код, который вы проверяете.
  3. Не тестировать модуль GUI.
  4. Разделите ваши проблемы .
  5. Минимизируйте зависимости ваших тестов.
  6. Ложный сеанс с Ложными .
14 голосов
/ 20 августа 2008

Возможно, вы захотите взглянуть на TDD на трех карточках индекса и на трех карточках индекса, чтобы легко запомнить суть разработки на основе тестирования :

Карта № 1. Три закона дяди Боба

  • Не писать никакого производственного кода, кроме как для того, чтобы пройти неудачный тест.
  • Запишите только достаточно теста, чтобы продемонстрировать сбой.
  • Пишите только достаточный производственный код, чтобы пройти тест.

Карта № 2: ПЕРВЫЕ ПРИНЦИПЫ

  • Быстро: умопомрачительно быстро, как сотни или тысячи в секунду.
  • Изолированный: тест четко выявляет неисправность.
  • Повторяется: я могу запустить его несколько раз, и каждый раз он будет проходить или выходить из строя одинаково.
  • Самопроверка: тест однозначно не пройден.
  • Своевременное: производится в режиме реального времени с небольшими изменениями кода.

Карта № 3: ядро ​​TDD

  • Красный: тест не пройден
  • Зеленый: тесты пройдены
  • Refactor: чистый код и тесты
3 голосов
/ 20 августа 2008

Отличным ресурсом для «лучших практик» является Блог тестирования Google , например, недавняя публикация Написание тестируемого кода - фантастический ресурс. В частности, их еженедельные посты из серии «Тестирование в туалете» отлично подходят для публикации вокруг вашего куба или туалета, поэтому вы всегда можете подумать о тестировании.

3 голосов
/ 20 августа 2008

Широко используется так называемый xUnit каркас. Первоначально он был разработан для Smalltalk как SUnit, развился в JUnit для Java, и теперь имеет много других реализаций, таких как NUnit для .Net. Это практически стандарт де-факто - если вы говорите, что используете модульные тесты, большинство других разработчиков будут предполагать, что вы имеете в виду xUnit или подобное.

1 голос
/ 20 августа 2008

Семейство xUnit является основой модульного тестирования. Они интегрированы в Netbeans, Eclipse и многие другие IDE. Они предлагают простое, структурированное решение для модульного тестирования.

Одна вещь, которую я всегда стараюсь делать при написании теста, - минимизировать использование внешнего кода. Под этим я подразумеваю: я стараюсь свести к минимуму код настройки и демонтажа для теста, насколько это возможно, и стараюсь максимально избегать использования других модулей / блоков кода. Хорошо написанный модульный код не должен требовать слишком много внешнего кода при настройке и демонтаже.

0 голосов
/ 28 августа 2008

Не забудьте о поддержке рефакторинга. ReSharper на .NET обеспечивает автоматический рефакторинг и быстрые исправления отсутствующего кода. Это означает, что если вы напишите вызов чему-то, что не существует, ReSharper спросит, хотите ли вы создать недостающий фрагмент.

0 голосов
/ 20 августа 2008

NUnit - хороший инструмент для любого из языков .NET.

Модульные тесты можно использовать несколькими способами:

  1. Тестовая логика
  2. Увеличить разделение блоков кода. Если вы не можете полностью протестировать функцию или часть кода, то составляющие его части слишком взаимозависимы.
  3. Разработка диска, некоторые люди пишут тесты до , они пишут код для тестирования. Это заставляет вас думать о том, что вы хотите, чтобы код делал , а затем дает вам определенное руководство по достижению этого.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...