2009-10-27 5 views
9

J'étudie la possibilité d'utiliser des tests unitaires parallèles pour nos projets et je m'interrogeais sur les meilleures pratiques pour écrire de tels tests unitaires parallèles.Meilleures pratiques pour l'écriture de tests unitaires parallèles

+0

Parlez-vous de tester un composant multithread en utilisant des appels parallèles? – falstro

+0

Je cherche à exécuter des tests unitaires multiples (simultanément) en utilisant MBUnit, qui a un attribut/décoration parallélisable pour les tests unitaires - cela fera autant de tests en parallèle qu'il y a de cœurs sur la machine. (apparemment!) –

+0

Ah, excellent! :) – falstro

Répondre

5

Si, par tests unitaires parallèles, vous entendez des tests pouvant s'exécuter simultanément, le conseil le plus important que je puisse vous donner est d'éviter ce que l'on appelle les appareils partagés.

Le livre xUnit Test Patterns décrivent le terme Fixture, ce qui peut essentiellement être décrit comme tout le contexte dans lequel chaque test exécute, y compris les données persistantes et transitoires. Un Fixture partagé indique que les cas de test partagent un certain contexte lors de l'exécution. Si ce contexte est modifiable, des conditions de concurrence peuvent se produire. Garder un projecteur partagé immuable (ce que l'on appelle un projecteur partagé immuable) vous permettra d'exécuter des tests en parallèle, mais mieux encore, les appareils frais (où chaque scénario de test a son propre appareil) sont thread-safe par définition, puisque seul le scénario de test a lui-même accès au Fixture. Les exemples d'appareils partagés incluent tous les tests qui utilisent une base de données partagée, mais aussi les tests où vous avez un état de mémoire statique dans le système sous test (SUT) ou les tests eux-mêmes, vous devez donc éviter cette. Vous devez également garder à l'esprit que si votre SUT accède à des données partagées (statiques), cet accès lui-même doit être thread-safe.

Questions connexes