2013-05-23 4 views
14

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

Теперь, я хочу сказать, что я хочу (100-X)% ОЗУ, которое нужно использовать (рендеринг недоступен), и мое приложение имеет только X%, как я могу имитировать это и запускать свое приложение в этом состоянии?

Аналогично, допустим, у меня есть только Y% сети из-за различных других приложений, запущенных в системе, теперь я хочу отображать (100-Y)% доступности сети для имитации и запускать мое приложение в это состояние.

CPU занят для (100-Z)% и доступен только Z% времени для моего приложения, которое я хочу проверить.

Это ситуации, которые я хочу имитировать. Может ли кто-нибудь показать мне инструмент или объяснить мне способ сделать это?

ответ

7

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

  • Вы можете разработать более одного приложения (фон службы в основном), который будет нести ответственность за увеличения или уменьшения циклов процессора, Занимая или Высвобождение памяти и держать сеть занята работа в сети (сделать простой пользовательский интерфейс, чтобы дать входы)

    1. циклов процессора: Создание нескольких потоков, которые будут делать флоат операции и потребляют много много циклов процессора и может быть держать на сне, когда не требуется

    2. Память: необходимо написать код C (malloc для выделения памяти указателям) и получить доступ к этому через JNI и функцию для выпуска . используйте функцию памяти из java для отслеживания текущего использования.

    3. Сеть: сделайте задачу, чтобы загрузить огромное количество файлов из Dropbox или другого сервера, если необходимо, и следить за состоянием по мере необходимости.

после этой конфигурации запуска службы, запустите желаемое приложение и проверить при этом условии.

+0

Спасибо. Это началось некоторое время назад. Написал вопрос, чтобы вникнуть в детали, которые помогут мне смоделировать условие, точное в моих потребностях. – VoodooChild92

+1

Я хотел бы помочь вам, если вы застряли там, где –

+0

Как именно я могу заставить свой процесс занимать «X%» от общей ОЗУ? Как я могу удостовериться, что я не допущу, чтобы с памятью этого процесса произошел обмен памяти? – VoodooChild92

6

Чтобы проверить производительность вашего приложения, вы можете использовать трассировку инструменты http://developer.android.com/tools/debugging/debugging-tracing.html и проверку этого How to test the performance of an Android application?

А также http://www.borland.com/products/silkperformer/default.aspx предоставляют некоторые инструменты для тестирования производительности приложений

Можно использовать некоторые приложения, такие как https://play.google.com/store/apps/details?id=com.unstableapps.cpubenchmark&hl=en или вы может написать какое-нибудь приложение для проведения стресс-тестирования с помощью процессора и бара How can i stress my phone's CPU programatically?

3

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

ОЗУ - Каждый процесс будет иметь свою собственную память, так как в андроиде память за процесс. Этот предел кучи dalvik - это гарантированный объем памяти, которую VM предоставляет приложению. Никакое другое приложение не навязывает этому пределу. Однако есть и родная куча, которая является общей для всех приложений и процессов.

Сеть. Нехватка доступности сети можно моделировать, запустив приложение на устройстве, которое подключается к веб-серверу и обменивается сообщениями фиксированного размера с фиксированными интервалами.

CPU - Процессорные циклы, которые присуждаются вашему приложению, безусловно зависят от нагрузки, которую другие приложения загружают в CPU, но полностью зависят от операционной системы, чтобы решить, как запланированы циклы процессора. Чтобы убедиться, что ваше приложение получает только Z% от времени процессора, будет в лучшем случае приблизительным.

Если ваше требование - провести тест производительности вашего приложения (с учетом воздействия других приложений на устройстве), вы можете опробовать http://www.littleeye.co. Он предоставляет данные о производительности (Memory-Dalvik + Native, Network-2G + 3G + Wifi, Cpu cycle & Потребление энергии) вашего конкретного приложения из других приложений на устройстве. Он способен собирать данные для сборки сборки apks, что означает, что вы можете проверить производительность конечного продукта.

ОТКАЗА: Я связан с Малым Eye Labs

1

Я столкнулся с этой проблемой. Там были некоторые совместимые с Posix инструменты генерации нагрузки. Я считаю, что стресс является привлекательным инструментом, поскольку он позволяет вам контролировать нагрузку на процессор или IO. Чтобы максимально использовать это, я пишу обертку вокруг него, чтобы установить объем создаваемой нагрузки.

А вот двоичный код compiled for android.

Оригинальный сайт, stress project page

 Смежные вопросы

  • Нет связанных вопросов^_^