instruments 3 en 1

Post on 03-Jul-2015

168 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Visión general de la herramienta Instruments de Xcode 5.0, esta presentación fue realizada en la en la NSCoder Night de Madrid el 2/7/2014

TRANSCRIPT

Instruments: el 3 en 1 de los desarrolladores

Juan A. Martín

Agenda

• Intro

• Algunos escenarios de uso:

• Memoria

• Gráficos

• UI

Intro

• Las Apps son cada vez más complejas, expuestas a factores externos, integradas con otros complementos (soft, hard)

• Necesitamos saber que sucede mientras nuestras Apps están siendo usadas

• Necesitamos saber por qué no funcionan como esperábamos

Intro

• Podemos conocer que sucede en nuestra App a través de dos herramientas:

• Gauges

• Instruments

Intro

• Gauges: integrado en el propio Xcode, nos proporciona información básica de CPU y memoria mientras depuramos

• Info básica pero muy util, p.e. si usamos colas y les ponemos nombre podemos ver la actividad del Thread a simple vista

Intro

• Cuando Gauges no cubre nuestras necesidades tenemos Instruments

• Instruments es una herramienta complementaria a Xcode, está incluida en el entorno.

Instruments• Instruments es una herramienta complementaria a Xcode, está

incluida en el entorno.

• Con Instruments podemos:

• Examinar el comportamiento de uno o varios procesos

• Hacer un análisis de rendimiento

• Automatizar test de UI

• Someter nuestras Apps a Stress

• …

Instruments

• Visión rápida de Instruments (ver instruments)

Instruments

• Requisitos: podemos utilizar la herramienta sobre los dispositivos o el simulador, en función al tipo de plantilla que usemos será necesario añadir alguna variable de entorno o setting de el dispositivo.

• Limitaciones: No siempre podemos aplicar las plantillas sobre los dispositivos (p.e. Core Data)

Instruments

Instruments

• Podemos personalizar la herramienta a nuestro antojo

• Crear plantillas para aplicar en nuestros proyectos

• Crear nuevos grupos

Instruments

• Grupos Custom nos permiten agrupar los contadores como mejor se ajusten a nuestras necesidades

• Demo

Instruments

• Las plantillas custom nos permiten agrupar varios tipos de instruments bajo el mismo documento y reutilizar para otros proyectos

• Demo

Instruments

• Captura de datos, podemos obtener de:

• All Processes

• Attach to Process

• Choose Target

Instruments• Captura de datos, pueden ser:

• Simulador

• Dispositivo conectado

• Sin conectar, ideal para apps deportivas :-)

• Necesitamos configurar la WIFI con Bojour y multicast -> ON en el AP

Instruments• Modos:

• La captura de datos con Instruments aumenta la carga y disminuye el rendimiento de la App analizada

• Es posible usar Instruments de manera alternativa: Deferred Mode (modo silencioso), no vemos la interfaz de la herramienta pero captura y genera un fichero con los datos recopilados

Instruments

• Modos:

• Hay plantillas que directamente no usan UI mientras capturan

• iprofiler

• $ iprofiler -timeprofiler -activitymonitor -T 10 -d ~/temporales/

Instruments

!

• DEMOS

memory leaks

Memory leaks

• A veces nuestras Apps no liberan las referencias de los objetos creados

• Con ARC este problema ha sido casi erradicado…. pero no exterminado.

• Es posible encontrar memory leaks en frameworks antiguos no ARC y sobre todo en APIs C.

Memory leaks

• Instruments nos ofrece una plantilla llamada Leaks, es usada siempre de manera conjunta con Allocations

• Si la app tiene algún leak, nos muestra el nombre de la clase del objeto que lo provoca o el código responsable

Memory leaks

Core Animation

Core Animation• Esta plantilla solo está disponible para capturar datos del

dispositivo

• Podemos medir y capturar la actividad de CA en nuestra App. Los datos los devuelve en fps

• los contadores son:

• Color Blended Layers.

• Color Hits Green and Misses Red

• etc…

Core Animation

• También tenemos plantillas especificas para OpenGL:

• Analizar el uso directo e indirecto de OpenGL

• Detectar posibles cuellos de botella en driver de OpenGL

UI Testing

UI Testing

• Una de las funcionalidades más interesantes, el desarrollo de Apps el peso de la UI es importante.

• Hacer Testing de la UI puede ser tan sencillo como usar tropas de testers “probando” o usar una herramienta que simule una sesión de un usuario y la ejecute las veces que sean necesarias

UI Testing

• Con instruments tenemos una plantilla llamada Automation

• Esta plantilla espera un script JS con la secuencia de navegación

• Desde esta plantilla tenemos un editor que nos permite capturar la navegación, traducirla a JS y ejecutarla

UI Testing

• Para que esto funcione tenemos que tocar nuestro código y establecer la propiedad Accesibility a ON, además del accesibiltyLabel de cada uno de los elementos que queremos capturar

• Cada script es exclusivo de una App, no es posible reutilizar

UI Testing• var target = UIATarget.localTarget();

!

• target.frontMostApp().tabBar().buttons()["UITest"].tap();

• target.frontMostApp().mainWindow().buttons()["Boton1"].tap();

• target.frontMostApp().mainWindow().buttons()["Boton2"].tap();

• target.frontMostApp().tabBar().buttons()["Animation"].tap();

• target.tap({x:248.00, y:86.50});

• target.tap({x:55.50, y:480.50});

Stress Test Tool

UI Testingfor ( i =0; i <100; i++){

var target = UIATarget.localTarget();

target.frontMostApp().tabBar().buttons()["UITest"].tap();

target.frontMostApp().mainWindow().buttons()["Boton1"].tap();

target.frontMostApp().mainWindow().buttons()["Boton2"].tap();

target.frontMostApp().tabBar().buttons()["Animation"].tap();

target.tap({x:248.00, y:86.50});

target.tap({x:55.50, y:480.50});

}

Análisis de Rendimiento Bottleneck, CPU, GCD…

Análisis de Rendimiento

• Tenemos varias plantillas que van desde una visión general de los contadores más básicos (CPU, Memoria) hasta la posibilidad de establecer PMCs sobre algunos aspectos específicos del hardware

Análisis de Rendimiento• Básicos

• Time Profiler, nos proporciona info básica del tipo tiempo de proceso, llamadas, etc…

• Activity Monitor

• System Trace: Es ejecutado en modo silencioso con el objetivo de no “molestar”, obtiene datos de Memoria (Allocations), CPU

Análisis de Rendimiento

• Un poco menos básicos

• Energia, GPS, Bluetooth

• Sampler, GCD, Connections

{ “me”: {“speaker” : “Juan A. Martin”, “company”: “CloudOnMobile”, “contact”: { "mail":"juan.antonio.martin@gmail.com”, "twitter":"@byjuanamn", "skype":"by-juanamn" }

} }

Muchas Gracias

top related