Question

Quelles sont les meilleures politiques pour construire des tests unitaires fichiers?

La raison pour laquelle je demande est ma société produit des appareils embarqués très fiables. Les correctifs logiciels sont tout simplement pas une option, car ils coûtent nos clients des milliers de distribuer. En raison de cela, nous avons très strictes procédures de qualité de code (tests unitaires, des revues de code, tracabilité, etc.). Ces procédures sont appliquées à nos fichiers de construction (autotools si vous devez savoir, je me attends à la pitié), mais si se sent comme un hack.

  

Euh ... le projet compile ... marquer les fichiers de construction comme examiné et testé unitairement.

Il doit y avoir une meilleure façon. Idées?

Était-ce utile?

La solution

Voici l'approche que nous avons pris lors de la construction d'une grande base de code (plusieurs millions de lignes de code) dans plus d'une douzaine de plates-formes.

  • changements de Makefile sont passés en revue par l'équipe de construction. Ces personnes connaissent les erreurs les gens ont tendance à faire dans notre environnement de construction, et ce sont eux qui se sentent le poids de celui-ci en cas de rupture de construction, de sorte ils sont motivés pour trouver des problèmes.
  • Réduire au minimum ce qui doit aller dans un Makefile , donc il y a moins de possibilités d'erreur. Nous avons une couche au-dessus de la marque, qui génère le Makefile. Un développeur vient d'indiquer dans le fichier de niveau supérieur, en utilisant des balises, que par exemple une cible donnée est une bibliothèque partagée ou un test unitaire. Habituellement, une cible est définie sur une ligne, ce qui entraîne alors dans plusieurs paramètres / cibles dans le Makefile. Des choses semblables peuvent se faire avec des outils de construction comme scons qui permettent de abstraire des choses comme des détails spécifiques à la plate-forme, en fait des cibles très simple.
  • Tests unitaires de notre outil de construction. L'outil est écrit en Perl, donc nous utilisons Perl leur cadre de test .
  • Tests unitaires de nos scripts de construction / de test en soirée. Nous avons un ensemble de scripts qui commencent nightly builds sur chaque plate-forme, exécuter des outils d'analyse statique, tests unitaires exécuter, exécuter des tests fonctionnels, et le rapport tous résultats à une base de données centrale. Nous testons les différents scripts individuellement, en utilisant principalement shunit2 cadre-tests unitaires pour sh / bash / ksh / etc.
  • Tests de bout en bout de notre build / processus de test. Je travaille sur un test de bout en bout qui fonctionne sur un arbre de petite source plutôt que notre code de production, puisque celui-ci peut prendre des heures à construire. Ces tests visent principalement à vérifier que nos objectifs de construction fonctionnent toujours et font état de résultats dans notre base de données centrale, même après, par exemple, la mise à niveau de notre outil de couverture de code ou d'apporter des modifications à nos scripts de compilation.

Autres conseils

Demandez à votre fichier de compilation pour compiler une version connue de votre logiciel (ou un morceau plus simple de code qui est similaire dans une perspective de construction) et comparer le résultat obtenu avec vos nouveaux outils de construction à un résultat attendu (construit avec une version validée les outils de construction).

Dans mes projets construire-fichiers ne changent pas très souvent. Plus encore, je peux réutiliser les accumulations fichiers de projets antérieurs, en ne changeant que certaines variables (que je me suis déplacé à un outil facile à reconnaître la section). Voilà pourquoi pour moi il est inutile à l'unité-test, les build-fichiers. Cela peut être différent dans d'autres projets.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top