Les tests
Introduction
La complexité des applications, la fragmentation des périphériques et le fort impact marketing imposé par la vitrine représentée par les applications des entreprises font que l’attente sur la qualité des applications est plus importante que jamais.
Des spécifications aux déploiements des applications en passant par le code et le monitoring, les pratiques DevOps sont en train de rentrer dans les mœurs des équipes de développement.
Parmi les pratiques permettant d’assurer une qualité de code, les tests ont également une part importante dans les étapes de développement mobile.
Afin d’assurer un niveau suffisant de qualité de code et une découverte des problèmes le plus rapidement possible, une politique de tests est obligatoire.
Voyons ensemble comment mettre en place cette politique et comment s’outiller en conséquence.
Tests unitaires
Comme nous avons pu le voir dans le chapitre concernant la mutualisation du code, l’objectif de cette pratique est de découpler l’interface du code métier afin, notamment, de pouvoir le tester de manière simplifiée.
Sur ce code isolé, les tests unitaires sont une première étape dans la politique de qualité que l’équipe de développement doit s’imposer.
Ces tests unitaires concernent, comme leur nom l’indique, des sous-ensembles de code, des classes ou des méthodes spécifiques.
Comme cela a été évoqué sur le chapitre concernant la mutualisation du code, il est préférable de rassembler sa logique métier au sein d’un même projet ou d’un ensemble de projets, en le découplant au maximum de la vue et donc des projets spécifiques aux différentes plateformes ciblées. Rassembler votre code au sein de projets spécifiques permet d’appliquer des tests unitaires sur cette logique sans avoir à la répéter pour chaque type d’appareil.
Si votre découpage projet est bien réalisé, vous pouvez simplement appliquer sur ce code les méthodes habituelles de tests unitaires en utilisant par exemple des Frameworks de tests tels que MSTests, NUnit.
Pour tester un projet Xamarin Portable avec NUnit par exemple, il vous...
Créer des tests unitaires avec NUnit
Xamarin supporte par défaut les projets NUnit pour Android et iOS, vous n’avez donc plus aucune raison de ne pas faire une application testable.
1. Créer un projet NUnit
Pour en créer un, rien de plus simple il suffit de faire :
Fichier - Nouveau projet puis de sélectionner Test.
Puis de sélectionner UI Test App (Xamarin UITest | Android ou iOS).
2. Créer une classe de Test
Pour créer une classe de de test il suffit de créer une classe ayant l’attribut [TestFixture] de la façon suivante :
using System;
using NUnit.Framework;
namespace MesTests {
[TestFixture]
public class Tests {
}
}
Ensuite il faut définir des méthodes qui seront testées, chacune de ses méthodes devra avoir un attribut [Test] sinon elles ne seront pas détectées par NUnit.
Enfin, de manière très classique, nous utilisons la classe statique Assert pour indiquer à NUnit le résultat attendu.
Par exemple si nous avons une classe Helper de la forme suivante :
public class Helper
{
public static bool EstceQueLaStringEstUnNombre(string maString)
{
int n = 0;
...
Xamarin Test Cloud
Sur un autre registre, Xamarin Test Cloud est un outil proposant de vous aider dans la mise en place de tests automatisés d’interfaces.
Partant du constat que le meilleur moyen de vérifier le comportement d’une application est de la lancer et de l’utiliser, les entreprises désirant assurer une certaine qualité à leurs applications ont dû mettre en place de véritables usines de tests avec de nombreuses personnes effectuant encore et encore les mêmes tests d’interfaces.
En plus de la nature coûteuse de la main-d’œuvre associée, il faut ajouter un budget exponentiel d’appareils selon les plateformes, versions de système et tailles d’écrans ciblées.
Xamarin Test Cloud se positionne donc sur ce segment en proposant un outil Cloud d’automatisation de ces tests d’interfaces.
Parmi les fonctionnalités proposées par Xamarin Test Cloud, on compte :
-
Rédaction des tests via des Frameworks dédiés.
-
Possibilité d’exécuter les tests sur des centaines d’appareils différents que ce soit par leurs tailles ou leurs systèmes.
-
Reporting.
Pour proposer ces fonctionnalités, Xamarin Test Cloud offre un écosystème basé sur les composants suivants :
-
Calabash : framework de rédaction des tests selon la méthode...
Conclusion
Il existe plusieurs approches pour tester une application ou un ensemble d’applications. On peut vouloir tester la logique métier et les couches d’accès aux données. On peut également vouloir tester si l’ensemble de l’application réagit correctement sur les différentes plateformes ciblées en n’interagissant que sur l’interface utilisateur en mode boîte noire.
Ces différents besoins ne s’excluent pas les uns les autres et peuvent souvent se trouver complémentaires.
Quelle que soit l’approche, il existe des outils et des Frameworks permettant d’écrire des tests qui pourront par la suite être automatisés. L’automatisation de ces tests et leur exécution dans une logique d’intégration continue permettront de gagner un temps considérable sur l’exécution manuelle de ces tests et d’augmenter la qualité de l’application en décelant au plus tôt une éventuelle régression.