Pruebas con TestFlight

Probar una aplicación es indispensable si planea entregar un producto robusto y confiable a sus clientes. Este artículo analizará de cerca las aplicaciones de prueba beta de iOS con TestFlight, un servicio web gratuito que facilita la distribución de compilaciones Ad Hoc y el monitoreo del uso de pruebas beta..


Introducción

El software de prueba no se limita a las pruebas beta. Existen varias técnicas para probar el software, como pruebas de unidad, pruebas de integración, pruebas de estrés, etc. Cada una de estas metodologías tiene su beneficio y su lugar en el ciclo de desarrollo. Las pruebas beta son un proceso en el que se distribuye una versión preliminar o beta a una audiencia limitada que no forma parte del equipo de desarrollo..

En los primeros días del desarrollo de iOS, no era trivial distribuir compilaciones de prueba, recopilar comentarios y recopilar informes de fallos. Sin embargo, en los últimos años han surgido algunos servicios que hacen que las pruebas beta no solo sean más fáciles, sino también triviales. En este artículo, discutiré uno de estos servicios: TestFlight. TestFlight permite a los desarrolladores distribuir compilaciones de prueba en el aire. Jugar con archivos .ipa y aprovisionar perfiles es cosa del pasado si decides formar un equipo con TestFlight..

La facilidad de distribución Ad Hoc no es la única ventaja de TestFlight. TestFlight también ofrece un SDK que le ofrece una serie de excelentes funciones con una sobrecarga sorprendentemente pequeña. Con el SDK instalado y configurado, los informes de fallos se envían a TestFlight y se simbolizan automáticamente. Otra gran característica del TestFlight SDK son los puntos de control. Puede establecer puntos de control en ubicaciones específicas en su aplicación para ver si una característica en particular se usa realmente. Los puntos de control se relacionan cuidadosamente con las sesiones. Cada vez que un usuario abre la aplicación, se inicia automáticamente una sesión. El panel de TestFlight muestra cuánto dura una sesión y qué puntos de control pasó el probador durante una sesión. La lista de características no se detiene allí. Algunas otras funciones útiles incluyen: comentarios en la aplicación, actualizaciones en la aplicación y registro remoto.


Paso 1: Comenzando

Para seguir los pasos de este tutorial, necesitará una cuenta de TestFlight. Dirígete al sitio web de TestFlight y regístrate para obtener una cuenta gratuita. Después de iniciar sesión en su cuenta de TestFlight por primera vez, se le pedirá que cree un equipo. ¿Qué son los equipos? Un equipo es solo una categorización para agrupar construcciones y probadores. Lo más probable es que trabaje en varias aplicaciones para diferentes clientes o proyectos. Un equipo le permite agrupar las compilaciones y los probadores para cada aplicación o cliente fácilmente. En otras palabras, es una manera conveniente de mantener las compilaciones y los evaluadores de diferentes proyectos separados y organizados..

El siguiente paso es cargar una compilación de prueba a TestFlight. Sin embargo, antes de hacerlo, debemos crear una aplicación que esté correctamente configurada y configurada para TestFlight. Esto incluye la integración de TestFlight SDK para aprovechar las características que describí anteriormente.

Por supuesto, TestFlight realmente brilla si tiene un grupo de evaluadores comprometidos (preferiblemente personas que no forman parte del equipo de desarrollo). Agregar probadores a TestFlight es tan simple como enviar una invitación. Con TestFlight, ya no es complicado obtener el UDID de un dispositivo, como verá un poco más adelante. Explico cómo invitar a los probadores beta un poco más adelante en este tutorial..


Paso 2: Crear un nuevo proyecto

La aplicación que estamos a punto de construir será simple. El objetivo principal de este tutorial es mostrarle cómo ponerse al día con TestFlight y no tanto crear una aplicación rica en características. Las características de la aplicación son simples, (1) implementa los puntos de control de TestFlight, (2) solicita comentarios al usuario mientras usa la aplicación, y (3) bloquea la aplicación y permite que TestFlight recopile el informe del fallo.

Crea un nuevo proyecto en Xcode seleccionando el Solicitud de vista única Plantilla de la lista de plantillas (figura 3). Nombra tu aplicación Quitarse, ingrese un identificador de compañía, establezca iPhone Para la familia de dispositivos, y compruebe Utilice el conteo automático de referencias. Asegúrese de desactivar las casillas de verificación restantes para este proyecto. Dile a Xcode dónde quieres guardar tu proyecto y pulsa el botón Crear botón (figura 4).


Paso 3: Agrega el TestFlight SDK

Comience por descargar la última versión estable del TestFlight SDK (1.1 en el momento de la escritura). Extraer el archivo y añadir libTestFlight.a y TestFlight.h, ubicado en el TestFlightx.x Carpeta, a tu proyecto. Asegúrese de copiar ambos archivos en su proyecto marcando la casilla marcada Copie los elementos en la carpeta del grupo de destino (si es necesario) y no olvide agregar ambos archivos al objetivo de despegue (figura 5). Para mantener todo organizado, coloque libTestFlight.a y TestFlight.h en un grupo separado llamado Vuelo de prueba.

Se necesitan algunos pasos más para finalizar la integración con TestFlight. Seleccione su proyecto en el Navegador de proyectos y haga clic en el objetivo de despegue en la lista de objetivos. Selecciona el Construir fases pestaña en la parte superior y abre el Enlace Binario Con Bibliotecas cajón. Si todo salio bien, libTestFlight.a Debería estar presente en la lista de bibliotecas. Arrastrar libTestFlight.a en la lista de bibliotecas vinculadas si no está presente en la lista (figura 6).

TestFlight también hace uso de la libz Biblioteca para realizar parte de su trabajo, por lo que también necesitamos vincular el proyecto con esta biblioteca. Haga clic en el botón más en la parte inferior de la lista de bibliotecas, busque libz.dylib, y agregarlo a la lista de bibliotecas vinculadas.

El siguiente paso es opcional, pero se recomienda si planea usar TestFlight en toda su aplicación. En lugar de importar TestFlight.h En cada archivo que hace uso del TestFlight SDK, es más conveniente agregarlo al proyecto. Prefijo.pch expediente. Echa un vistazo a la completa Prefijo.pch archivo abajo para aclaración.

 // // Encabezado de prefijo para todos los archivos de origen del objetivo 'Despegue' en el proyecto 'Despegue' // #import  #ifndef __IPHONE_4_0 #warning "Este proyecto usa funciones solo disponibles en iOS SDK 4.0 y posteriores". #endif #ifdef __OBJC__ #import  #importar  #import "TestFlight.h" #endif

TestFlight instala un controlador de excepciones no capturado para informar errores y recopilar informes de errores. Si desea utilizar esta función, se recomienda modificar ligeramente la configuración de compilación de su proyecto. Seleccione su proyecto de la Navegador de proyectos y elige el Quitarse objetivo de la lista de objetivos. Selecciona el Configuraciones de compilación y desplácese hasta el Despliegue Ajustes (figura 8). Se deben establecer tres configuraciones de implementación para NO.

  1. Despliegue Postproceso
  2. Strip Debug Symbols durante la copia
  3. Strip Linked Product

Las configuraciones en negrita indican que el valor predeterminado está anulado. Puedes revertir cualquier cambio que realices seleccionando una configuración en negrita y presionando la tecla de retroceso en tu teclado. Asegúrese de que el valor efectivo de la configuración de compilación esté establecido en Conjunto (figura 9).


Paso 4: Configurar TestFlight

TestFlight no hace nada en tu aplicación todavía. Para hacer uso de sus características, necesitamos inicializar TestFlight cuando se inicie la aplicación. El lugar ideal para configurar TestFlight es en el delegado de la aplicación aplicación: didFinishLaunchingWithOptions: método. Configurar TestFlight es sorprendentemente fácil. Todo lo que necesitamos hacer es llamar quitarse: en la clase TestFlight y pase el token de equipo del equipo que configuramos anteriormente en este tutorial.

Para encontrar el token de su equipo, diríjase al Panel de TestFlight, seleccione el equipo correcto en el menú desplegable en la parte superior derecha y elija Editar información desde ese mismo menú. Copie el token del equipo y páselo como parámetro en el quitarse: método.

 - (BOOL) application: (UIApplication *) didFinishLaunchingWithOptions: (NSDictionary *) launchOptions // Initialize View Controller self.viewController = [[MTViewController alloc] initWithNibName: @ "MTViewController" bundle: nil]; // Inicializar la ventana self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] lines]]; [self.window setRootViewController: self.viewController]; [self.window makeKeyAndVisible]; // Inicializar TestFlight [TestFlight takeOff: @ "TEAM_TOKEN_GOES_HERE"]; devuelve SÍ; 

Paso 5: subir una compilación

TestFlight ya está configurado, pero aún tenemos que cargar una compilación en TestFlight. Los siguientes pasos no son diferentes de los que normalmente tomaría para preparar una prueba o compilación ad hoc para una aplicación. He enumerado los pasos necesarios a continuación.

  1. Crear certificado de distribución en iOS Provisioning Portal
  2. Crear ID de aplicación en iOS Provisioning Portal
  3. Agregar dispositivos en el portal de aprovisionamiento de iOS
  4. Crear perfil de aprovisionamiento en el portal de aprovisionamiento de iOS
  5. Crear una configuración ad hoc en Xcode
  6. Crear un esquema ad hoc en Xcode
  7. Creación de archivos para la distribución ad hoc en Xcode
  8. Subir Ad Hoc Build a TestFlight
  9. Distribuir Ad Hoc Build a Testers en TestFlight

Esto puede parecer mucho trabajo, pero la mayoría de estos pasos solo deben realizarse una vez para una nueva aplicación. Además, gran parte de esto puede ser automatizado. Además del SDK de TestFlight, TestFlight también tiene una API de carga que permite a los desarrolladores cargar compilaciones automáticamente a TestFlight. No cubriré la API de carga en este tutorial ya que este es un tema más avanzado.

Ya que está leyendo este tutorial, asumiré que ya está familiarizado con las pruebas beta y los pasos necesarios para preparar una compilación de prueba para la distribución ad hoc. En este artículo, me limitaré a los pasos que involucran a TestFlight.

Al distribuir compilaciones utilizando TestFlight, es importante que las versiones se compilen correctamente. Al hacerlo, el seguimiento de las diferentes versiones de prueba será mucho más fácil.

Antes de cargar su aplicación, asegúrese de establecer el número de versión de su aplicación en 0.1.0 para indicar que se trata de una versión preliminar. Eche un vistazo a esta pregunta en Stack Overflow para obtener más información sobre los números de versión..

Para cargar manualmente una compilación en TestFlight, haga clic en el segundo botón de la derecha en la parte superior del Tablero de TestFlight.

Agregar una nueva compilación es tan fácil como arrastrar el archivo .ipa al campo apropiado, agregar una breve descripción, también conocida como notas de la versión, y hacer clic en Subir botón. Las notas de publicación son mucho más útiles de lo que la mayoría de la gente piensa. Las notas de la versión deben contener información sobre los cambios realizados en la compilación de prueba, pero también deben contener errores conocidos (si es necesario) y posibles soluciones..

Después de cargar una compilación de su aplicación, se lo lleva al Permisos Vista de su nueva versión de prueba. Los permisos de una compilación determinan quién tiene acceso a la nueva compilación de prueba, es decir, quién puede instalar la compilación de prueba en su (s) dispositivo (s). Por ejemplo, si desea probar una compilación crítica solo internamente y evitar que los probadores externos accedan a la compilación, puede restringir los permisos de esa compilación para incluir solo a los miembros de su equipo de desarrollo..

Para facilitar la distribución de las compilaciones de prueba, TestFlight tiene una característica con el nombre apropiado listas de distribución. Una lista de distribución es una lista o grupo de personas dentro de un equipo de TestFlight. En lugar de seleccionar manualmente los miembros de un equipo de TestFlight cada vez que cargue una nueva compilación, le dice a TestFlight qué listas de distribución tienen acceso a la nueva compilación.


Paso 6: informes de bloqueo, puntos de control y comentarios

Una de las mejores características de TestFlight es la capacidad de recopilar y simbolizar automáticamente los informes de fallos. Implementar puntos de control y solicitar comentarios de los usuarios también es fácil. Modifiquemos el proyecto para ver cómo funciona todo esto..

Abra su proyecto Xcode y diríjase al archivo de implementación del controlador de vista (MTViewController.m). En el viewDidLoad Método, crea tres botones como se muestra a continuación. El código no debería ser difícil de entender.

 - (void) viewDidLoad [super viewDidLoad]; // Crear botón de bloqueo UIButton * crashButton = [[UIButton alloc] initWithFrame: CGRectMake (20.0, 20.0, 280.0, 44.0)]; [crashButton setTitle: @ "Crash" forState: UIControlStateNormal]; [crashButton setBackgroundColor: [UIColor blueColor]]; [crashButton addTarget: self action: @selector (crash :) forControlEvents: UIControlEventTouchUpInside]; [self.view addSubview: crashButton]; // Crear botón de punto de control UIButton * checkpointButton = [[UIButton alloc] initWithFrame: CGRectMake (20.0, 72.0, 280.0, 44.0)]; [checkpointButton setTitle: @ "Checkpoint" forState: UIControlStateNormal]; [checkpointButton setBackgroundColor: [UIColor blueColor]]; [checkpointButton addTarget: self action: @selector (checkpoint :) forControlEvents: UIControlEventTouchUpInside]; [self.view addSubview: checkpointButton]; // Crear botón de comentarios UIButón * feedbackButton = [[UIButton alloc] initWithFrame: CGRectMake (20.0, 124.0, 280.0, 44.0)]; [feedbackButton setTitle: @ "Feedback" forState: UIControlStateNormal]; [feedbackButton setBackgroundColor: [UIColor blueColor]]; [feedbackButton addTarget: self action: @selector (feedback :) forControlEvents: UIControlEventTouchUpInside]; [self.view addSubview: feedbackButton]; 

La idea es simple. La aplicación debería bloquearse cuando el usuario toca el primer botón. Bloquear una aplicación es fácil. ¿Derecha? Eche un vistazo a la implementación del choque: Método para ver cómo se implementa. Creamos una matriz con un elemento y luego pedimos el segundo objeto en la matriz. Esto arroja un NSRangeException ya que solo hay un elemento en la matriz.

 - (void) crash: (id) sender NSArray * array = @ [@ "one"]; NSLog (@ "% @", [array objectAtIndex: 1]); 

La implementación de la control: El método es sorprendentemente fácil gracias al TestFlight SDK. Como mencioné anteriormente, los puntos de control son un medio para rastrear si sus evaluadores utilizan ciertas funciones de su aplicación. En otras palabras, los puntos de control le indican cuándo un usuario ha hecho algo que le interesa. Como dije, los puntos de control le dicen (entre otras cosas) qué funciones se utilizan y, lo que es más importante, qué funciones no se utilizan. Algunas características son difíciles de encontrar aunque esto no sea obvio para el desarrollador.

 - (vacío) punto de control: (id) remitente [TestFlight passCheckpoint: @ "El usuario hizo clic en el botón de punto de control."]; 

Hay varias formas de recopilar comentarios de sus evaluadores. Sin embargo, la forma más sencilla de recopilar comentarios es utilizar la integración de comentarios de TestFlight. Eche un vistazo a la implementación del realimentación: Método para ver cómo funciona esto. Cuando el usuario toca el botón de comentarios, aparece una vista modal y le permite ingresar comentarios (figura 13).

 - retroalimentación (nula): (id) remitente [TestFlight openFeedbackView]; 

Después de agregar estos cambios a su aplicación, actualice el número de versión de su aplicación a 0.2.0 y archive el proyecto. Es una buena práctica limpiar siempre su proyecto antes de preparar una compilación para la distribución, tanto para la App Store como para la distribución ad hoc. Cargue el nuevo archivo .ipa en TestFlight, establezca los permisos adecuados y actualice la instalación en su dispositivo con la nueva construcción visitando el panel de TestFlight en su dispositivo. Si siguió los pasos, debería ver los tres botones y tocar cada botón activará la funcionalidad en la aplicación.

TestFlight envía información a los servidores de TestFlight siempre que puede, es decir, si hay una conexión de red disponible y el sistema operativo no destruye la aplicación antes de que termine de enviar los datos a los servidores de TestFlight. Esto significa que TestFlight es una gran herramienta para recopilar datos en vivo de sus probadores. Puede intentarlo usted mismo tocando los tres botones de su aplicación y observando el panel de TestFlight unos minutos más tarde..

TestFlight le muestra qué probadores instalaron la actualización y en qué dispositivo. Le muestra la cantidad de sesiones, los puntos de control que pasaron y la cantidad de bloqueos ocurridos. Como mencioné anteriormente, los informes de fallos se simbolizan automáticamente, que es una de las características que más me gustan..

También es posible explorar sesiones individuales haciendo clic en la pestaña de sesiones a la izquierda (figura 14), seleccionando un usuario de la lista y haciendo clic en una de las sesiones. Esto le da un resumen detallado de la sesión del usuario respectivo (figura 15).


Paso 7: Agregar probadores adicionales

Las pruebas beta solo son útiles si puede confiar en un grupo de evaluadores comprometidos que realmente quieren poner su aplicación a su ritmo. Agregar testers a TestFlight se puede hacer de dos maneras. (1) Abra el panel de TestFlight del equipo al que desea agregar un nuevo comprobador. Haga clic en el botón con el signo más pequeño en la esquina superior derecha y complete el formulario. Se recomienda que el usuario haga clic en el enlace de aceptación en el dispositivo de prueba. Aunque esto no es estrictamente necesario, hace que el proceso sea mucho más fácil, ya que el dispositivo que está utilizando el usuario se agregará automáticamente a su cuenta como dispositivo de prueba..

(2) Una segunda opción para agregar evaluadores es utilizar una URL de reclutamiento. Este es un formulario que le permite a cualquier persona registrarse como probador. Esto lo hace más fácil si tiene un grupo bastante grande de probadores que le gustaría agregar a TestFlight.


Más?

Hace unos meses, TestFlight fue adquirido por Burstly y esto ha resultado en la creación de TestFlight Live. TestFlight Live es otra adición a la plataforma TestFlight y brinda a los desarrolladores los medios para no solo usar TestFlight para el desarrollo y las pruebas, sino también cuando la aplicación está activa en la App Store. Puedes leer más sobre esto en el blog de TestFlight.


Conclusión

A pesar de que la idea detrás de TestFlight es una distribución simple y por aire de versiones beta, TestFlight tiene mucho más que ofrecer. Después de haber utilizado TestFlight durante algunas semanas, notará que el equipo detrás de TestFlight ha hecho un gran trabajo en términos de qué características incluir y de cómo todas las diferentes piezas encajan.

Hay muchas más características que no mencioné en este artículo, por lo que lo invito a visitar el sitio web de TestFlight y explorar la documentación sobresaliente. TestFlight sigue creciendo rápidamente y tengo curiosidad por ver cómo continúa evolucionando y mejorando.