JUnit Тестирование для сценариев автоматического тестирования?
Я недавно присоединился к этой организации, в которой я сейчас работаю, и попросил меня управлять проектом, чтобы пересмотреть, расширить и поддерживать существующую среду автоматизированного тестирования, написанную на Java, которая использует структуру на основе ключевых слов и RFT. Я был разработчиком в глубине души всю свою жизнь, хотя я перешел на Agile менеджмент. По привычке я пишу модульные тесты для проверки поведения перед написанием исходного кода. Эта структура не имеет одного модульного теста. Мой первый инстинкт был "где юнит тесты?" Я знаю, что могу написать модульные тесты для классов инфраструктуры тестирования. Во время обсуждения здесь было сказано, что написание модульных тестов для тестирования фреймворков или скриптов может быть пустой тратой времени. Я дипломатически не согласен.
Вопрос 1: мог ли мой инстинкт ошибаться? Есть ли у вас какие-либо предложения, которые могут быть полезны для борьбы с моим делом.
Вопрос 2: И может ли это стать рекурсивным? Написание тестов для тестов и тестов и так далее. Есть ли правило, когда нужно прекращать написание модульных тестов? Есть ли концепция тестирования рекурсии тестера?
Я снова за юнит-тесты, но никогда раньше не был в такой ситуации. Я не мог найти много по этой теме из моих исследований.
РЕДАКТИРОВАТЬ
Спасибо всем за ваши интересные ответы! Юнит тесты обязательно будут написаны без сомнений! Наивысший приоритет будет отдан нашим самописным базовым классам и методам, которые используются чаще всего и будут иметь высокую рентабельность инвестиций и высокий штраф за неудачу. План состоит в том, чтобы постепенно и постепенно достичь высокого уровня покрытия кода для всего проекта (Java)
5 ответов
Вопрос 1: мог ли мой инстинкт ошибаться? Есть ли у вас какие-либо предложения, которые могут быть полезны для борьбы с моим делом.
Ваши инстинкты не ошибаются. Если в вашей среде тестирования есть ошибка, она может пропустить ошибки, например, пропуская тесты.
Вопрос 2: И может ли это стать рекурсивным? Написание тестов для тестов и тестов и так далее. Есть ли правило, когда нужно прекращать написание модульных тестов? Есть ли концепция тестирования рекурсии тестера?
Нет. Потому что тестовые случаи должны быть настолько простыми, что ошибки не могут пройти проверку. Каждый тест должен быть тривиальным, или тестируемый класс нуждается в рефакторинге. Очевидно, иногда это легче сказать, чем сделать.
Я бы изучил структуру тестов и добавил тесты там, где сбой действительно повредил бы.
Если ваша организация написала эту среду тестирования, то вам следует выполнить ее модульное тестирование. Если вы используете существующую платформу тестирования (например, JUnit), я бы не стал это тестировать. Оставьте это тестирование создателю инфраструктуры тестирования.
Итог: вы написали это, вы проверяете это.
Было очень хорошее интервью с Кентом Беком по радио Software Engineering, где он объяснил свою философию о том, когда писать тесты, когда делать TDD и т. Д.
Он сказал, что, когда он пишет исследовательский код, код, который не будет передан, или код, который не будет длиться долго, решение проблемы, он не пишет тесты. В остальное время он пишет тесты.
Чтобы ответить на ваш вопрос, задайте себе вопрос. Поможет ли вам рефакторинг, расширение, поддержка этой среды, если у вас есть тесты? Если да, напишите тесты.
1) Обычно, хорошая практика рекомендует писать тесты перед рефакторингом (чтобы убедиться, что поведение не меняется) или перед созданием нового кода (стандартное TDD).
2) Да, это может стать рекурсивным, но у вас есть только столько времени в течение дня, поэтому вам нужно подумать о том, какие усилия вы тратите на дополнительную ценность, которую вы вносите в проект.
Написание модульных тестов может помочь вам лучше понять существующий код. Лично я бы писал тесты.
Чтобы что-то проверить, вам нужна ссылка, что-то, с чем можно сравнить результаты. Для каркаса или сценария производственный код может использоваться в качестве справочного - если версии не совместимы: если все тесты пройдут с каркасом N и с каркасом N+1, тогда нет [видимой] регрессии, будут ли все необходимые ограничения (при условии достаточного покрытия...). Вот где написание модульных тестов для тестирования фреймворков или скриптов можно считать пустой тратой времени.
Существующие фреймворки, вероятно, работают в большинстве случаев, поэтому тратить время на то, чтобы поставить их на модульные тесты, может быть пустой тратой. Как и в случае с любым другим программным обеспечением, написание модульных тестов при добавлении новых функций или при переделке некоторых частей кода будет полезным.
Я обычно не пишу модульные тесты для своих тестовых программ или только для определенных частей, где автоматизированные тесты полезны. Я выращиваю их вместе с рабочим кодом, используя каждый из них в качестве основы для другого.
Еще одна вещь, которую следует учитывать, это то, что сами автоматизированные тесты тестируют среду автоматизированного тестирования. То есть, если вы нарушите структуру, сами тесты должны провалиться. В свете этого, возможно, не имеет смысла вкладывать средства в написание автоматических модульных тестов самой платформы.