18

一部の iOS アプリケーション プロジェクトでは、CI サーバーが次のプロパティをレポートできるようにしたいと考えています。

  • 起動時間
  • フレームレート

経時的なグラフと「低水準点」の両方として表示されるため、測定結果が特定の基準内にない場合、ビルドは失敗します。私はすでに必要なもののいくつかを見つけました。

  • CI サーバーは Jenkins になります。
  • Transporter Chiefを使用して、作成したアプリを iPad に取り込むことができます。
  • main()起動時間を測定するために、起動してから離れるまでの時間を見つけることができましたapplication:didFinishLaunchingWithOptions:
  • フレーム レートを測定するCADisplayLinkには、アプリに を入れて、そのdurationプロパティをサンプリングします。
  • これらのテストが JMeter XML を出力する場合、Jenkins はPerformanceプラグインを介して出力を表示できます。

私が解決していないのは、これらのテストをアプリに埋め込んで iPad で起動するにはどうすればよいかということです。上記のように、アプリを iPad にデプロイできますが、テストの結果を収集するためにアプリを起動する方法がわかりません。私の単体テストはシミュレーターで実行されています-パフォーマンステストを実行したくないのは明らかです:-)。

iPad のジェイルブレイクと SSH 経由でのアプリの制御を含む解決策があると思いますが、可能であれば、そのルートをたどりたくありません。あなたそれを行い、それがどのように機能するかを説明できるなら、私はまだそれについて聞きたい.

4

2 に答える 2

9

また、フルーツストラップを使用して、CI でデバイスにアプリをインストールしています。アプリの起動に関しては、次の 2 つの方法を知っています。

  1. デバッガーをアタッチした状態でfruitstrapを使用する

  2. instrumentsUIAutomation でコマンド ライン ツールを使用する

    • インスツルメント ツールが CI でデバイス上のアプリを自動的に起動できることは知っています (アプリもインストールしたいのですが、Apple が修正するまではそのためのフルーツストラップがあります)。したがって、アプリにパフォーマンス分析を行うのに十分な時間を与える、非常に単純で小さな UIAutomation テストを作成できます。
    • Jonathan Penn は、UIAutomation の素敵な小さなデモ プロジェクトとビルド スクリプトを持っています。これは、fruistrap を使用して「インストール」ステップと統合し、デバイスで試してみることができます。

どちらの場合も、libusb の小さなラッパーを使用して、接続されているデバイスのデバイス ID を取得します。そのため、CI マシンにプラグインするデバイスが増えるほど、テストを実行するデバイスが増えますhttps://github.com/sgleadow/ iphone_detect

于 2012-07-26T13:36:07.073 に答える
1

lldbを使用してデバイスでアプリを起動できますか?

その場合、ログ出力をキャプチャできる可能性もあります。

于 2012-07-26T13:08:13.567 に答える