Quelques bonnes références classiques sur TDD
Suite à des conversations avec des collègues, voilà la liste des refs classiques sur TDD (Test-Driven Development) auxquelles je me réfère souvent. Super pour s’inspirer et approfondir le sujet.
Note : il y en a d’autres, si vous avez de bonnes refs classiques passez les moi 🙏 @sroccaserra
Livres
- Test-Driven Development: By Example
- Super introduction de Kent Beck, "the" référence
- xUnit Test Patterns: Refactoring Test Code
- Version gratuite en html : http://xunitpatterns.com/
- Gros pavé
- Énormément de patterns de références
- Toutes les astuces classiques y sont ?
- Growing Object-Oriented Software, Guided by Tests
- Un super exemple de dev en TDD
- Comment récupérer du feedback rapidement
- Plein de conseils sur l'écriture des test, par ex. un chapitre "Test Flexibility"
- En bonus, des principes de programmation orientée objet ~ Tell don't ask, Follow the Messages, ...
- A popularisé l'idée de mocks ~ ni trop, ni trop peu : si vous avez trop de mocks c'est que vous ne suivez pas les conseils de ce livre
- Don't mock values
- Only mock types that you own
- Allow Queries; Expect Commands
Articles
- c2:Test-Driven Development
- Discussion sur c2.com, "the" wiki
- bliki:UnitTest
- Article sur le bliki de Martin Fowler
- Don't Mock What You Don't Own
- Pourquoi il n'est pas recommandé de mocker ce qui ne nous appartient pas, et que faire à la place
- Voir aussi : That's Not Yours
- Mocks for Commands, Stubs for Queries
- Explication détaillée du principe Allow Queries; Expect Commands trouvé dans le livre Growing Object-Oriented Software
- You Don't Hate Mocks; You Hate Side-Effects
- Un bon exemple / explication du lien mock / side effect et comment faire évoluer notre design en écoutant ce que dit le code
Vidéo
- Rails Conf 2013: The Magic Tricks of Testing by Sandi Metz
- Explication de critères pour décider quoi tester, quoi ne pas tester, pourquoi et comment
- J'utilise très souvent le tableau montré dans la conf, qui résume très bien l'ensemble
- Regardez la conf pour bien comprendre le tableau :
Message | Query | Command |
---|---|---|
Incoming | Assert result |
Assert direct public side effects |
Sent to self | Ignore | Ignore |
Outgoing | Ignore | Expect to send |