Quelles pratiques existent pour les tests unitaires spécifiques aux paramètres régionaux?

17

Nous avons récemment découvert un problème spécifique aux paramètres régionaux dans notre application et bien qu'il soit facile à résoudre (une fois que nous avons compris ce qui se passait), il a amené l'équipe sur laquelle je réfléchis aux pratiques de test unitaire à cet égard.

Nous aimerions détecter ces problèmes plus tôt, idéalement avant qu'ils ne soient découverts par un client, et nous voulons nous protéger contre la réintroduction de bogues spécifiques aux paramètres régionaux à l'avenir, mais la duplication de chaque test unitaire dans au moins une autre culture semble être beaucoup de aérien.

Comment envisagez-vous ou comment aborderiez-vous les tests unitaires multi-paramètres régionaux?

Adam Lear
la source
1
Voulez-vous donner plus de détails sur le problème que vous avez rencontré? Cela semble intéressant, et j'aimerais en savoir plus.
Mchl
1
@Mchl C'était le bogue de l'environnement turc . Nous avions un code de comparaison de chaînes qui comprenait la lettre i.
Adam Lear

Réponses:

4

En règle générale, vous n'aurez pas besoin de dupliquer chaque test unitaire. Vous devez identifier ce qui dépend vraiment des paramètres régionaux (une bonne liste de contrôle est ici ). Beaucoup de choses liées à l'internationalisation sont soumises à un niveau de test plus élevé que le test unitaire.

Si vous traitez avec les données de chaîne qui peuvent provenir de différents encodages, vous pouvez utiliser des "tests pilotés par les données", c'est-à-dire passer des données dans différents encodages à la même méthode de test. Pour Java, le TestNG est le mieux adapté à cela.

Un autre problème possible est le formatage et l'analyse de la date / heure. La plupart des locales utilisent: pour séparer les éléments de temps, mais il y en a qui utilisent des points et les Brésiliens utilisent hm et s (12h15m30s). Cela peut également être utilisé par les données transmises dans différents paramètres régionaux - vous n'avez pas besoin de les tester toutes.

Et tester l'interface graphique avec des paramètres régionaux de droite à gauche ne fait généralement pas l'objet de tests unitaires.

L'essentiel est que vous devez identifier les données de vos tests unitaires qui sont spécifiques aux paramètres régionaux et utiliser des tests basés sur les données (fournisseurs de données) pour fournir ces données à vos tests.

Sergii Pozharov
la source
3

Voici quelques suggestions:

  • Développez toujours sur une machine avec des paramètres locaux différents de votre public cible principal. Il vous aidera à trouver très rapidement les bogues liés aux dates, à la devise et à chaque problème de formatage numérique. Faites de même avec votre serveur de build, mettez-le au Brésil ou au Vietnam (pas physiquement, juste les paramètres).

  • Utilisez des accents et des caractères spéciaux dans votre titre de test, des chaînes, etc. dans vos tests unitaires. Le problème d'internationalisation le plus courant que j'obtiens avec les logiciels que j'utilise (pas ceux que je développe) est avec é et è ou même ç en français. Mettez-les dans chaque chaîne que vous utilisez dans vos tests. Utilisez un mot commun que vous utilisez tout le temps commebrèç©

  • N'oubliez pas d'utiliser également des accents et des graphiques spéciaux dans les chemins . Visual Studio.NET lui-même a encore de nombreux problèmes avec cela! Vous devez accéder à créer de tels répertoires et lire / écrire à partir d'eux dans vos tests.

  • Si vous utilisez Visual Studio .NET, dans les propriétés du projet, sous Analyse de code , activez les règles de mondialisation . Les problèmes les plus courants génèrent un avertissement lors de la compilation.

  • Embauchez un étranger dans votre équipe.


la source