Tests - onitu/Epitech.EIP GitHub Wiki
Afin de garantir que nous n'avons pas de régressions, nous devons avoir des tests. Ces tests sont divisés en deux catégories .
- Unitaires, qui ciblent une méthode en particulier, détachée de son environnement
- Fonctionnels, qui eux testent si l'intégration des différents composants répond aux attentes
Outils
Pytest
Pytest nous servira à la fois pour les tests fonctionnels et unitaires. C'est un framework de test assez simpliste, qui fait tout ce qu'on a besoin. Il trouve les tests tout seul avec le nom de fichier et le nom de la fonction, il crée des jolis rapports et il a tout ce qu'il faut pour faire des globales, pré-loader des choses, etc…
Tox
tox permet de tester sous différents environnements (py2k, py3k, pypy, etc…)
Intégration continue
Le principe de l'intégration continue est d'avoir un serveur qui lance toute une batterie de tests après chaque commit.
Ça sera certainement du Travis-ci avec un serveur qui lancera les tests (soit une VM amazon, soit mon Kimsufi dans un 1er temps).
Les tests fonctionnels
Ces tests sont extrêmement importants et peuvent être codés dès le début. En effet, ils assurent que l'application se comporte de manière nominale dans un maximum de situations et d'environnements.
Onitu
- Onitu se lance sans erreur
- Onitu attend Redis
- Si un driver quitte, il est relancé
- Si un driver est relancé il fonctionne avec le reste
- Si le Referee quitte, il est relancé
- Si le Referee est relancé, il fonctionne avec le reste
Quand la persistance aura été implémentée
- Si Redis quitte il est relancé
- Si Redis est relancé, il fonctionne avec le reste
Referee
- Il doit mettre son port dans Redis
- Il doit traiter N-événements similaires comme un seul
- Il doit gérer une grosse charge (test à préciser)
Plug
Drivers
Tests communs
- Crée le fichier s'il n'existe pas
- Peut mettre à jour un fichier
- Peut mettre à jour un fichier avec un contenu plus petit
- Crée les répertoires s'ils n'existent pas
Local Storage
Dropbox
Ubuntu One - client
Ubuntu One - server
Les tests Unitaires
Pour le moment les tests unitaires ne sont pas la priorité. Ils seront certainement codé en utilisant pytest. On les ajoutera certainement vers la version 0.3 ou 0.4, quand on aura une base plus mature.