servicios ios - experto java · especialista universitario en desarrollo de aplicaciones para...

41
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles © 2011-2012 Depto. Ciencia de la Computación e IA Servicios iOS Sesión 3: Depuración y pruebas jueves 15 de marzo de 12

Upload: phungcong

Post on 13-Jun-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011-2012 Depto. Ciencia de la Computación e IA

Servicios iOS

Sesión 3: Depuración y pruebas

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Índice de contenidos• Trazas de seguimiento• NSLogs• Asserts

• El depurador de XCode• Breakpoints: Uso y tipos• Acciones disponibles en depuración

• Objetos Zombie• ¿Qué son y para qué sirven?• Configuración en XCode

• Instruments• Activar Instruments• Encontrando fugas de memoria

• Pruebas de unidad

2

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Trazas de segumiento• Trazas de seguimiento• NSLogs• Asserts

3

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

NSLogs (1)• Framework: FoundationKit• Equivalente a: fprintf(...).• Modificar el código fuente• Mostrar en consola el estado de variables• Parámetro NSString• Uso de especificadores de formato:• %@: Cadenas de texto y objetos.• %i: Enteros (integer)• %d: Decimal (float)• %.02f: Número con dos decimales• %ld: Entero Long• %p: Puntero, referencia a un objeto.• Otros...

4

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

NSLogs (2)• Especificador de texto para mostrar la descripción de un objeto:

• Mostrará la información más relevante del elemento window.• Otros objetos:

NSStringNSDictionary...

5

NSLog(@"Descripción del objeto window: %@", self.window);

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Trazas de seguimiento• Trazas de siguimiento• NSLogs• Asserts

6

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Asserts (1)• Usado por los programadores para comprobar partes del

código:• Valores de variables.• Condiciones.

• Usar sólo durante el desarrollo.• Si falla el Assert lanzará una excepción.• Objective-C: NSAssert y NSAssert2.• NSAssert es equivalente a assert• NSAssert2 permite más parámetros en la descripción.

7

jueves 15 de marzo de 12

// Uso de la macro assert()assert(valor < maximoValor && @"El valor es demasiado grande!"); // Uso de NSAssert2NSAssert2(valor < maximoValor, @"El valor %i es demasiado grande (max.:%i)!", valor, maximoValor);

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Asserts (2)• Uso de NSAsserts:

8

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Asserts (3)• Desactivar los asserts para compilar el proyecto para

distribución (release).• Directiva NS_BLOCK_ASSERTIONS

9

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

El depurador de XCode• El depurador de XCode• Breakpoints: Uso y tipos• Acciones disponibles en depuración

10

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Breakpoints• Internamente: GDB, el depurador de GNU. Aunque podemos

cambiarlo a LLDB.• Podremos usar la línea de comandos: http://www.gnu.org/s/gdb/documentation/

• Sistema mejorado con XCode 4.• Ejecutar el proyecto en modo depuración (debug).• Activar breakpoints desde XCode

11

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Breakpoints: creación en XCode (1)• Pulsar el número de línea en donde queremos activarlo.• Estado de un breakpoint:• Activado: Color azul.• Desactivado: Color azul semitransparente.

• Navegador de breakpoints:

12

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Breakpoints: creación en XCode (2)• Breakpoints condicionales:• Opción de activar un breakpoint si cumple una condición:

ctrl + click en un breakpoint.

13

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Breakpoints: Tipos• Además del breakpoint común existen dos tipos más:• Exception Breakpoint• Symbolic Breakpoint.

• Se crean desde el botón (+) de la parte inferior del navegador de breakpoints.

14

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Exception Breakpoint• Se ejecuta cada vez que salta una excepción en la ejecución.• Detiene la ejecución en el bloque catch o en throw.• Acción personalizable (log o sonido).• Opción de continuar la ejecución.

15

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Symbolic Breakpoint• Se ejecuta cuando una función o método específico se ejecuta.• El campo “símbolo” puede ser: • El nombre de un método: pathsMatchingExtensions:• El método de una clase: [SKTLine drawHandlesInView]• Un nombre de una función: _objc_msgForward

• Acción personalizable (log o sonido).• Opción de continuar la ejecución.

16

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

El depurador de XCode• El depurador de XCode• Breakpoints: Uso y tipos• Acciones disponibles en depuración

17

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Acciones disponibles en depuración (1)• Analizar los valores de las variables.• Crear un watchpoint: breakpoint en variable. La ejecución se

detendrá cuando el valor de la variable cambie.• Usar la línea de comandos. Comandos de GDB.• Editar el listado de breakpoints. Podemos desactivar, activar,

borrar breakpoints durante la depuración.• Cambiar la localización de la aplicación (simular GPS).

18

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Acciones disponibles en depuración (2)• Continuar hasta la siguiente línea in entrar en funciones (step

over, n)• Continuar hasta el siguiente breakpoint (continue, c)• Continuar hasta la siguiente línea entrando en las funciones

(step into, s)• Empezar de nuevo o abortar la ejecución (finish, f)

19

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Objetos Zombie• Objetos Zombie• ¿Qué son y para qué sirven?• Configuración en XCode

20

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

¿Qué son y para qué sirven? (1)• Parámetro de compilación.• Proporciona más detalles cuando se producen excepciones

relacionadas con accesos a memoria.• Nombre: NSZombieEnabled.

21

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

¿Qué son y para qué sirven? (2)• Ejemplo:• Liberamos de memoria una variable que ya hemos liberado

anteriormente.• Sin usar objetos Zombie:

• Usando objetos Zombie:

22

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Objetos Zombie• Objetos Zombie• ¿Qué son y para qué sirven?• Configuración en XCode

23

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Configuración en XCode• Activar: Edit Scheme > Diagnostics > Enable Zombie Objects.

24

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Instruments• Instruments• Activar Instruments• Encontrando fugas de memoria

25

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Activar Instruments (1)• Aplicación adicional al depurador de XCode. Se instala junto

con XCode.• Varias herramientas disponibles divididas por el componente del

sistema a analizar: Memoria, CPU y Sistema de ficheros.

• Objetivo: analizar el uso de la memoria y comprobar si existen fugas de memoria (memory leaks).

26

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Activar Instruments (2)

27

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Activar Instruments (3)• Menú principal de XCode: Product > Profile.• Podemos analizar la ejecución del simulador o del dispositivo.• Para analizar las fugas de memoria seleccionamos las

herramientas Allocations y Leaks.• Allocations -> Analizar el uso de la memoria.• Leaks -> Analizar fugas de memoria.

28

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Herramienta Allocations• Allocations:• En azul las reservas de memoria que se van produciendo.• Listado de objetos que van reservando memoria ordenados por la

cantidad que reservan.

29

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Herramienta Leaks• Leaks:• En rojo las fugas de memoria (objetos que han reservado

memoria y la han liberado).• Si seleccionamos una fuga de memoria accederemos al código

fuente en donde se genera esta fuga.• Podemos corregir las fugas de memoria desde Instruments

cambiando el código fuente.

30

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Encontrando fugas de memoria• Instruments• Activar Instruments• Encontrando fugas de memoria

31

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Encontrando fugas de memoria (1)• Pantalla principal de Leaks en funcionamiento:

32

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Encontrando fugas de memoria (2)• Configuración de detección de Leaks cada cierto tiempo:

33

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Encontrando fugas de memoria (3)• Análisis de la traza de una fuga de memoria:

34

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Pruebas de unidad• Pruebas de unidad

35

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Pruebas de unidad• Objetivo: probar el funcionamiento de un módulo o un método

concreto y reducir el número de fallos.• XCode integra la generación de tests de unidad.• Un grupo de tests de unidad (test bundle) contiene varios tests.• Un test bundle prueba una funcionalidad de la aplicación.• Framework: SenTestingKit

36

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Creando tests de unidad (1)• Al crear un proyecto en XCode podemos incluir tests de unidad.

37

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Creando tests de unidad (2)• Target específico en XCode:

38

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Creando tests de unidad (3)• Macros disponibles en el framework SenTestingKit• Método setUp: crear las variables y configurarlas.• Método tearDown: liberar los objetos de memoria.

39

- (void)testMiTestDePrueba { ... // Configuración inicial (setup) ST... // Asserts ... ! // Liberación de memoria y variables auxiliares}

- (void)setUp { objeto_test = [[[MiClase alloc] init] retain]; STAssertNotNil(objeto_test, @"No se puede crear un objeto de la clase MiClase");} - (void)tearDown { [objeto_test release];}

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

Algunas macros...• STFail: Falla el test.• STAssertEqualObjects: Falla cuando dos objetos no son

iguales.• STAssertEquals: Falla cuando dos valores no son iguales.• STAssertNil: Falla cuando la expresión no es nil.• STAssertNotNil: Falla cuando la expresión es nil.• STAssertTrue: Falla cuando la expresión no es true.• STAssertFalse: Falla cuando la expresión no es false.• STAssertThrows: Falla cuando la expresión no lanza una

excepción.• etc...

40

https://developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/UnitTesting/AB-Unit-Test_Result_Macro_Reference/result_macro_reference.html

jueves 15 de marzo de 12

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Servicios iOS © 2011-2012 Depto. Ciencia de la Computación e IA Depuración y pruebas

• ¿Preguntas...?

41

jueves 15 de marzo de 12