Мой рабочий процесс всегда заключался в том, чтобы написать один логический шаг, а затем запустить программу и проверить вывод. Этот процесс невероятно хорошо послужил мне для работы в университете. Однако, поскольку я занимаюсь разработкой, часто бывают случаи, когда простая компиляция и запуск кода занимает от 1 до 2 минут. Примеры включают загрузку программы на микроконтроллер, требующую взаимодействия с внешним сервером и неспособную реализовать автоматизацию из-за аутентификации, архитектуры программного обеспечения или сложности.
Эти типы задач очень не подходят для того, как я обычно программирую, и у меня возникают трудности с эффективным программированием. Я обычно делаю много синтаксических и логических ошибок, большинство из которых я легко выявляю тестированием. Однако при таком длительном времени ожидания этот метод занимает слишком много времени.
источник
Ответы:
Во-первых, любая интерактивная отладка великолепна. Вы хотите этого в своем наборе инструментов, потому что если это еще не так, то когда-нибудь вы действительно выиграете от этого. (Подробности зависят от языка, платформы и IDE.)
Я бы посмотрел в некоторые рамки для использования фиктивных объектов . Это позволяет окружить тестируемый компонент фиктивной экосистемой других компонентов, чтобы ваши тесты были более целенаправленными, и вы можете избежать тестирования всего как единого целого.
Кроме того, сами фиктивные объекты могут быть запрограммированы с помощью утверждений, так что вы можете проверить, действительно ли тестируемый компонент действительно выполнял определенный вызов.
источник
Я бы усердно работал, чтобы сократить время тестирования. Я работал в нескольких компаниях, занимающихся разработкой встроенного кода, и тестирование было болезненным, требовало поездок в серверную комнату, ручных FTP-операций и перезагрузок, а также нескольких команд для тестирования оборудования. Затем я присоединился к действительно хорошей группе, где я мог просто набрать «сделать тест» на своем столе и получить результаты менее чем за минуту. В эту одну минуту:
Потребовалось некоторое время, чтобы все это заработало, но усилия по автоматизации всех этих шагов окупились в сто раз по мере роста числа разработчиков.
источник
Автоматизированные тесты не являются заменой для обзора и понимания.
Возможно, вы используете тестирование как опору. Если вы делаете это, вы будете препятствовать обучению. Я не защищаю тебя, не проверяй. Вместо этого я бы порекомендовал вам перед запуском тестового обзора то, что вы написали. Понимайте, что вы написали, убедитесь, что это имеет смысл, и убедитесь, что синтаксис выглядит правильно.
источник
Вы уже дали ответ:
I usually make a lot of syntax errors and logic errors
Поэтому, усердно работая над улучшением этого, вы сможете сократить время тестирования. Синтаксические ошибки должны быть самыми первыми, которые вы должны уменьшить. Никогда не было теста по программированию с бумагой и карандашом в вашем кабинете?
У меня было то же самое, когда я перешел с PHP на Java. Мне пришлось научиться отлаживать, а не просто печатать некоторые переменные и нажимать F5 в браузере ...
источник
make a lot of
это звучит так, как будто он должен вкладывать свою энергию, чтобы улучшить егоВам нужна хорошая модульная или функциональная платформа для тестирования, которая может автоматически запускать тесты для вас, предпочтительно в фоновом режиме. Это потребует использования Mocks, как отмечалось выше, и в зависимости от языка, который вы используете, используется какое-то внедрение зависимости.
Делая ваши объекты настолько независимыми, насколько это возможно, а затем используя методы внедрения для добавления внешних ограничений, нетрудно создать тестовую платформу для вашего кода.
источник
Самое интересное происходит, когда вы просто не можете проверить свой код, кроме как используя его в гневе. Это часто случается с торговыми системами, поскольку доступные имитаторы биржи часто либо плохие, либо вообще отсутствуют, либо даже не соответствуют тому, что говорят поставщики биржевого программного обеспечения. Боюсь, это часть богатого гобелена жизни. Мой подход заключается в том, чтобы по крайней мере моя сторона транзакции была хорошо написана и хорошо документирована, чтобы ее можно было быстро изменить.
источник
Модульное тестирование; Макет приложений / симуляторов.
Это займет определенное время, и вам, возможно, потребуется собрать и обработать образцы данных для создания соответствующих макетов, но в конечном итоге это окупится: вы сэкономите все время и проблемы, с которыми столкнетесь при попытке проверить на внешнее системы.
При правильном использовании эти инструменты гарантируют, что до того, как вы приблизитесь к внешним системам, вы на 99,9% уверены, что в случае сбоя кода это вызвано чем-то во внешней системе / изменением среды, а не ошибкой в вашем собственном коде.
Я работал профессионально в течение долгого времени, как вы работали в школе, и во многих случаях это было очень эффективно. В конце концов я работал с некоторыми людьми, которые заставили меня отказаться от этой методологии и вместо этого использовать модульное тестирование и макеты.
Сейчас я не запускаю ни один проект, не продумав сначала этапы тестирования - модульное тестирование, макеты, симуляторы, образцы данных и т. Д.
источник
Может быть, использование Linter может помочь вам немного здесь.
Я был в аналогичной ситуации с моим предыдущим работодателем. Наша кодовая база была действительно огромной, и для внесения любых изменений мне пришлось кодировать, скомпилировать, затем заменить
.class
файлы на dev-сервере, затем перезапустить dev-sever с помощью скрипта restart. И, к моему ужасу, потребуется около получаса, чтобы снова запустить dev-сервер.Позже я узнал, что удаленная отладка dev-сервера также возможна.
Итак, вот что я сделал, чтобы оптимизировать свой процесс
Первый начальный этап удаленной отладки, это позволило мне увидеть точный поток кода и точные значения / состояния переменных.
Планирую как и какие изменения я внесу.
Внесение изменений, а затем сравнение различий
Кэширование ошибок с использованием линтера или компиляцией.
Предоставление оперативного исправления путем замены
.class
файлов и перезапуска.Иногда я также включал бы огромное количество операторов журнала, чтобы снова проверить поток кода и проверить проверку значений / состояний. Это мне очень помогло.
Также использование IDE с хорошим авто-осложнением может значительно помочь в уменьшении опечаток.
Надеюсь это поможет.
источник