Подтвердить что ты не робот

Как автоматически создавать отчеты о производительности для приложения iOS?

Для некоторых моих проектов приложений iOS я хочу, чтобы мой CI-сервер мог сообщить о следующих свойствах:

  • время запуска
  • частота кадров

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

  • Сервер CI будет Jenkins.
  • Я могу использовать Transporter Chief, чтобы получить встроенное приложение на iPad.
  • Чтобы измерить время запуска, я мог найти продолжительность между запуском main() и оставить application:didFinishLaunchingWithOptions:.
  • Чтобы измерить частоту кадров, я могу положить CADisplayLink в приложение и попробовать его свойство duration.
  • Если эти тесты выводят JMeter XML, то Jenkins может отображать вывод через плагин Performance.

То, что я не разработал, - как мне вставлять эти тесты в мое приложение и запускать его на iPad? Как описано выше, я могу развернуть приложение на iPad, но тогда я не знаю, как я запустил его для сбора результатов тестов. Мои модульные тесты работают на симуляторе - я не хочу, чтобы тесты производительности были очевидными: -).

Я предполагаю, что есть решение, связанное с джейлбрейком iPad и управлением приложением через SSH, я бы предпочел не спускаться по этому маршруту, если это возможно. Если вы это сделали и можете объяснить, как это работает, мне все равно хотелось бы услышать об этом.

4b9b3361

Ответ 1

Я также использую fruitstrap для установки приложений на устройстве в CI. Что касается загрузки приложения, я знаю два способа:

  • Используйте фруктовый лоток с прикрепленным отладчиком

    • Я знаю команды, которые сделали это, чтобы выполнить тесты интеграции KIF на устройствах в CI. Я играл с фруктовым ремешком, чтобы загрузить его на устройство, но сам не сделал лишний шаг для автоматизации всего этого.
    • бесстыдный плагин для моего сообщения на фруктовом репродукторе: http://www.stewgleadow.com/blog/2011/11/05/installing-ios-apps-on-the-device-from-the-command-line/
  • Используйте инструмент командной строки instruments с помощью UIAutomation

    • Я знаю, что инструмент инструментов может автоматически загружать приложения на устройство в CI (я бы хотел, чтобы он также их установил, но у нас есть плод для этого, пока Apple не исправит его). Таким образом, вы можете написать действительно простой небольшой тест UIAutomation, который дал вашему приложению достаточно времени для анализа производительности.
    • Джонатан Пенн имеет приятный небольшой демонстрационный проект для UIAutomation и сборки script, который может быть интегрирован с шагом "install", используя fruistrap, чтобы попробовать его на устройстве.

В обоих случаях я использую небольшую оболочку для libusb, чтобы дать мне идентификатор устройства подключенных устройств, поэтому чем больше устройств подключаюсь к машине CI, тем больше устройств, на которых он запускает тесты, https://github.com/sgleadow/iphone_detect

Ответ 2

Можно ли запустить приложение на устройстве с помощью lldb?

Если это так, оно также может захватить вывод журнала.