2010-09-14 3 views
0

Je travaille sur un projet lié à la publicité, dans lequel je dois m'assurer que notre système récupère une publicité de db à un certain intervalle de temps et l'insère dans notre flux de service normal.Comment tester les comportements logiciels qui se produisent à certains intervalles de temps?

Comment concevez-vous le test pour des systèmes comme celui-ci afin que vous n'ayez pas à attendre 30 minutes tout en confirmant que la publicité se produit au bon moment?

+0

Voulez-vous qu'il soit testé en boîte blanche ou testé en boîte noire? – ckv

+0

@ckv Je le veux boîte blanche, et j'ai besoin de mettre en œuvre le programme de test dans le code. – satoru

+0

Pourquoi ne pas configurer l'intervalle de temps et le réduire pour le test? Si cela fonctionne pendant des intervalles de 30 secondes, il devrait idéalement travailler pour des intervalles de 30 minutes aussi ... dans la plupart des circonstances – InSane

Répondre

2

Je découplerais la logique qui consiste à insérer l'annonce de la part de la minuterie, en cachant cette dernière derrière une interface (et la même chose pour la DB). Ensuite (en utilisant par exemple dependency injection) je peux remplacer la minuterie ordinaire par une minuterie mock qui se déclenche "immédiatement" (ou après tout intervalle désiré) dans le test unitaire, donc je peux affirmer que l'annonce (fournie via l'interface BD factice) est insérée correctement dans la sortie.

Ce serait la partie de test unitaire; Je voudrais encore essayer de mettre en place un test d'intégration pour vérifier que tout le système fonctionne comme prévu. Mais après avoir testé la logique de manière unitaire, le test d'intégration peut être moins profond, en vérifiant simplement les quelques cas d'utilisation les plus élémentaires.

0

Les dépendances temporelles sont mauvaises pour les tests (elles nuisent à la reproductibilité). Essayez d'injecter des valeurs de synchronisation. Dans votre cas, vous pouvez injecter/paramétrer une plage de temps (par exemple de 30 minutes à presque instantané).