Temps estimé: 60 minutes
Exercices préparatoires II
Question 1
a) Sur quel aspect le quadrant des tests se base-t-il pour catégoriser les tests?
La raison d'échouer.
b) Sur quel aspect la pyramide des tests se base-t-elle pour catégoriser les tests?
La portée.
Question 2
a) Qu'est-ce que l'axe vertical du quadrant de tests permet de distinguer?
Avec quel point de vue le test permet de guider le développement.
Technologie (bas) et métier/affaires (haut).
b) Qu'est-ce que l'axe horizontal du quadrant de tests permet de distinguer?
Si le test sert à critiquer le produit (droite) ou à soutenir le développement (gauche).
Question 3
Identifier à quel quadrant appartient chacun des types de tests suivants: Q2 | Q3 ---|--- Q1 | Q4
- Tests d'accesibilité
- Tests de charge
- Stress tests
- User Acceptance Tests (UAT)
- Performance tests
- A/B testing
- Unit tests
- ilities tests
- Story tests
- Tests exploratoires
- Security tests
- Load testing
- Usuability tests
- Live tests (tests fils rouges)
- Beta testing (pre-release)
- Recovery testing
- Contract testing
- Test fonctionnels
- Tests d'accesibilité: Q3
- Tests de charge: Q4
- Stress tests: Q4
- User Acceptance Tests (UAT): Q3
- Performance tests: Q4
- A/B testing: Q3
- Unit tests: Q1
- ilities tests: Q4
- Story tests: Q2
- Tests exploratoires: Q3
- Security tests: Q4
- Load testing: Q4
- Usuability tests: Q3
- Live tests (tests fils rouges): Q2
- Beta testing (pre-release): Q3
- Recovery testing: Q4
- Contract testing: Q1
- Test fonctionnels: Q2
Question 4
a) Quels sont les proportions recommandées de chacunes des catégories de tests de la pyramide des tests?
70% Small, 20% Medium, 10% Large.
b) Expliquer dans vos mots l'idéologie sous-jacente à ces proportions
L'idée ici est de toujours chercher à obtenir la plus petit portée possible pour valider un comportement donné. Bien entendu, certains comportements ne peuvent être validé avec une petite ou moyenne portée. Dans l'ensemble, la majorité des comportements pourront être validés avec un test de faible portée. Avec un code base suffisamment volumineux et un soucis constant de toujours écrire les tests avec la plus petite portée possible, nous devrions obtenir une distribution des portées de nos tests qui se rapproche des dites proportions.
c) Expliquer dans vos mots pourquoi il est si important de chercher à toujours réduire au minimum la portée de tests
Plus un test possède une faible portée, plus son retour sur investissement (ROI) sera élevé.
En effet, un test de faible portée est habituellement plus facile à écrire, demandera moins de maintenance, sera plus stable et sera plus clair sur sa raison d'échouer le moment venu.
Question 5
Une start-up oeuvrant dans le domaine des LMS (Learning Management System) prévoie développer une nouvelle fonctionnalité permettant de publier un sommaire des statistiques d'apprentissage de la semaine sur LinkedIn.
Étant donné la petite taille de l'entreprise, on vous assigne la tâche de concevoir une stratégie de tests non-unitaires pour cette nouvelle fonctionnalité.
Dans votre stratégie, on vous demande d'inclure au minimum 2 tests pour chaque quadrant.
Voici quelques informations additionnelles qui pourront (ou pas) vous être utiles:
- L'étudiant pourra consulter un historique des publications à même la plateforme d'apprentissage.
- La production du sommaire peut prendre jusqu'à 5 minutes.
- Un status sera mis à jour par rapport au traitement d'une publication au niveau de l'historique (Production du rapport, En cours de publication, Terminé).
- Le service de production des sommaires est un service parmi plusieurs autres au sein d'une architecture distribuée.
- Le service qui se chargera de la publication des sommaires n'est pas le même que celui qui sera en charge de les produire.
- La fonctionnalité sera accessible via un simple bouton "Share on LinkedIn" visible sur le tableau de bord de l'étudiant.
- La plateforme d'apprentissage est uniquement accessible via un protocol OAuth2 avec un compte LinkedIn.
- La plateforme est principalement utilisé au Canada et aux État-Unis.
- Le trafic sur la plateforme est assez variable avec peu d'achalandage (~10K utilisateurs) durant le jour sur semaine et un fort trafic (~250K utilisateurs de soir de semaine, sauf les vendredis). En ce qui concerne la fin de semaine, le trafic est mieux répartit au cours de la journée active (9am à 9pm) avec un trafic moyen de ~50K utilisateurs par heure.
- L'ensemble des services du système sont hébergés sur AWS et possèdes politiques de scaling différentes.
- Le service de production des sommaires est complètement asynchrone est les requêtes afférentes sont placées sur une queue SQS (Simple Queue Service).
- L'équipe de développement pratique le Continuous Deployment.
Exemple de réponse:
- Q1
- Tester que le service de production des sommaires reçoit les demandes du service de publication des sommaires.
- Tester que le service de publication des sommaires et notifié lorsque le sommaire est prêt à être publié.
- Q2
- Tester que l'utilisation de la fonctionnalité enregistre une entrée dans l'historique de publication.
- Tester que le service de publication publit une demande de création d'un nouveau post sur le compte de l'étudiant.
- Q3
- Déployer la feature à un sous-groupe d'utilisateurs beta via des feature toggles configurés par compte afin d'obtenir leurs commentaires sur la fonctionnalité.
- Mesurer le taux d'adoption de la fonctionnalité (combien d'utilisateurs l'ont essayé).
- Q4
- Faire un test de charge pour s'assurer que le service de production des sommaires scalera adéquatement avec un load de 10k user à 250k, dans un délai de moins de 30 minutes.
- Tester la capacité du système à cacher la fonctionnalité si le service de production des sommaires tombe en erreur ou démontre des signes de dégradation.