Faites de la programmation embarquée avec un développement piloté par les tests avec googletest

introduction

[Amazon.co.jp: programmation intégrée par développement piloté par les tests - conception Agile apprise en langage C et en orientation objet](https://www.amazon.co.jp/%E3%83%86%E3%82%B9 % E3% 83% 88% E9% A7% 86% E5% 8B% 95% E9% 96% 8B% E7% 99% BA% E3% 81% AB% E3% 82% 88% E3% 82% 8B% E7 % B5% 84% E3% 81% BF% E8% BE% BC% E3% 81% BF% E3% 83% 97% E3% 83% AD% E3% 82% B0% E3% 83% A9% E3% 83 % 9F% E3% 83% B3% E3% 82% B0-% E2% 80% 95C% E8% A8% 80% E8% AA% 9E% E3% 81% A8% E3% 82% AA% E3% 83% 96% E3% 82% B8% E3% 82% A7% E3% 82% AF% E3% 83% 88% E6% 8C% 87% E5% 90% 91% E3% 81% A7% E5% AD% A6% E3% 81% B6% E3% 82% A2% E3% 82% B8% E3% 83% A3% E3% 82% A4% E3% 83% AB% E3% 81% AA% E8% A8% AD% E8% A8% 88-James-W-Grenning / dp / 4873116147)

Cet article est le premier d'une série qui vise à empêcher les personnes qui commencent à apprendre en utilisant les livres ci-dessus de trébucher dans la construction d'un environnement.

Je développe un système embarqué et utilise principalement le langage C. Avant de tomber sur ce livre, chaque fois que je modifiais le code, je le construisais et copiais le binaire sur le tableau cible pour le vérifier. Étant donné que la quantité de matériel n'est pas suffisante pour le personnel de l'équipe, lorsque d'autres membres utilisent le matériel, il n'était pas possible de vérifier le fonctionnement et le développement était souvent retardé.

En février de cette année, je suis tombé sur ce livre et j'ai commencé à pratiquer ce qui était écrit dans mon travail. En conséquence, mon style de développement a radicalement changé. Avec un environnement de construction à double cible, vous pouvez désormais effectuer un développement basé sur des tests unitaires sur votre hôte sans avoir besoin de matériel, et les tests unitaires automatisés permettent de détecter facilement les erreurs mineures. J'en suis venu à avoir un peu de qualité dans le code que j'ai écrit.

Désormais, toutes les nouvelles fonctionnalités que nous ajoutons sont développées en TDD, et nous trouvons le temps d'écrire des tests dans des lieux existants et de continuer à refactoriser sans relâche. Je pense que le code a évolué vers une meilleure conception qui est plus facile à lire à chaque modification.

Ce livre présente Unity et CppUnit en tant que frameworks de test. Je pensais qu'il n'y avait pas de truc à faire comme ça, et il y avait une pierre d'achoppement lors de l'étude de ce livre, alors cette fois j'ai décidé de publier le code source que je peux commencer à étudier ce livre immédiatement en utilisant googletest.

Autotools est utilisé comme outil de construction. Par conséquent, le code source publié peut être construit de manière croisée tel quel avec un compilateur croisé. googletest fonctionne sans installation, donc si vous affichez le binaire croisé sur la carte cible, le test unitaire s'exécutera sur la carte cible.

Ce sur quoi j'ai trébuché en apprenant

En lisant ce livre, j'ai essayé de copier en utilisant Unity et CppUnit, mais j'avais honte de dire que je suis tombé sur la construction de l'environnement ... (J'ai oublié pourquoi j'ai trébuché, mais je pense que je me suis battu pendant environ un jour pour une raison quelconque) De plus, avec l'exemple de code publié, le script de construction était compliqué (pour moi) et je ne pouvais pas facilement vouloir l'étendre moi-même. C'est une petite chose, mais si vous tombez sur autre chose que ce que vous voulez apprendre, il est facile de perdre votre motivation à apprendre.

J'ai essayé de créer un environnement où même les personnes qui viennent d'entrer dans l'industrie embarquée peuvent ajouter des fichiers par elles-mêmes et les copier.

Code source

Le code source est ci-dessous. https://github.com/tomoyuki-nakabayashi/TDDforEmbeddedC

Le code produit et le code de test à la fin du chapitre 4 sont publiés. Si vous avez installé git, gcc et autotools, vous pouvez exécuter le test en moins d'une minute.

Si vous souhaitez copier ce livre depuis le début, veuillez supprimer le contenu de src / LedDriver.c, src / LedDriver.h, test / LedDriverTest.cpp.

Ajouter un fichier source

Si vous souhaitez ajouter vous-même le fichier source et essayer diverses choses, veuillez ajouter le nom du fichier dans la partie correspondante du fichier suivant. TDDforEmbeddedC/test/Makefile.am

test_sources = \
  TestMain.cpp \
  LedDriverTest.cpp
target_sources = \
  $(top_srcdir)/src/LedDriver.c
gtest_SOURCES = $(test_sources) $(target_sources)

Tester en double et simuler

À partir du chapitre 7 de ce livre, l'histoire du test double et simulé est publiée. Pour le reste du contenu, nous avons créé un environnement dans lequel vous pouvez facilement commencer à copier.

Chapitre 8 pour faire de la programmation embarquée par développement piloté par les tests avec googletest Programmation intégrée par un pilote de développement simulé et flash piloté par les tests Programmation intégrée par développement piloté par les tests avec google test-SOLID design-

Postscript

Ajout du support pour CMake.

Recommended Posts

Faites de la programmation embarquée avec un développement piloté par les tests avec googletest
Faites de la programmation embarquée par développement piloté par les tests avec googletest ~ SOLID design ~
Faites de la programmation embarquée avec un développement piloté par les tests avec googletest
Faites de la programmation embarquée par développement piloté par les tests avec googletest ~ SOLID design ~
Ce que vous pouvez faire avec des compétences en programmation
Ce que vous pouvez faire avec des compétences en programmation
Résumé du développement avec Django
Programmation asynchrone avec libev # 2
3. 3. Programmation IA avec Python
Programmation Python avec Atom
Programmation compétitive avec python
Programmation Shader avec pyOpenGL
Faites Houdini avec Python3! !! !!
Programmation asynchrone avec libev
Programmation linéaire avec PuLP
Programmation avec Python Flask
Programmation asynchrone avec libev # 3