instruments 3 en 1

40
Instruments: el 3 en 1 de los desarrolladores Juan A. Martín

Upload: juan-antonio-martin

Post on 03-Jul-2015

168 views

Category:

Technology


0 download

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

Page 1: Instruments 3 en 1

Instruments: el 3 en 1 de los desarrolladores

Juan A. Martín

Page 2: Instruments 3 en 1

Agenda

• Intro

• Algunos escenarios de uso:

• Memoria

• Gráficos

• UI

Page 3: Instruments 3 en 1

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

Page 4: Instruments 3 en 1

Intro

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

• Gauges

• Instruments

Page 5: Instruments 3 en 1

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

Page 6: Instruments 3 en 1
Page 7: Instruments 3 en 1

Intro

• Cuando Gauges no cubre nuestras necesidades tenemos Instruments

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

Page 8: Instruments 3 en 1

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

• …

Page 9: Instruments 3 en 1

Instruments

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

Page 10: Instruments 3 en 1
Page 11: Instruments 3 en 1

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)

Page 12: Instruments 3 en 1

Instruments

Page 13: Instruments 3 en 1

Instruments

• Podemos personalizar la herramienta a nuestro antojo

• Crear plantillas para aplicar en nuestros proyectos

• Crear nuevos grupos

Page 14: Instruments 3 en 1

Instruments

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

• Demo

Page 15: Instruments 3 en 1

Instruments

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

• Demo

Page 16: Instruments 3 en 1

Instruments

• Captura de datos, podemos obtener de:

• All Processes

• Attach to Process

• Choose Target

Page 17: Instruments 3 en 1

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

Page 18: Instruments 3 en 1

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

Page 19: Instruments 3 en 1

Instruments

• Modos:

• Hay plantillas que directamente no usan UI mientras capturan

• iprofiler

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

Page 20: Instruments 3 en 1

Instruments

!

• DEMOS

Page 21: Instruments 3 en 1
Page 22: Instruments 3 en 1

memory leaks

Page 23: Instruments 3 en 1

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.

Page 24: Instruments 3 en 1

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

Page 25: Instruments 3 en 1

Memory leaks

Page 26: Instruments 3 en 1

Core Animation

Page 27: Instruments 3 en 1

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…

Page 28: Instruments 3 en 1

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

Page 29: Instruments 3 en 1

UI Testing

Page 30: Instruments 3 en 1

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

Page 31: Instruments 3 en 1

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

Page 32: Instruments 3 en 1

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

Page 33: Instruments 3 en 1

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});

Page 34: Instruments 3 en 1

Stress Test Tool

Page 35: Instruments 3 en 1

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});

}

Page 36: Instruments 3 en 1

Análisis de Rendimiento Bottleneck, CPU, GCD…

Page 37: Instruments 3 en 1

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

Page 38: Instruments 3 en 1

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

Page 39: Instruments 3 en 1

Análisis de Rendimiento

• Un poco menos básicos

• Energia, GPS, Bluetooth

• Sampler, GCD, Connections

Page 40: Instruments 3 en 1

{ “me”: {“speaker” : “Juan A. Martin”, “company”: “CloudOnMobile”, “contact”: { "mail":"[email protected]”, "twitter":"@byjuanamn", "skype":"by-juanamn" }

} }

Muchas Gracias