Лучший способ протестировать приложение Delphi

Да

console.log вызывает util.formatWithOptions изнутри. Отформатированная строка отправляется в выходной поток (например, stdout, stderr). Во время форматирования создаются некоторые переменные.

Отформатированная строка является новой переменной, на которую ссылаются, пока процесс не запишет ее в дескриптор файла.

Итак, да для каждого вызова console.log, создаются некоторые переменные. Увеличение памяти зависит от того, что и сколько раз ваш код записывает в журнал.

12
задан Osama Al-Maadeed 12 February 2009 в 09:33
поделиться

7 ответов

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

Мы собираемся выпустить первую версию нового продукта. И первые знаки хороши. Но это была большая работа. Поэтому следующий выпуск мы верная потребность некоторый способ автоматизировать тестовый процесс. Вот почему я уже представляю модульные тесты. Хотя должный к зависимостям, это не реальные модульные тесты, но необходимо запустить где-нибудь.

Вещи мы сделали:

  • Представленный больше подхода OO, потому что большая часть код была все еще процедурной.
  • Перемещенный материал между файлами.
  • Устраненные зависимости, если это возможно.

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

И возможно я являюсь немного странным, но очищающий код может быть забава. Рефакторинг без модульных тестов является опасным обязательством, особенно если существует много побочных эффектов. Мы использовали программирование пары для предотвращения глупых ошибок. И много сеансов тестирования. Но в конце у нас есть более чистый код, и количество новых представленных ошибок было чрезвычайно низким.

О, и убедитесь, что Вы знаете, что это - дорогой процесс. Требуется много времени. И необходимо бороться с тенденцией заняться больше чем одной проблемой подряд.

10
ответ дан 2 December 2019 в 04:34
поделиться

Я предложил бы, чтобы Вы запланировали использовать и DUnit и что-то как TestComplete, поскольку каждый из них служит другой цели.

DUnit является большим для Поблочного тестирования, но является трудным использовать для полного тестирования приложения и тестирования UI.

TestComplete является одним из некоторых автоматизированные продукты тестирования, который на самом деле имеет поддержку Delphi, и наш инженер по контролю качества говорит мне, что их поддержка очень хороша.

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

С большим (существующим) приложением Вы находитесь в трудной ситуации относительно реализации автоматизированного тестирования.

Моя рекомендация состоит в том, чтобы настроить Поблочное тестирование сначала, в сочетании с автоматизированным сервером сборки. Каждый раз, когда кто-то регистрирует что-либо к управлению исходным кодом, Модульные тесты выполняются автоматически. НЕ пытайтесь настроить модульные тесты на все прямо - это - просто слишком большое усилие для существующего приложения. Просто не забудьте создавать модульные тесты каждый раз, когда Вы добавляете новую функциональность, и каждый раз, когда Вы собираетесь внести изменения. Я также настоятельно рекомендую что каждый раз, когда об ошибке сообщают, что Вы создаете модульный тест, который воспроизводит ошибку перед фиксацией его.

14
ответ дан 2 December 2019 в 04:34
поделиться

Я не могу ответить на все, поскольку я никогда не использовал testcomplete, но я могу ответить на некоторых из тех.

1 - Да. Регрессионное тестирование стоит того. Довольно неловко Вам как разработчик, когда клиент возвращается Вам, когда Вы повредили что-то, что это раньше работало. Всегда хорошая идея удостовериться все, что раньше работало, все еще делает.

4 - Oracle имеет что-то названное Ретроспективным кадром, который позволяет Вам создать точку восстановления в базе данных. После выполнения тестирования, можно просто перейти назад к этой точке восстановления. Можно записать сценарии для использования его также, FLASHBACK DATABASE TO TIMESTAMP (FEB-12-2009, 00:00:00);, и т.д.

3
ответ дан 2 December 2019 в 04:34
поделиться

Мы смотрим на использование VMware для изоляции части нашего тестирования.

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

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

3
ответ дан 2 December 2019 в 04:34
поделиться
  1. Действительно ли это стоит того?

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

  1. Это было бы хорошим способом протестировать?

Я сказал бы, что надлежащий набор тестов DUnit является лучшим первым шагом. Однако, если у Вас есть большая кодовая база, которая не спроектирована для тестирования, настраивание функциональных испытаний является еще большей болью, чем установка тестов GUI.

  1. Результат теста должен в моей базе данных (Oracle), быть там простым способом в testcomplete для проверки этих значений (несколько полей в нескольких таблицах)?

TestComplete имеет интерфейс ADO и BDE. Или можно использовать интерфейс OLE в VBScript для доступа ко всему, что это доступно.

  1. Существует ли путь в testcomplete для определения параметров командной строки для exe?

Да.

3
ответ дан 2 December 2019 в 04:34
поделиться

Я должен был бы установить тестовую базу данных, чтобы сделать все автоматизированное тестирование, там будет простой способ автоматизировать сброс тестового дб?

Транзакции использования: выполните откат когда завершенный тест. Это должно вернуться все к начальному состоянию.

Рекомендуемое чтение:

http://xunitpatterns.com/

0
ответ дан 2 December 2019 в 04:34
поделиться

Один способ представить unittesting в (старом) приложении мог состоять в том, чтобы иметь "Базу данных Start" (как функция "Flashback", описанная Rich Adams). Программа som unittest использующий DUnit для управления GUI. Se "тестирование GUI с DUnit" на http://delphixtreme.com/wordpress/?p=181

Каждый раз тест запускается путем восстановления к "Базе данных Start", потому что, затем известный набор данных, может использоваться.

0
ответ дан 2 December 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: