Я знаю, что все продолжают говорить о том, как вы должны сначала тестировать все, но я склонен придерживаться модульного тестирования более сложных вещей.
Мое правило заключается в том, что я создаю автоматизированные тесты длявещи, которые я ожидаю порвать с регулярностью, или вещи, которые я не сразу замечу, сломаны.И, прежде всего, я хочу, чтобы он тестировал вещи, которые я не могу / не буду тщательно перепроверять сам.
Например, модуль «Вычислить некоторые большие сложные вещи, используя 47 различных переменных» должен иметькуча тестов, которые обеспечивают хорошее покрытие кода и должны охватывать все возможные пути кода, но код, который фактически сохраняет результаты в базу данных, не обязательно нуждается в тесте, особенно если он выполняет простую работу CRUD.
Кроме того, мне нравится использовать автоматические тесты пользовательского интерфейса (с использованием WatiN или чего-то подобного) для создания регрессионных тестов для моих сайтов, чтобы при изменении некоторых основных компонентов я мог запустить проверку работоспособности, чтобы убедиться, что я не взорвал некоторые из них.угол обзора сайта.
В конце концов, это все о рентабельности инвестиций.Сколько времени вы вкладываете в это, и сколько вы получаете от этого.Если ваши модульные тесты приближаются к 100% -ному покрытию кода на каком-то уровне доступа к данным вашего бизнес-приложения CRUDy, вы просто и просто тратите свое время и деньги своего работодателя.Но если вы строите ракетные корабли или медицинские устройства или если у вас два основных магазина, у которых нет ресурсов для отдела контроля качества, большое количество модульных тестов может сэкономить вам много времени, денег и / или жизней..