Как начать модульное тестирование? - PullRequest
6 голосов
/ 19 августа 2009

Я знаю, что модульное тестирование желательно, и я заинтересован в проведении модульного тестирования. Единственная проблема в том, что я понятия не имею, с чего начать. Поэтому мой вопрос: как мне узнать о модульном тестировании и начать его? В частности, я часто пишу Java-код в NetBeans и C # -код в Visual Studio и меня интересует, какие инструменты использовать и как намочить ноги. Кто-нибудь может предложить какой-нибудь совет для абсолютного юнит-тестирования n00b?

Я знаю, что есть много похожих вопросов, но меня меньше интересует, почему, и больше интересуются, как.

Ответы [ 8 ]

8 голосов
/ 19 августа 2009

Попробуйте прочитать на StackOverflow, тег unit-testing:)

Еще одной точкой входа будут теги junit и nunit

Есть много вопросов, касающихся этого.

Если вы ищете книги о модульном тестировании, попробуйте эту тему: Good C # Книга тестирования модулей . Там упоминается знаменитая книга Кента Бека «Разработка, основанная на тестировании, на примере».
Это стоит прочитать!

Удачи!

5 голосов
/ 19 августа 2009

Это Руководство по написанию тестов JUnit в NetBeans должно дать вам представление о том, как выполняется модульное тестирование с технической точки зрения. NUnit для C # работает примерно так же.

Для расширенного представления о том, как интегрировать модульное тестирование в вашу повседневную разработку, стандартным справочником является Кент Бек "Разработка через тестирование на примере". Вот широкий обзор.

5 голосов
/ 19 августа 2009

Если вы действительно хотите разбираться в модульном тестировании (и попадаете на крючок) , попробуйте его , это займет всего несколько часов!

Во-первых, я рекомендую загрузить инфраструктуру для модульного тестирования, например NUnit (если вы хотите начать с .NET / C #).

Большинство этих платформ имеют онлайн-документацию, в которой содержится краткое введение, например, NUnit Quick Start . Прочтите эту документацию, затем выберите довольно простой, автономный класс, за который вы несете ответственность. Если можете, попробуйте выбрать класс, который:

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

Попробуйте написать несколько тестов, чтобы получить хорошее представление об этом классе, затем скомпилируйте и запустите тесты.

Модульное тестирование прост в освоении и его трудно освоить (извините за клише, но оно уместно здесь), поэтому, как только вы это сделаете, начните читать вокруг: например, guerda предоставил несколько отличных ссылок в другом ответе на этот вопрос .

3 голосов
/ 19 августа 2009

Начните с малого.

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

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

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

Вы должны заметить, что создание этого класса или метода для тестирования (и, следовательно, для повторного использования) влияет на то, как вы пишете код. Вы также должны обнаружить, что размышления о том, как тестировать код заранее, заставляют задуматься и доработать дизайн сейчас, а не через какое-то время «когда времени больше». Такие простые вещи, как «Что должно быть возвращено, если передан неверный параметр?». Вы также должны чувствовать определенную уверенность в том, что код ведет себя именно так, как вы ожидаете.

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

Практический подход помог мне лучше разобраться в предмете, чем многие материалы для чтения, и помог заполнить пробелы в вещах, которые я просто не понимал. Особенно в том, что касается TDD. Это было нелогично, пока я не попробовал.

2 голосов
/ 20 августа 2009

Find-а-ошибка-записи-а-тест

В следующий раз, когда вы обнаружите ошибку в кодовой базе, до исправления, напишите тест. Тест должен провалиться. Затем исправьте ошибку. Тест должен пройти.

Если тест не пройден, в вашем тесте либо ошибка, либо ошибка в вашем исправлении.

Человек больше никогда не найдет эту ошибку в вашем коде. Модульные тесты найдут его (и быстрее, чем человек).

Это определенно небольшой старт, но он заставляет вас тестировать. Как только вы это освоите, вы, вероятно, начнете писать больше тестов, и в конечном итоге поймете, как код не будет работать и какие тесты вам нужны (например, тест для каждого бизнес-правила).

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

1 голос
/ 19 августа 2009

Ознакомьтесь с «Искусством модульного тестирования» Роя Ошерова, это хорошая книга для начинающих, поскольку она начинается в самом начале.

1 голос
/ 19 августа 2009

Хорошее начало - это купить хорошую книгу, где вы можете прочитать о юнит-тестировании.

У меня есть советы по книге под названием «Тестирование программного обеспечения с системой Visual Studio Team System 2008», в которой вы познакомитесь с основами и знаниями для более высокого уровня юнит-тестирования и практики.

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

Я бы порекомендовал прочитать «Эффективную работу с устаревшим кодом» Майкла Фезерса. Старый код часто оказывается кодом, который трудно тестировать. Книга «Перья» - отличное руководство по рефакторингу вашего кода до такой степени, что писать модульные тесты совсем несложно.

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

...