Mon client a souvent plusieurs projets/tâches en cours qui doivent parfois être testés simultanément sur un site Web. Il s’agit souvent d’applications distinctes sur le site Web, mais parfois de fichiers UDF, etc. Nous avons actuellement trois sites Web sur l’environnement destinés au public, à savoir dev.website.com, test.website.com et www.website.com.
En tant que programmeur, j'essaie de trouver une solution qui permette de tester simultanément plusieurs projets/tâches à l'aide d'un agent utilisateur. Actuellement, je me trouve à basculer entre les branches de code (en utilisant Subversion).
Quelles sont certaines de mes options?
Mon préféré est un mélange de projets (j'ai automatisé plusieurs tests au cours de ma carrière).
Tests d'unités et d'intégration sautantes ...
J'utilise Watin pour les tests d'interface utilisateur front-end. Pour que les tests Watin soient un peu plus axés sur les données (regrouper plusieurs actions dans une procédure pour des tâches courantes pouvant être appelées avec des données différentes), il existe un Controller Framework qui peut être encapsulé autour de celle-ci.
Ensuite, pour les tests d’acceptation (UA, comme vous le mentionnez), j’aime beaucoup envelopper Fitnesse autour de ce qui est mentionné ci-dessus. Fitnesse vous permettra éventuellement de déléguer une partie de la fonctionnalité (cas d'utilisation) à des non-développeurs. Ces tests sont comme des tables avec une colonne pour toutes les entrées possibles dans un test et une dernière colonne avec la valeur de résultat attendue. Par exemple, une colonne pour chaque champ d'un formulaire plus une valeur de validation. Vous le configurez de sorte qu’un test Fitnesse appelle l’un des tests du contrôleur Watin avec des paramètres pour chaque champ et renvoie une somme de contrôle ou une valeur du framework watin qui peut être validée par Fitnesse (ce qui peut être un simple booléen pour valider/invalide ou une valeur calculée, en fonction de ce que vous testez).
La combinaison de ces 3 projets fonctionne très bien (mais je vous conseillerai de vous familiariser avec Fitnesse avant d'écrire les autres éléments, car l'implémentation est un peu différente de ce que vous attendez: Fitnesse appelle des méthodes pour chaque paramètre d'entrée, par exemple, Gardez cela à l'esprit lors de l'écriture de la couche Watin-framework-wrapper).
Ajoutez TeamCity à la collection et vous obtiendrez des résultats de test rapides après les check-ins, pendant que le code est encore frais dans votre esprit. (Il s'agit du seul package commercial de cette liste, mais il est gratuit pour un maximum de 20 projets).
C'est un mélange de Java (Fitnesse & TeamCity) et de .Net (Watin). Il faut un peu de temps pour tout comprendre, mais cela économise des tonnes de temps de développement une fois que vous maîtrisez votre travail. (Je suis un développeur .Net au fait, mais cela ne m'a jamais empêché de regarder par-dessus la clôture et de ne rien mettre au travail pour gagner du temps).
Garder des branches séparées est désordonné et crée beaucoup de frais généraux.
Un bon moyen de résoudre ce problème consiste à utiliser des expériences ( Optimizely est un excellent outil, mais vous pouvez commencer par implémenter vous-même un mécanisme très simple). Vous déployez une version contenant toutes les fonctionnalités, mais n'en ouvrez que certaines d'entre elles aux utilisateurs habituels.