2008-10-03 7 views
2

Que sont les opinions sur la conception d'un système de "vérification d'assertion de performance"?Conception d'un système de contrôle d'assertion de performance

L'idée est qu'un développeur fasse quelques affirmations sur son code et les utilise pour tester l'évolution de la performance du code. Quelle est l'expérience avec un tel système? Mon bloc actuel est "Quelle est la meilleure façon de traduire ces assertions, écrites dans une langue spécifiée (qui doit être vérifiée par rapport à des journaux ou à des outils d'exécution spécifiés) dans, disons, CLR, assembly ou bytecode qui pourrait être exécuté ? "

Actuellement, j'ai écrit un analyseur qui analyse la spécification et la conserve dans une structure de données.

Répondre

3

Intégrons-nous des contrôles de performance dans notre application? Non. La raison en est que les contrôles de performance eux-mêmes prennent du temps et que notre application est très sensible aux performances. Au lieu de cela, nous faisons un test de nos contrôles de performance. Et pour cela, nous utilisons NUnit. Pour nos builds nocturnes, nous exécutons le test, nous générons un journal avec des données de timing détaillées ainsi qu'une indication de réussite/échec selon nos exigences. Comme nous conservons nos journaux depuis un certain temps - pour toujours pour les versions bêta et de production - nous pouvons également suivre la performance dans le temps.

+0

C'est aussi ce que nous avons fait dans les projets auxquels j'ai participé. Définissez une durée d'exécution maximale pour un test et enregistrez également l'heure réelle. –

1

À l'instar de Kevin, j'ai mis des journaux de performance dans mes tests de régression automatisés, ce qui me permet de tester efficacement les performances de régression ainsi que les fonctionnalités. Nous utilisons TestComplete pour la régression automatisée et cela en fait beaucoup automatiquement. La raison principale pour l'ajouter manuellement est de comparer les résultats de cette analyse par rapport à la dernière exécution à chaque point de contrôle. Cela fonctionne quelque chose comme

StartTest 
InitialiseCounter 
' 
' 
Do some testing 
' 
' 
CheckPoint 
GetElapsedTime 
Compare ElapsedTime with stored elapsed time from last run 
If difference is outside tolerence log an error 

(Excusez la mise en évidence sur mon pseudo dodgy)

0

De nombreuses langues ont aujourd'hui assert déclarations. Peuvent-ils être utilisés pour valider votre assertion générée? Ils sont faciles à écrire et faciles à trouver. Le problème est qu'un échec d'assertion signifie que votre programme s'arrête.

Si vous souhaitez fournir un avertissement ou une entrée de journal indiquant qu'une assertion a échoué lors de l'exécution, vous pouvez essayer une instruction if.

Pour ce type de génération de code, les utilisateurs utilisent souvent des outils de modèles simples pour générer la source appropriée qui peut être insérée dans l'application. Vous pourriez regarder Java Velocity ou Mako Python pour générer la source de votre condition d'assertion.

Questions connexes