Я недавно заметил, что мой тестовый код слишком близок к рабочему коду.Я замечаю, что тестовая архитектура (и ее поддержка) отнимает много времени и энергии от фактической разработки продукта, в то время как каждое изменение в производственном коде требует, по крайней мере, того же количества усилий (и риска !!!) втестовый код.И что еще хуже, я не чувствую, что получаю столько ударов за доллар .
Чего я хотел бы добиться, так это протестировать мой код на гораздо более высоком уровне,Я хотел бы проверить желаемое поведение , не обязательно проверять реализованную функцию .
Я не знаю, замечали ли вы, но самые лучшие тестовые примеры вручнуюобъясните что чтобы проверить не как чтобы это проверить.Я чувствую, что если бы я мог написать свои автоматизированные тесты в соответствии с той же парадигмой, фактический тест был бы изолирован от текущей реализации, и я был бы уверен, что качество моей тестовой инфраструктуры не ухудшится со временем из-за рефакторинга, вызванногоИз-за изменений в рабочем коде.
Я думаю, что сейчас я не настолько популярен, и я боюсь, что мои следующие мысли не сделают меня более популярным:
Я думаю, что большинствосовременного тестирования (а сейчас я говорю о «индустрии модерн», а не «исследования модерн») доведено до крайности.Ожидается, что мы напишем тестовый код, который будет вести себя так же, как коллектив Borg ;производственный код должен быть полностью ассимилирован (сопротивление бесполезно :-)), каждая ячейка и транзистор должны быть проверены несколькими тестами (не забывайте отрицательные тестовые случаи), предпочтительно перед реализацией.
ДаВозможно, я немного преувеличиваю, но только для того, чтобы разъяснить свою точку зрения.Тем не менее: я не думаю, что мы на самом деле заинтересованы в том, что происходит в каждом отдельном классе или функции.Большинство из нас даже не удосуживаются взглянуть на результаты тестов для отдельных функций, пока класс тестируется как «зеленый».Точно так же я не уверен, что у меня есть время, чтобы интересоваться модульными тестами и тому подобным, если поведение моего кода подтверждено как предсказуемое и ожидаемое.
Итак, что вы скажете?Я иду по неверному пути?Есть ли практический способ тестирования поведения вместо функциональности?И прежде всего: я переживу твой гнев, вызванный этим вопросом?