Перейти к содержимому

Фотография

Чем тестировать утечки памяти в Delphi-приложениях?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 checo

checo

    Опытный участник

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 24 июля 2012 - 07:34

(Кладу этот топик не в ветку SmartBear, а в общую, т.к. вопрос по инструментам тестирования вообще)

Сначала опишу ситуацию:
Мы используем TestComplete для тестирования Delphi-приложений. В принципе, мы уже периодически сталкивались с тем, что во время длительных тестов память, занимаемая приложением, начинает бесконтрольно расти. Причем вручную этого поймать не удается.
В результате, мы пишем скрипты для автоматизированного тестирования приложений на утечки памяти. Результаты получаются весьма показательные, но разработчики не понимают, в чем дело.

Только что наткнулся на такой вот топик в поддержке.
Цитаты: "TestComplete активирует некоторые штуки в отладочной информации внутри приложения чтобы получить возможность выполнять тесты. Эта информация остается в памяти, так что если TestComplete хочет получить доступ к этому делу заново, всё уже готово", "TestComplete, если честно, не лучший инструмент для тестирования утечек памяти. Используйте для этого AQTime Standard".
Получается, что приложение оказывается не в состоянии корректно освободить свои ресурсы.

Но люди! AQTime - это профилировщик, и он не позволяет выполнять скрипты.
У кого-нибудь есть опыт по тестированию утечек памяти с помощью автоматизированных сценариев? Какие-нибудь инструменты могут дать адекватные результаты, или у всех эта же проблема?
  • 0

#2 Zenturio

Zenturio

    Опытный участник

  • Members
  • PipPipPipPip
  • 386 сообщений
  • ФИО:Дмитрий
  • Город:Смоленск - Москва


Отправлено 24 июля 2012 - 10:32

(Кладу этот топик не в ветку SmartBear, а в общую, т.к. вопрос по инструментам тестирования вообще)

Сначала опишу ситуацию:
Мы используем TestComplete для тестирования Delphi-приложений. В принципе, мы уже периодически сталкивались с тем, что во время длительных тестов память, занимаемая приложением, начинает бесконтрольно расти. Причем вручную этого поймать не удается.
В результате, мы пишем скрипты для автоматизированного тестирования приложений на утечки памяти. Результаты получаются весьма показательные, но разработчики не понимают, в чем дело.

Только что наткнулся на такой вот топик в поддержке.
Цитаты: "TestComplete активирует некоторые штуки в отладочной информации внутри приложения чтобы получить возможность выполнять тесты. Эта информация остается в памяти, так что если TestComplete хочет получить доступ к этому делу заново, всё уже готово", "TestComplete, если честно, не лучший инструмент для тестирования утечек памяти. Используйте для этого AQTime Standard".
Получается, что приложение оказывается не в состоянии корректно освободить свои ресурсы.

Но люди! AQTime - это профилировщик, и он не позволяет выполнять скрипты.
У кого-нибудь есть опыт по тестированию утечек памяти с помощью автоматизированных сценариев? Какие-нибудь инструменты могут дать адекватные результаты, или у всех эта же проблема?


Скажу вам честно, это по видимому тесткомплит кривая штука.
Он лезет внуть приложения, а потом не освобождает ресурсы.
Попробуйте используйте свое приложения вручную или напишите тесты на другом инструменте
Если при длительном тесте на другом инструменте с памятью ничего не случится, то виноват тесткомплит.
  • 0

#3 Vasiliy

Vasiliy

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 2 959 сообщений
  • ФИО:Касимов Василий
  • Город:Москва

Отправлено 24 июля 2012 - 13:52

Про то, что TestComplete криво работает с памятью периодически бывают замечания. Особенно если долго.
Кто-то из разработчиков даже рассказывал, что даже делали специальную убивалку для TC для продолжительных тестов. И потом перезапускали его.
  • 0

#4 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 02 августа 2012 - 06:01

Приветствую.

TestComplete не может не лезть внутрь памяти тестируемого приложения, так как это фактически единственный способ реализовать настолько полное распознавание объектов внутри приложения. С точки зрения профилирования памяти "на глазок", это действительно может представлять проблему, так как не всегда понятно кто потребляет память: приложение или TestComplete.

Как в данной ситуации может помочь AQtime?

1. Если есть утечка памяти, то, скорее всего, она существует всё время работы программы. Тот факт, что становится она заметной только при длительной работе, говорит о том что утечка небольшая, но постоянная. Для AQtime'а самого факта наличия утечки уже достаточно, чтобы её обнаружить. Ему не требуется, чтобы её размер составлял многие мегабайты. Надо просто руками под AQtime'ом прогнать цикл теста один раз и проанализировать результаты.

2. AQtime достаточно гибкий инструмент и он позволяет настроить профилирование так, чтобы из результатов были исключены вся работа с памятью, производимая модулями TestComplete'а. Или наоборот, чтобы профилировалась только работа модулей тестируемого приложения. Учитывая, что в TestComplete существует тесная интеграция с AQtime'ом, вы можете гонять свои долгие тесты в TestComplete'е, профилируя при этом тестируемое приложение AQtime'ом.
  • 2
С уважением,
Дмитрий

#5 Konstantin Permyakov

Konstantin Permyakov

    Новый участник

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Пермяков Константин


Отправлено 02 августа 2012 - 07:20

PurifyPlus хороший иструмент как для тестирования утечек памяти, так и для тестирования скорости выполненения наиболее критичных участков кода.
PufiryPlus
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных