The Impact of using a Contract-Driven, Test-Interceptor based Software Development Approach

✒ Enzo SandrĂ© · 📆 25/11/2024 · #ïžâƒŁ Façonnage de code · đŸ§Ș Tests

📃 La programmation par contrats est impopulaire, malgrĂ© ses preuves d’efficacitĂ©. Pour la rendre sexy, des chercheurs ont envisagĂ© d’utiliser les contrats comme moyen de gĂ©nĂ©rer des tests avant le code, comme alternative Ă  Behavior-Driven-Design. Ils ont Ă©videmment appelĂ© leur dĂ©couverte Contract Driven Design selon la coutume.

🚧 Des intercepteurs sont utilisĂ©s afin de vĂ©rifier que les prĂ©-conditions, les post-conditions et les invariants sont respectĂ©s sur le composant, dont seule l’interface est visible. Le dĂ©pĂŽt git n’étant plus accessible, je n’ai pas pu voir en dĂ©tail comment ces intercepteurs sont appelĂ©s par le moteur de tests, mais l’idĂ©e ressemble grosso modo au Property-Based Testing, apparu en 1997 dans la littĂ©rature et vers 2015 chez les praticiens.

đŸ€” PBT a l’avantage de ne pas encombrer le code avec les annotations contactuelles, qui doivent ĂȘtre maintenues et bloquent le refactoring. Ces annotations appartiennent plus naturellement au monde des tests qu’au code. Le second inconvĂ©nient, pour qui veut concurrencer BDD, est l’opacitĂ© des contrats pour le client, alors que l’intĂ©rĂȘt de BDD est justement de pouvoir dialoguer avec lui sur un terrain commun. Enfin, l’expĂ©rience contenue dans le papier est trĂšs faible, pour ne pas dire qu’elle ne prouve rien.

SOURCE

Posthuma, Justus & Solms, Fritz & Watson, Bruce. (2022). The Impact of using a Contract-Driven, Test-Interceptor based Software Development Approach. 39-58. DOI:10.5121/csit.2022.120704.

Enzo Sandré


📄 Lien public DOIs: 10.5121/csit.2022.120704