Test avec TestFlight

Tester une application est indispensable si vous envisagez de fournir un produit robuste et fiable à vos clients. Cet article examinera de plus près les tests bêta des applications iOS avec TestFlight, un service Web gratuit facilitant la distribution de versions ad hoc et le suivi de l'utilisation des tests bêta..


introduction

Les logiciels de test ne se limitent pas aux tests bêta. Il existe plusieurs techniques pour tester les logiciels, telles que les tests unitaires, les tests d'intégration, les tests de contrainte, etc. Chacune de ces méthodologies a ses avantages et sa place dans le cycle de développement. Le test bêta est un processus dans lequel une version préliminaire ou une version bêta est distribuée à un public limité qui ne fait pas partie de l'équipe de développement..

Au début du développement iOS, il n'était pas simple de distribuer des versions de test, de recueillir des commentaires et de collecter des rapports d'incident. Cependant, au cours des dernières années, une poignée de services ont vu le jour qui rendent les tests bêta non seulement plus faciles, mais aussi triviaux. Dans cet article, je vais discuter d'un tel service: TestFlight. TestFlight permet aux développeurs de distribuer des versions de test par liaison radio. Jouer avec les fichiers .ipa et les profils de provisioning appartient au passé si vous décidez de faire équipe avec TestFlight.

La facilité de la distribution ad hoc n'est pas le seul avantage de TestFlight. TestFlight propose également un SDK qui vous offre un grand nombre de fonctionnalités exceptionnelles avec une charge de travail étonnamment réduite. Une fois le SDK installé et configuré, les rapports d’incident sont envoyés à TestFlight et automatiquement symbolisés. Les points de contrôle constituent une autre fonctionnalité intéressante du SDK TestFlight. Vous pouvez définir des points de contrôle à des emplacements spécifiques dans votre application pour voir si une fonctionnalité particulière est réellement utilisée. Les points de contrôle sont parfaitement liés aux sessions. Chaque fois qu'un utilisateur ouvre l'application, une session est automatiquement lancée. Le tableau de bord TestFlight indique la durée d'une session et les points de contrôle passés par le testeur au cours d'une session. La liste des fonctionnalités ne s'arrête pas là. Quelques autres fonctionnalités utiles incluent: les commentaires intégrés, les mises à jour intégrées et la journalisation à distance..


Étape 1: Commencer

Pour suivre les étapes de ce didacticiel, vous aurez besoin d’un compte TestFlight. Rendez-vous sur le site Web TestFlight et créez un compte gratuit. Après vous être connecté pour la première fois à votre compte TestFlight, vous êtes invité à créer une équipe. Que sont les équipes? Une équipe est simplement une catégorisation pour regrouper des générations et des testeurs. Il est fort probable que vous travailliez sur plusieurs applications pour différents clients ou projets. Une équipe vous permet de regrouper facilement les versions et les testeurs de chaque application ou client. En d’autres termes, c’est un moyen pratique de séparer et d’organiser les versions et les testeurs de différents projets..

L'étape suivante consiste à télécharger une version de test sur TestFlight. Cependant, avant cela, nous devons créer une application correctement configurée pour TestFlight. Cela comprend l’intégration du SDK TestFlight pour tirer parti des fonctionnalités décrites précédemment..

Bien sûr, TestFlight brille vraiment si vous avez un groupe de testeurs engagés (de préférence des personnes qui ne font pas partie de l'équipe de développement). Ajouter des testeurs à TestFlight est aussi simple que d'envoyer une invitation. Avec TestFlight, il n'est plus fastidieux d'obtenir le UDID d'un périphérique comme vous le verrez un peu plus tard. J'explique comment inviter les bêta-testeurs un peu plus tard dans ce tutoriel.


Étape 2: Créer un nouveau projet

L'application que nous sommes sur le point de construire sera simple. L'objectif principal de ce didacticiel est de vous montrer comment vous familiariser avec TestFlight sans créer vraiment une application riche en fonctionnalités. Les fonctionnalités de l'application sont simples: (1) implémenter des points de contrôle TestFlight, (2) demander un retour à l'utilisateur tout en utilisant l'application, et (3) planter l'application et laisser TestFlight collecter le rapport de panne.

Créez un nouveau projet dans Xcode en sélectionnant le Application à vue unique modèle de la liste des modèles (figure 3). Nommez votre application Décollage, entrez un identifiant d'entreprise, définissez iPhone pour la famille d'appareils, et vérifiez Utiliser le comptage automatique des références. Assurez-vous de décocher les cases restantes pour ce projet. Indiquez à Xcode où vous souhaitez enregistrer votre projet et appuyez sur le bouton Créer bouton (figure 4).


Étape 3: ajoutez le SDK TestFlight

Commencez par télécharger la dernière version stable du SDK TestFlight (1.1 au moment de la rédaction). Extraire l'archive et ajouter libTestFlight.a et TestFlight.h, située dans le TestFlightx.x dossier, à votre projet. Assurez-vous de copier les deux fichiers dans votre projet en cochant la case intitulée Copier des éléments dans le dossier du groupe de destination (si nécessaire) et n'oubliez pas d'ajouter les deux fichiers à la cible de décollage (figure 5). Pour que tout soit organisé, placez libTestFlight.a et TestFlight.h dans un groupe séparé nommé Vol d'essai.

Quelques étapes supplémentaires sont nécessaires pour finaliser l'intégration avec TestFlight. Sélectionnez votre projet dans le Navigateur de projet et cliquez sur la cible Décollage dans la liste des cibles. Sélectionnez le Phases de construction onglet en haut et ouvrez le Lien binaire avec des bibliothèques tiroir. Si tout s'est bien passé, libTestFlight.a devrait être présent dans la liste des bibliothèques. Traîne libTestFlight.a dans la liste des bibliothèques liées si elle n'est pas présente dans la liste (figure 6).

TestFlight utilise également le libz bibliothèque pour effectuer une partie de son travail, nous devons donc également lier le projet à cette bibliothèque. Cliquez sur le bouton plus en bas de la liste des bibliothèques, recherchez libz.dylib, et l'ajouter à la liste des bibliothèques liées.

L'étape suivante est facultative, mais recommandée si vous prévoyez d'utiliser TestFlight dans toute votre application. Au lieu d'importer TestFlight.h Dans chaque fichier utilisant le SDK TestFlight, il est plus pratique de l’ajouter au projet. Prefix.pch fichier. Jetez un coup d'oeil à la complète Prefix.pch fichier ci-dessous pour clarification.

 // // En-tête de préfixe pour tous les fichiers source de la cible "Take-Off" du projet "Take-Off" // #import  #ifndef __IPHONE_4_0 #warning "Ce projet utilise des fonctionnalités uniquement disponibles dans iOS SDK 4.0 et versions ultérieures." #endif #ifdef __OBJC__ #import  #importation  #import "TestFlight.h" #endif

TestFlight installe un gestionnaire d'exceptions non capturé pour signaler les incidents et collecter les rapports d'incidents. Si vous souhaitez utiliser cette fonctionnalité, il est recommandé de modifier légèrement les paramètres de construction de votre projet. Sélectionnez votre projet parmi les Navigateur de projet et choisissez le Décollage cible de la liste des cibles. Sélectionnez le Paramètres de construction onglet et faites défiler jusqu'au Déploiement réglages (figure 8). Trois paramètres de déploiement doivent être définis sur NON.

  1. Post-traitement de déploiement
  2. Supprimer les symboles de débogage lors de la copie
  3. Produit lié par bande

Les paramètres en gras indiquent que la valeur par défaut est remplacée. Vous pouvez annuler les modifications que vous avez apportées en sélectionnant un paramètre en gras et en appuyant sur la touche Retour arrière de votre clavier. Assurez-vous que la valeur effective du paramètre de construction est définie sur Combiné (figure 9).


Étape 4: Configuration de TestFlight

TestFlight ne fait rien pour l'instant dans votre application. Pour utiliser ses fonctionnalités, nous devons initialiser TestFlight au lancement de l’application. L'emplacement idéal pour configurer TestFlight est dans le délégué de l'application. application: didFinishLaunchingWithOptions: méthode. Configurer TestFlight est étonnamment facile. Il suffit d'appeler décollage: dans la classe TestFlight et transmettez le jeton d'équipe de l'équipe que nous avons configurée précédemment dans ce didacticiel..

Pour trouver le jeton de votre équipe, allez dans le tableau de bord de TestFlight, sélectionnez la bonne équipe dans le menu déroulant en haut à droite, puis choisissez Modifier les informations à partir de ce même menu. Copiez le jeton d’équipe et transmettez-le comme paramètre dans le décollage: méthode.

 - Application (BOOL): application (UIApplication *) didFinishLaunchingWithOptions: (NSDictionary *) launchOptions // initialisation de View Controller self.viewController = [[MTViewController alloc] initWithNibName: @ "MTViewController" bundle: nil]; // Initialize Window self.window = [[UIWindow alloc]] initWithFrame: [[UIScreen mainScreen]]]]; [self.window setRootViewController: self.viewController]; [self.window makeKeyAndVisible]; // Initialise TestFlight [TestFlight takeOff: @ "TEAM_TOKEN_GOES_HERE"]; retourner OUI; 

Étape 5: Télécharger une construction

TestFlight est maintenant configuré, mais nous devons toujours télécharger une version vers TestFlight. Les étapes suivantes ne diffèrent pas de celles que vous auriez normalement prises pour préparer un test ou une génération ad hoc pour une application. J'ai énuméré les étapes nécessaires ci-dessous.

  1. Créer un certificat de distribution dans le portail de provisioning iOS
  2. Créer un identifiant d'application dans le portail de provisioning iOS
  3. Ajouter des périphériques dans le portail de provisioning iOS
  4. Créer un profil de provisioning dans le portail de provisioning iOS
  5. Créer une configuration ad hoc dans Xcode
  6. Créer un schéma ad hoc dans Xcode
  7. Construction d'archive pour la distribution ad hoc dans Xcode
  8. Télécharger une version ad hoc vers TestFlight
  9. Distribuer la construction ad hoc aux testeurs dans TestFlight

Cela peut sembler beaucoup de travail, mais la plupart de ces étapes ne doivent être effectuées qu'une seule fois pour une nouvelle application. En outre, une grande partie de cela peut être automatisée. En plus du SDK de TestFlight, TestFlight dispose également d'une API de téléchargement qui permet aux développeurs de télécharger automatiquement des versions sur TestFlight. Je ne couvrirai pas l'API de téléchargement dans ce tutoriel, car il s'agit d'un sujet plus avancé..

Puisque vous lisez ce tutoriel, je suppose que vous êtes déjà familiarisé avec les tests bêta et les étapes nécessaires pour préparer une version de test pour une distribution ad hoc. Dans cet article, je me limiterai aux étapes impliquant TestFlight..

Lors de la distribution de générations à l'aide de TestFlight, il est important de bien versionner vos générations. Ce faisant, il sera beaucoup plus facile de suivre différentes versions de test..

Avant de télécharger votre application, assurez-vous de définir le numéro de version de votre application sur 0.1.0 pour indiquer qu'il s'agit d'une version préliminaire. Consultez cette question sur le dépassement de capacité pour plus d'informations sur les numéros de version..

Pour télécharger manuellement une version sur TestFlight, cliquez sur le deuxième bouton en haut à droite du tableau de bord TestFlight..

Ajouter une nouvelle version est aussi simple que de faire glisser le fichier .ipa dans le champ approprié, d’ajouter une brève description, également appelée note de mise à jour, et de cliquer sur le bouton Télécharger bouton. Les notes de publication sont beaucoup plus utiles que la plupart des gens ne le pensent. Les notes de publication doivent contenir des informations sur les modifications apportées à la version de test, mais elles doivent également contenir des bogues connus (si nécessaire) et des solutions de contournement potentielles..

Après avoir téléchargé une version de votre application, vous êtes amené à la Les permissions vue de votre nouvelle construction de test. Les autorisations d'une version déterminent qui a accès à la nouvelle version de test, c'est-à-dire qui peut installer la version de test sur leur ou leurs périphériques. Par exemple, si vous souhaitez tester une version critique uniquement en interne et empêcher les testeurs externes d’y accéder, vous pouvez limiter les autorisations de cette version afin d’inclure uniquement les membres de votre équipe de développement..

Pour faciliter la distribution des versions de test, TestFlight possède une fonctionnalité nommée de manière appropriée. listes de distribution. Une liste de distribution est une liste ou un groupe de personnes au sein d'une équipe TestFlight. Au lieu de sélectionner manuellement les membres d'une équipe TestFlight chaque fois que vous téléchargez une nouvelle version, vous indiquez à TestFlight quelles listes de distribution ont accès à la nouvelle version..


Étape 6: Rapports d'incident, points de contrôle et commentaires

L'une des meilleures fonctionnalités de TestFlight est la possibilité de collecter et de symboliser automatiquement les rapports d'incident. La mise en place de points de contrôle et la sollicitation des commentaires des utilisateurs sont également simples. Modifions le projet pour voir comment tout cela fonctionne.

Ouvrez votre projet Xcode et accédez au fichier d'implémentation du contrôleur de vue (MTViewController.m). dans le viewDidLoad méthode, créez trois boutons comme indiqué ci-dessous. Le code ne devrait pas être difficile à saisir.

 - (void) viewDidLoad [super viewDidLoad]; // Créer un bouton de blocage 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: action automatique: @selector (crash :) pourControlEvents: UIControlEventTouchUpInside]; [self.view addSubview: crashButton]; // Bouton de création de point de contrôle 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: action propre: @selector (point de contrôle :) pourControlEvents: UIControlEventTouchUpInside]; [self.view addSubview: checkpointButton]; // Créer un bouton de commentaire UIButton * feedbackButton = [[UIButton alloc]] initWithFrame: CGRectMake (20.0, 124.0, 280.0, 44.0)]; [feedbackButton setTitle: @ "Feedback" forState: UIControlStateNormal]; [feedbackButton setBackgroundColor: [UIColor blueColor]]; [feedbackButton addTarget: autoaction: @selector (feedback :) pourControlEvents: UIControlEventTouchUpInside]; [auto.view addSubview: feedbackButton]; 

L'idée est simple. L'application devrait se bloquer lorsque l'utilisateur appuie sur le premier bouton. Crashing une application est facile. Droite? Jetez un coup d’œil à la mise en œuvre de la crash: méthode pour voir comment elle est mise en œuvre. Nous créons un tableau avec un élément puis demandons le deuxième objet du tableau. Cela jette un NSRangeException puisqu'il n'y a qu'un seul élément dans le tableau.

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

La mise en œuvre de la point de contrôle: Cette méthode est étonnamment simple grâce au SDK TestFlight. Comme je l'ai mentionné plus tôt, les points de contrôle sont un moyen de vérifier si certaines fonctionnalités de votre application sont utilisées par vos testeurs. En d'autres termes, les points de contrôle vous indiquent lorsqu'un utilisateur a fait quelque chose qui vous intéresse. Comme je l'ai dit, les points de contrôle vous indiquent (entre autres choses) les fonctionnalités utilisées et, plus important encore, celles qui ne le sont pas. Certaines fonctionnalités sont difficiles à trouver même si cela n’est pas évident pour le développeur..

 - (void) point de contrôle: (id) expéditeur [TestFlight passCheckpoint: @ "L'utilisateur a bien cliqué sur le bouton de point de contrôle."]; 

Il existe différentes manières de recueillir les commentaires de vos testeurs. Le moyen le plus simple de collecter des commentaires consiste toutefois à utiliser l'intégration des commentaires de TestFlight. Jetez un coup d’œil à la mise en œuvre de la retour d'information: méthode pour voir comment cela fonctionne. Lorsque l'utilisateur appuie sur le bouton Commentaires, une vue modale s'affiche et permet à l'utilisateur de saisir des commentaires (figure 13)..

 - (void) feedback: expéditeur (id) [TestFlight openFeedbackView]; 

Après avoir ajouté ces modifications à votre application, mettez à jour le numéro de version de votre application sur la version 0.2.0 et archivez le projet. Il est judicieux de toujours nettoyer votre projet avant de préparer un build pour la distribution, pour l'App Store ainsi que pour la distribution ad hoc. Téléchargez le nouveau fichier .ipa dans TestFlight, définissez les autorisations appropriées et mettez à jour l'installation sur votre appareil avec la nouvelle version en consultant le tableau de bord TestFlight sur votre appareil. Si vous avez suivi les étapes, vous devriez voir les trois boutons et taper sur chaque bouton déclenchera la fonctionnalité dans l'application.

TestFlight envoie des informations aux serveurs TestFlight chaque fois que cela est possible, c'est-à-dire si une connexion réseau est disponible et que le système d'exploitation ne supprime pas l'application avant la fin de l'envoi des données aux serveurs TestFlight. Cela signifie que TestFlight est un excellent outil pour collecter des données en direct de vos testeurs. Vous pouvez essayer cela vous-même en appuyant sur les trois boutons de votre application et en consultant le tableau de bord TestFlight quelques minutes plus tard..

TestFlight vous indique quels testeurs ont installé la mise à jour et sur quel périphérique. Il vous indique le nombre de sessions, les points de contrôle auxquels elles ont abouti et le nombre de plantages. Comme je l'ai mentionné précédemment, les rapports d'incident sont automatiquement symbolisés, ce qui est l'une des fonctionnalités que j'aime le plus..

Il est également possible d'explorer des sessions individuelles en cliquant sur l'onglet des sessions à gauche (figure 14), en sélectionnant un utilisateur dans la liste et en cliquant sur l'une des sessions. Cela vous donne un aperçu détaillé de la session de l'utilisateur respectif (figure 15)..


Étape 7: Ajout de testeurs supplémentaires

Les tests bêta ne sont utiles que si vous pouvez compter sur un groupe de testeurs engagés qui souhaitent véritablement mettre votre application à l’essai. L'ajout de testeurs à TestFlight peut être effectué de deux manières. (1) Ouvrez le tableau de bord TestFlight de l’équipe à laquelle vous souhaitez ajouter un nouveau testeur. Cliquez sur le bouton avec le petit signe plus dans le coin supérieur droit et remplissez le formulaire. Il est recommandé à l'utilisateur de cliquer sur le lien d'acceptation du périphérique de test. Même si cela n'est pas strictement nécessaire, le processus est beaucoup plus simple, car le périphérique utilisé par l'utilisateur sera automatiquement ajouté à son compte en tant que périphérique de test..

(2) Une deuxième option pour ajouter des testeurs consiste à utiliser une URL de recrutement. C'est un formulaire qui permet à n'importe qui de s'inscrire en tant que testeur. Cela facilite la tâche si vous souhaitez ajouter un nombre assez important de testeurs à TestFlight..


Plus?

Il y a quelques mois, TestFlight a été acquis par Burstly, ce qui a entraîné la création de TestFlight Live. TestFlight Live est un autre ajout à la plate-forme TestFlight et donne aux développeurs le moyen d'utiliser TestFlight non seulement pour le développement et les tests, mais également lorsque l'application est en direct sur l'App Store. Vous pouvez en savoir plus sur le blog de TestFlight.


Conclusion

Bien que l'idée de TestFlight soit simple, la distribution des versions bêta par voie aérienne, TestFlight a beaucoup plus à offrir. Après avoir utilisé TestFlight pendant quelques semaines, vous remarquerez que l'équipe derrière TestFlight a fait un excellent travail en ce qui concerne les fonctionnalités à inclure et la manière dont toutes les différentes pièces s'assemblent..

Il existe de nombreuses autres fonctionnalités que je n'ai pas abordées dans cet article. Je vous encourage donc à visiter le site Web de TestFlight et à parcourir la documentation en suspens. TestFlight continue de croître rapidement et je suis curieux de voir comment il continue d'évoluer et de s'améliorer.