2008-09-16 8 views
3

Je suis à la recherche d'un outil de test de régression pour une série d'équipements que nous sommes en train de construire.Cadre de test pour les tests de régression de boîte noire

Le concept actuel consiste à créer un fichier d'entrée (text/csv) dans l'outil en spécifiant les entrées du système testé. L'outil capture ensuite les sorties du système et enregistre les entrées et les sorties dans un fichier de sortie.

La sortie est dans le même format que le fichier d'entrée d'origine et peut être utilisée comme entrée pour les exécutions suivantes de l'outil, avec les sorties mesurées correspondant aux valeurs de l'exécution précédente.

Les résultats de deux passages ne correspondent pas exactement, il existe des différences de synchronisation qui dépendent de l'état de la batterie ou qui dépendent de l'état interne de l'équipement.

Nous aurions à écrire nos propres interfaces pour passer les commandes de l'outil à l'équipement et capturer la sortie de l'équipement.

C'est une tâche relativement simple, mais je suis à la recherche d'un outil/paquet/bibliothèque pour éviter de réinventer les leçons de vol/vol.

Répondre

0

Vous pouvez simplement utiliser n'importe quel cadre de test. Le plus difficile est d'écrire les outils pour envoyer/récupérer les données de votre système de test, pas les comparaisons de chaînes réelles.

vos tests seraient simplement tous ressembler à ceci:

x = read_input_file(ifilename); 
y1 = read_expected_data(ofilename); 
send_input_file_to_server(); 
y2 = read_output_from_server(); 
checkequal(y1, y2) 
2

J'ai récemment construit un système comme celui-ci au-dessus de git (http://git.or.cz/). Fondamentalement, écrire un programme qui prend tous vos fichiers d'entrée, les envoie au serveur, relit la sortie, et l'écrit dans un ensemble de fichiers de sortie. Après la première exécution, validez les fichiers de sortie à git.

Pour les prochaines courses, votre succès est déterminé par le fait que le dépôt git est propre après la fin d'exécution:

test 0 == $(git diff data/output/ | wc -l) 

En prime, vous pouvez utiliser tous les outils git pour comparer les différences et les engager si il se trouve que les différences étaient une amélioration, de sorte que les prochaines courses passeront. Il fonctionne également très bien lors de la fusion entre branches.

+0

Ceci est une façon créative de le faire. – kizzx2

1

Je ne suis pas sûr qu'il y aura un seul paquet qui correspond exactement à vos besoins. Vous avez quelques considérations à faire:

  1. Comment transmettre des données à l'équipement et comment le récupérer. Ceci est très spécifique à l'application, mais une option habituellement bonne est le port série old'n'good (RS232) pour lequel une interface facile existe pour n'importe quel langage de programmation.
  2. Comment exécuter les tests. Un cadre de tests unitaires peut certainement vous aider ici. Les frameworks existants ont beaucoup de fonctionnalités de base implémentées - sélection des tests à exécuter, sélection du niveau de détail du rapport (très important pour le débogage détaillé au début et l'analyse PASS/FAIL au stade de la production plus tard). J'ai eu une bonne expérience en utilisant les frameworks de test de Perl et Python à partir de tests de périphériques embarqués.
  3. Vous devez également décider comment effectuer les comparaisons. Comme vous l'avez noté correctement, les résultats ne seront pas égaux. C'est là que votre connaissance du domaine entre en jeu. Habituellement, il est simplement mis en œuvre en utilisant des marges d'erreur qui sont applicables dans votre domaine. Bien sûr, vous ne serez pas en mesure d'utiliser un outil de base diff et devrez écrire un script intelligent.