Le Behaviour-driven development (BDD ou développement dirigé par le comportement) est une méthodologie « extérieur-intérieur ». Il démarre à l' extérieur en identifiant les produits métiers puis pénètre dans les fonctionnalités (« features ») pour déterminer qui réalise ces produits. Chaque fonctionnalité est capturée dans une « story » qui définit la portée de cette fonctionnalité en même temps que les critères d'acceptation. Cet article est une introduction à l'approche BDD qui définit et identifie les histoires et leurs critères d'acceptation.

Ce qui suit est la traduction de l'article de Dan North : http://dannorth.net/whats-in-a-stor..., publiée ici avec son aimable autorisation.

Les termes fréquemment usités dans le domaine seront également signalés en anglais.

Introduction

La livraison de code consiste à écrire du code qui produit des résultats métiers. Cela semble évident, mais souvent des facteurs politiques ou environnementaux nous conduisent à l'oublier. Parfois, la livraison de code peut sembler ne consister qu'à réaliser des rapports optimistes permettant de s'assurer de la bonne humeur des responsables projet ou juste à simplement maintenir les gens occupés pour garantir de conserver les effectifs existant, mais c'est un autre sujet.

En général, les attendus métiers sont trop génériques pour pouvoir être utilisés directement pour écrire du code (où commencer à coder quand l'attendu est « économiser 5% de mes frais de fonctionnement »?), aussi nous avons besoin de définir des exigences à un niveau intermédiaire afin de pourvoir faire le travail.

Le Behaviour-driven development (BDD) prend le parti que vous transformez simplement et efficacement une idée d'exigence en code implémenté, testé et prêt pour la production tant que les exigences sont suffisamment spécifiques pour que tout le monde comprenne de quoi il retourne. Pour ce faire, nous avons besoin d'un moyen de décrire les exigences de telle sorte que tout le monde – les fonctionnels, les analystes, les développeurs et les testeurs – ait une compréhension commune de la portée du travail. A partir de là, ils peuvent se mettre d'accord sur une définition commune de « terminé » (« done ») et nous échappons aux pièges mentaux du découragement (« gumption traps ») du « ce n'est pas ce que j'avais demandé » et « j'ai oublié de vous dire quelque chose ».

Ceci, alors, est le rôle de l'histoire (« Story »). Elle doit être une description d'une exigence et du bénéfice métier associé assortie d'un ensemble de critères grâce auxquels on pourra s'accorder sur le fait que l'exigence est satisfaite, donc que le travail spécifié est terminé (« done »). Ceci constitue une définition plus rigoureuse que celle que l'on trouve dans d'autres méthodologies où elle est diversement décrite comme « la promesse d'un dialogue » ou « la description d'une fonctionnalité ». (Une histoire BDD peut aussi facilement décrire une exigence non fonctionnelle du moment que le travail peut être cadré, estimé et validé par tous).

La structure d'une histoire

Le BDD fournit une structure pour une histoire. Ce n'est pas obligatoire – vous pouvez utiliser un format d'histoire différent tout en continuant à faire du BDD – mais je la présente ici parce qu'elle a prouvé qu'elle fonctionne sur de nombreux projets de tous types et de toutes tailles. A la fin, votre histoire doit contenir tous les éléments décrits dans le modèle. Le modèle d'histoire ressemble à ce qui suit :

  Titre (une ligne décrivant l'histoire)
  
  Narration :
  En tant que {rôle}
  Je veux {une fonctionnalité}
  De telle sorte que j'obtienne {un bénéfice}
  
  Critères d'acceptation : (présentés sous forme de scénarios)
  
  Scénario 1 : Titre
  Étant donné {contexte}
     Et {un contexte de plus}...
  Quand {événement}
  Alors {résultat}
     Et {autre résultat}...
  
  Scénario 2 : ...

soit, en langue de Shakespeare :

  Title 
  
  Narrative :
  As a {role}
  I want {feature}
  So that {benefit}
  
  Acceptance Criteria
  
  Scenario 1 : Title
  Given {context}
     And {context}...
  When {event}
  Then {outcome}
     And {outcome}...

Raconter l'histoire

Une histoire doit être le résultat d'une conversation impliquant plusieurs personnes. Un analyste métier (un fonctionnel) parle à un responsable fonctionnel (business stakeholder, en fait, il doit être la personne qui a un intérêt réel à cette fonctionnalité, si bien qu'il peut s'agir aussi bien d'un utilisateur fonctionnel, d'un expert juridique ou d'un responsable SSI concerné par l'histoire) d'une fonctionnalité ou d'une exigence et l'aide à la cadrer en tant que narration d'une histoire. Puis un testeur vient aider à définir la portée de l'histoire – sous forme de critères d'acceptation – en déterminant les scénarios indispensables et ceux qui sont moins utiles. Un représentant technique va fournir une estimation approximative du volume de travail nécessaire pour cette histoire et proposer des approches alternatives. De nombreuses idées formidables viennent aussi bien des personnes qui les développent que des personnes les ayant demandés initialement.

C'est à l'évidence un processus itératif. Le responsable fonctionnel aura une idée de ce qu'il veut mais ne saura habituellement pas à quelle charge de travail cela correspond ni comment ce travail sera réparti. Avec l'aide d'experts techniques et de test, il va comprendre les compromis coûts/bénéfices de chaque scénario et se faire une opinion sur leur nécessité. Bien sûr, ceci est mis en balance avec d'autres exigences : est-il mieux de couvrir davantage de cas limite dans cette histoire ou de les déplacer dans une autre ?

Quelquefois, l'équipe de développement n'en sait tout simplement pas assez pour être capable de faire une estimation approximative. Dans ce cas, elle peut décider de mener un travail d'analyse complémentaire, souvent dénommé exploratoire (« spike ») afin d'en savoir plus sur les exigences (plus dans un futur article).

Les caractéristiques d'une bonne histoire.

En nous appuyant sur l'exemple de l'article Introducing BDD, examinons les exigences relative au retrait d'argent dans un distributeur :

  Histoire : le détenteur d'un compte retire du liquide
  
  En tant que détenteur de compte
  Je veux retirer du liquide à un distributeur
  De telle sorte que j'obtienne de l'argent quand la banque est fermée
  
  Scénario 1 : le compte est suffisamment crédité
  Étant donné un solde de 100€
     et que la carte est valide
     et que le distributeur contient assez d'argent
  Lorsque le détenteur du compte demande 20€
  Alors le distributeur va donner 20€
     et le solde doit être de 80€
     et la carte doit être rendue 
  Scénario 2 : le compte est insuffisamment crédité
  Étant donné un solde de 10€
     et que la carte est valide
     et que le distributeur contient assez d'argent
  Lorsque le détenteur du compte demande 20€
  Alors le distributeur ne donne pas d'argent
     et le distributeur indique que le solde est insuffisant
     et le solde doit être de 10€
     et la carte doit être rendue
  
  Scénario 3 : la carte a été invalidée
  Étant donnée que la carte a été invalidée
  Lorsque le détenteur du compte demande 20€
     alors le distributeur doit garder la carte
     et le distributeur doit indiquer que la carte a été retenue
  
  Scénario 4 : le distributeur n'a pas de fonds suffisants
  ...

Comme vous pouvez le voir, il y a de nombreux scénarios à considérer, certains relatifs au solde du compte, d'autre à la carte et encore d'autres relatifs au distributeur lui-même. Examinons l'histoire pour déterminer ce qui est bon.

Le titre doit décrire une activité

Le titre de l'histoire, « le détenteur d'un compte retire du liquide », décrit une activité que le détenteur du compte veut réaliser. Jusqu'à ce que nous implémentions cette fonctionnalité, le détenteur du compte ne pourra pas retirer de liquide d'un distributeur. Une fois livrée, il pourra. Ceci donne un point de départ évident pour déterminer à quoi ressemblera « réalisé » (« done »).

Si nous avions eu un titre tel que « gestion du compte » ou « comportement du distributeur », nous aurions du creuser plus profondément pour comprendre à quel moment nous pouvons considérer que nous avons fini et les limites auraient été un peu plus floues. Par exemple, « gestion du compte » pourrait intégrer l'application d'un prêt et « comportement du distributeur » pourrait inclure le changement du code d'identification de la carte. Le titre de l'histoire doit toujours décrire l'utilisation réelle du système par un utilisateur.

La narration doit inclure un rôle, une fonctionnalité et un bénéfice

Le modèle « En tant que {rôle} Je veux {une fonctionnalité} de telle sorte que j'en tire {un bénéfice} » ( “As a {role} I want {feature} so that {benefit}“ ) possède de nombreux avantages. En indiquant le rôle dans la narration, vous savez à qui parler au sujet de cette fonctionnalité. En indiquant le bénéfice attendu, vous forcez le rédacteur de l'histoire à se demander pourquoi il veut une fonctionnalité.

Il devient intéressant de découvrir que la fonctionnalité ne produit pas le bénéfice qui lui a été attribué. Cela signifie habituellement qu'il vous manque une histoire. Il existe une histoire dotée de la fonctionnalité actuelle qui fournit un bénéfice différent (et qui reste de ce fait utile) ainsi qu'une histoire cachée pour laquelle vous avez besoin d'une fonctionnalité différente pour fournir le bénéfice attendu.

L'histoire exemple nous indique qu'il y a un Détenteur de compte qui est intéressé par la fonctionnalité délivrée, de telle sorte que nous savons où commencer à chercher ce qu'elle doit faire.

Le titre du scénario doit indiquer ce qui est différent

Vous devez être capable d'aligner côte à côte les scénarios et de dire en quoi ils diffèrent en n'utilisant que leurs titres. Dans notre exemple, vous pouvez voir que les descriptions des scénarios ne signale que ce qui diffère entre chaque scénario. Vous n'avez pas besoin de dire : « un détenteur de compte retire du liquide d'un compte dont le solde est insuffisant et est averti qu'il sera impossible de compléter la transaction ». Il est évident à partir du titre de savoir si c'est le scénario qui vous intéresse en le comparant aux autres.

Le scénario doit être décrit en terme de pré-requis, d'événement et de résultats (Givens, Events et Outcomes)

C'est l'unique changement le plus puissant que j'ai constaté dans les équipes adoptant le BDD. En poussant simplement les utilisateurs métier, les analystes, les testeurs et les développeurs à adopter ce vocabulaire “étant donné/quand/alors”, ils vont constater qu'un monde d'ambiguïtés va disparaître.

Tous les scénarios ne sont pas aussi simple. Certains sont mieux représentés par une suite d'événements décrits par : étant donné {un contexte} quand {Je fais quelque chose} alors {ceci ce produit} quand {je fais une autre chose} alors {cette nouvelle chose se produit} et ainsi de suite. Un exemple est le site web style assistant (wizard) où vous progressez étape par étape via une suite d'écrans pour construire un modèle de données complexe. C'est parfaitement adapté d'intercaler des suites d'événements et de résultats tant que vous gardez l'habitude de penser en ces termes.

Un comportement émergent intéressant est que la qualité de la conversation change. Vous allez rapidement découvrir que vous avez oublié un pré-requis sous-entendu («Évidemment que le compte est à découvert ») ou oublié de vérifier un résultat («Naturellement que le détenteur du compte récupère sa carte »). J'ai observé ceci sur un projet précis sur lequel le chef de projet me disait que cela aurait du sens que les analystes et les développeurs parlent sur des objectifs croisés mais ne pouvait pas trouver un moyen de le leur démontrer. En quelques jours d'introduction du vocabulaire étant donné/quand/alors, il a pu constater une amélioration très significative de la qualité de leurs interactions.

Les étant donné doivent définir entièrement, et pas davantage que cela, le contexte nécessaire

Chaque « étant donné » additionnel ajoute de la distraction ce qui rend difficile à quelqu'un examinant l'histoire pour la première fois – qu'il soit du côté technique ou fonctionnel – de comprendre ce qu'il a besoin de savoir. De la même façon, tout étant donné manquant constitue de vraies hypothèses. Si vous pouvez obtenir un résultat différent avec les étant donné fournis, alors il doit manquer quelque chose.

Dans l'exemple, le premier scénario indique quelque chose sur le solde du compte, la carte et le distributeur lui-même. Tout ceci est indispensable pour pleinement définir le scénario. Dans le troisième scénario, nous ne disons rien sur le solde du compte ni même si le distributeur possède de l'argent. Ceci implique que la machine retiendra la carte quel que soit le solde du compte et quel que soit l'état du distributeur.

L'événement doit décrire la fonctionnalité

L'événement lui-même doit être très simple, typiquement seulement un unique appel au code de production. Comme discuté ci-dessus, certains scénarios sont plus compliqués que cela, mais la plupart des scénarios d'une histoire vont tourner autour d'un unique événement. Ils vont différer seulement par le contexte (les étant donné) et les résultats correspondants attendus.

L'histoire doit être suffisamment petite pour correspondre à une itération

Il n'existe pas de règles compliquées et rapides sur la façon de parvenir à ce résultat aussi longtemps que vous la divisez en morceaux démontrables. En général, si elle a plus de 5 ou 6 scénarios, une histoire peut probablement être décomposée en regroupant des scénarios similaires.

Nous ne pouvons pas dire à partir de l'exemple du distributeur combien de scénarios supplémentaires il y a pour cette histoire mais je suspecte qu'il doit y en avoir plusieurs. Nous avons essentiellement trois « parties mobiles » dans cette histoire, à savoir le « solde », « l'état de la carte » et « l'état du distributeur ». Nous pourrions aller plus en détail avec la carte de crédit : que se passe-t'il si elle périmée, aussi je ne peux pas récupérer d'argent mais le distributeur va-t'il me la rendre ? Que se passe-t'il si le distributeur tombe en panne au milieu de la transaction ? Que se passe-t'il si mon compte a une autorisation de découvert ?

Il peut être préférable de diviser l'histoire en plusieurs histoires plus petites :

  • Le détenteur du compte retire du liquide (suppositions: le distributeur est en service et la carte est valide)
  • Le détenteur du compte retire du liquide avec une carte invalide (suppositions: le distributeur est en service)
  • Le détenteur du compte retire du liquide d'un distributeur en panne (suppositions: la carte est valide)

Bien que ceci puisse sembler artificiel, cela vous permet de montrer les progrès en terme de progrès et vous donne davantage de données à suivre. La chose importante est de toujours diviser l'histoire selon l'axe métier via les scénarios (et de rendre explicites les hypothèses) plutôt que selon l'axe technique (par exemple, réaliser quelque chose sur la base de données durant l'itération et quelque chose sur l'IHM lors de la suivante). Ainsi, les fonctionnels peuvent voir des progrès démontrables avec leurs propres termes plutôt que vous croire sur parole.

En quoi cela diffère-t'il des cas d'utilisation (Use Cases) ?

Il y a cas d'utilisation et cas d'utilisation. Je suis un grand fan de la façon dont Alistair Cockburn décrit les cas d'utilisation (par opposition aux versions sur-élaborées que j'ai rencontrée sur des projets RUP en cascade). Ceci dit, je n'ai pas beaucoup d'expérience sur les projets dirigés par les cas d'utilisation, je laisse donc aux autres le soin de réaliser les comparaisons.

Je suis évidemment d'accord avec son processus débutant au niveau de précision le plus grossier (d'un résultat ou objectif) pour atteindre le niveau de précision le plus fin amenant le plus de scénarios d'exception au fur et à mesure. Avec BDD, cela signifie démarrer avec les résultats métier attendus et travailler à partir de zones fonctionnelles de haut niveau pour descendre à celui d'histoires spécifiques dotées de critères d'acceptation.

En réalité, le processus que vous utilisez pour identifier et élaborer vos exigences n'a pas d'importance. Vous pouvez écrire des documentations de spécifications si cela vous aide à organiser votre pensée. Ce qui ne convient pas, c'est de transmettre ces documents comme s'ils enfermaient toute votre pensée, car ce n'est pas le cas. A la place, vous devrez mettre de côté votre document d'exigences ou pile de use cases et commencer à définir des histoires à partir des bénéfices métier, assuré que vous êtes de savoir que votre dur labeur a signifié que vous avez toutes les réponses dans votre tête – ou du moins une compréhension suffisamment bonne pour schématiser le travail tel que vous le concevez actuellement.

Résumé

Le développement Behaviour-driven utilise une histoire comme unité de base des fonctionnalités, et, de ce fait, des livraisons. Les critères d'acceptation sont une part intrinsèque de l'histoire – dans le sens qu'ils définissent la portée de son comportement et nous donne une définition partagée de « terminé ». Ils sont également utilisés comme une base d'estimation quand nous en arrivons à faire notre planification.

Plus important, les histoires sont le résultat de conversations entre les fonctionnels, les analystes métier, les testeurs et les développeurs. BDD concerne au moins autant les interactions entre les différents intervenants du projet que les résultats du processus de développement.

Commentaires

1. Le mardi 12 avril 2016, 16:39 par tablet-test.biz

Three year memberships, high deposit fees, extra charges.

The 3 wheeled bikes are great for those who are afraid of falling off a regular
bike. Most of the times, competitors are unaware of
the fact their voices can carry up and down the roads, and this gives a
wrong signal to the people watching the race, or often not intolerable for
the sponsors, riders and teams.

2. Le mercredi 13 avril 2016, 20:13 par EugenioDFrom

Fantastic beat ! I would like to apprentice concurrently as you amend your website, how could i subscribe for a blog web site?
The account helped us a acceptable deal. I were just a little bit acquainted on this your broadcast offered
bright transparent idea

3. Le mercredi 13 avril 2016, 23:25 par Martin

Very rapidly this web page will be famous among all blogging viewers, due
to it's pleasant posts

4. Le mercredi 20 avril 2016, 11:12 par AgathaRKulik

Very good article. I certainly appreciate this site.

Keep writing!

5. Le samedi 23 avril 2016, 18:01 par Juliana

Hello there! I could have sworn I've been to this website before but after browsing through some of the post I realized
it's new to me. Nonetheless, I'm definitely delighted I found it and I'll be book-marking and checking back frequently!

6. Le mercredi 27 avril 2016, 06:55 par NinaUGauna

Thank you a bunch for sharing this with
all folks you really know what you are talking approximately!
Bookmarked. Kindly also visit my web site =). We will have
a link exchange agreement between us

7. Le dimanche 1 mai 2016, 06:49 par tagihan rekening listrik

I really love your blog.. Excellent colors & theme.
Did you develop this web site yourself? Please reply back as I'm hoping to
create my own blog and would love to know where you got this from or what the theme is
called. Kudos!

8. Le lundi 16 mai 2016, 15:56 par difference between anoro ellipta and breo ellipta

What's up Dear, are you really visiting this website on a regular basis, if so then you
will without doubt get fastidious knowledge.

9. Le dimanche 22 mai 2016, 17:21 par DorseyQGoens

We're a group of volunteers and starting a new scheme in our community.

Your website provided us with valuable info to operate
on. You may have done a formidable job and our entire community is going to be thankful
for you.

10. Le dimanche 29 mai 2016, 04:56 par x nxx vidos

I think this is one of the most significant information for me.

And i'm glad reading your article. But want to remark on few general things, The website
style is great, the articles is really nice : D. Good job, cheers

11. Le mardi 31 mai 2016, 01:42 par creamed

It's an remarkable piece of writing designed for all the
web people; they will take advantage from it I am sure.

12. Le mardi 31 mai 2016, 04:50 par SierraIVella

Many thanks for the good writeup. It in fact had
been a amusement account it. Look advanced to more added agreeable from you!

Anyway, how can we communicate?

13. Le dimanche 5 juin 2016, 23:52 par KalaDHusenaj

I'm really enjoying the theme/design of your site. Do you ever encounter any internet browser compatibility problems?
A variety of my blog audience have complained about
my blog not working correctly in Explorer but looks
great in Chrome. Do you possess any advice to aid fix
this problem?

14. Le dimanche 12 juin 2016, 16:57 par rijscholen delft

I always emailed this blog post page to all my associates,
since if like to read it after that my contacts will too.
Driving4all Autorijschool Delft

Latijns-Amerikalaan 65
2622 BB Delft

Telefoonnummer: 015 45 50 528
Mob: 06-53656767

15. Le lundi 13 juin 2016, 08:31 par LaureneIGioe

Ridiculous quest there. What happened after? Be careful!

16. Le mercredi 15 juin 2016, 16:08 par MathewHRoute

Heya i am initially here. I found this board and I think
it is really useful & it helped me out much. I really hope to
give something back and aid others just like you helped me.

17. Le jeudi 16 juin 2016, 17:54 par SangFMatteis

What's up to every single one, it's truly a pleasant for me to visit this site, it
consists of useful Information.

18. Le jeudi 23 juin 2016, 18:14 par ReedQCrone

You actually allow it to be seem very easy with your presentation but I find this matter to
become really something which I do believe I would never understand.

It appears too complicated and extremely broad for me personally.
I am looking forward for your upcoming post, I am going to try to get the hang of it!

19. Le vendredi 24 juin 2016, 22:51 par bentuk rumah minimalis

Wonderful, what a blog it is! This weblog gives useful facts to us, keep it up.

20. Le dimanche 26 juin 2016, 20:12 par Griyabayar | PPOB terbaik di Indonesia adalah PPOB BTN

hey there and thank you for your information – I have definitely
picked up anything new from right here. I did however expertise a few
technical points using this site, as I experienced to reload
the website many times previous to I could get it to load correctly.
I had been wondering if your hosting is OK? Not that I'm complaining,
but slow loading instances times will often affect your placement in google
and can damage your high-quality score if advertising
and marketing with Adwords. Anyway I'm adding this RSS to my email and could look out for a
lot more of your respective fascinating content. Ensure that you update this
again soon.

21. Le lundi 11 juillet 2016, 21:11 par LatoshaLDaku

Woah! I'm really digging the template/theme on this blog.
It's simple, yet effective. A lot of times it's challenging to have that "perfect balance" between usability and visual
appearance. I must say you possess done a great job using this type of.
Additionally, the blog loads very fast in my
opinion on Firefox. Exceptional Blog!

22. Le mardi 12 juillet 2016, 18:36 par DariusKHogen

Hi, There's undoubtedly that your blog site might be
having web browser compatibility issues. After I check out
your website in Safari, it seems fine however, when opening in I.E.,
it's got some overlapping issues. I just wanted to offer
you a quick heads up! Besides that, great website!

23. Le mercredi 13 juillet 2016, 04:11 par building advice

I wanteԀ to visit and allow you to know how , ɑ great
deal I treasured discovering your site todaу. I'd pᥱrsonally consider it a honor to operate
at my buѕiness office and be able to use the tips
shared on your web page and also get involvеd
in visіtors' oρinions like tɦis. Shoᥙld ɑ position associated with guest article աriter become offеred at your end, make
sure you let me know.

24. Le mercredi 13 juillet 2016, 07:01 par worms on dogs fur

I really like it when individuals come together and share views.
Great site, continue the good work!

25. Le mercredi 13 juillet 2016, 18:07 par earn money taking online surveys

Thіs is the perfect webpage for evеryone ԝho wishes to find out about
tһis topic. You know so mսch its almost һаrd to argue with you (not
that I actually would want to...ΗaHa). Yоu definitely put a fresh spin on a subject that's been discuѕsed for many years.

Excellent stuff, just excellеnt!

26. Le mercredi 13 juillet 2016, 18:12 par surveys for dollars

You сould definitely seе your expertiѕe in the article you
write. The sector hopes for even more passionate writers
like you wҺo are not afraid to mention how they believe.

Alաays go after your heart.

27. Le jeudi 14 juillet 2016, 02:34 par how to get a guy to ask you out

Thіs is a really good tip especially to those new to the blogosphere.

Short but very accurate information� Thank you for sharing this ߋne.
A must read post!

28. Le jeudi 14 juillet 2016, 22:10 par exercise ball

Sաeet sіte, super layout, very clean and utilizе friendⅼy.

29. Le vendredi 15 juillet 2016, 07:25 par language learning course

Greаt site you've ǥⲟt here.. It�s difficuⅼt to find exceⅼlent writing like yours these dɑys.
I truly ɑpprеϲiate people likе ʏou! Take care!!

30. Le vendredi 15 juillet 2016, 07:47 par 64 bit operating system

I ԝant ⅼooking at and I conceive thiѕ weƅsite got ѕome truⅼy utilitarian stuff on it!

31. Le vendredi 15 juillet 2016, 09:13 par need desktop repair

I гeaⅼly appreciate your piece of work, Great post.

32. Le vendredi 15 juillet 2016, 12:42 par registry repair

I love ᥱxamining and I conceive this website got sⲟme
really useful ѕtuff on it!

33. Le samedi 16 juillet 2016, 12:45 par eczema home remedies

As I webѕіtе owner I conceive the subject matter
here iѕ really wonderful, appreciate it for
your efforts.

34. Le samedi 16 juillet 2016, 21:02 par growing potatoes

whoah thіѕ weblоg is excellent i love reading your articles.
Stay up the good work! You recognize, lots of indiviԁuals are hunting around for thiѕ
infо, you ϲan Һelp them greatly.

35. Le dimanche 17 juillet 2016, 13:27 par treatment treat facial

Hі there, just became alert to your blog througҺ Google,
and found that it's truly informative. Ι am gonna watcɦ out for brussels.
I�ll be grateful if you continue this in future.
A lot of people will be benefited from уоur ѡriting.
Cheers!

36. Le dimanche 17 juillet 2016, 23:16 par free youjiz

My spouse and I absolutely love your blog and find many of your post's to be just what
I'm looking for. Do you offer guest writers to write content in your case?

I wouldn't mind writing a post or elaborating on a lot of the subjects
you write with regards to here. Again, awesome web site!

37. Le lundi 18 juillet 2016, 07:35 par skin approximately three

Αmazing! Its in fact remarkable piecᥱ of
writing, I have got much clear idea about from this article.

38. Le lundi 18 juillet 2016, 13:49 par chest pain

I visiteⅾ a lot of website but I believe tҺis one has something
special in it.

39. Le lundi 18 juillet 2016, 16:56 par chest workout moves

Tɦаnk you for sҺarіng with us, I think this website genuinely stands out :D.

40. Le mardi 19 juillet 2016, 04:13 par anti aging

ӏ gotta bookmark this website it seemѕ very helpful extremely helpful.

41. Le mardi 19 juillet 2016, 04:18 par tips on how to grow taller naturally

Somе genuinely pгize posts on this internet site, bookmarked.

42. Le mardi 19 juillet 2016, 04:27 par increase your bench press

Heya i'm for tɦe first timᥱ here. I came across
this board and I find It really usefuⅼ & it helped me out
а lot. I'm hoping to give one thing again and aid others such
as you aided me.

43. Le mercredi 20 juillet 2016, 16:54 par palio chat sto fb

Way cool! Some very valid points! I appreciate you writing this post and also the rest of the website is very good.

44. Le lundi 25 juillet 2016, 07:29 par DickBLayne

I am genuinely grateful for the holder of this web site that has shared this great paragraph at here.

45. Le lundi 25 juillet 2016, 12:35 par EmileeKHix

I loved as much as you will receive carried out right here.
The sketch is attractive, your authored subject matter stylish.
nonetheless, you command get bought an edginess over that
you wish be delivering the following. unwell unquestionably
come more formerly again as exactly the same nearly a lot often inside case you shield this hike.

46. Le lundi 25 juillet 2016, 22:01 par DoyleBMarini

I am certain this component of writing has touched
all of the internet users, its really really pleasant post on developing new weblog.

47. Le mercredi 27 juillet 2016, 07:04 par JohnnyTProgl

Hi to every , as I am truly eager of reading this web site's post
to be updated daily. It consists of fastidious data.

48. Le mercredi 27 juillet 2016, 12:49 par JonahWMayoka

For most up-to-date news you have to visit world-wide-web and on world-wide-web I found this
website as a most excellent web page for latest updates.

49. Le dimanche 31 juillet 2016, 07:17 par new house builders

Hello to every , for the reason that I am genuinely eager of reading this website's post
to be updated regularly. It contains good data.

50. Le dimanche 7 août 2016, 23:24 par NedAHanchett

I'd like to find out more? I'd want to find out more details.

51. Le dimanche 14 août 2016, 03:05 par ElsaXSzuch

Thanks in support of sharing this kind of pleasant thought, article is good, thats
why i have read it completely

52. Le mardi 16 août 2016, 15:58 par WmSSchaper

I'm curious to determine what blog system you are utilizing?

I'm having some minor security problems with my latest site and I might want to find
some thing risk-free. Are you experiencing any recommendations?

53. Le mercredi 17 août 2016, 03:05 par LettyADahlen

Remarkable issues here. I'm very happy to peer your post. Thank you a
lot and I'm taking a look forward to touch you.
Will you please drop me a mail?

54. Le vendredi 19 août 2016, 19:13 par JodyQCarli

Hi there, of course this post is in fact fastidious and I have learned lot
of things from it on the topic of blogging. thanks.

55. Le samedi 20 août 2016, 03:46 par LynnUDolloff

What's up every one, here every person is sharing these kinds of familiarity, so it's fastidious to read this weblog,
and I used to pay a quick visit this weblog all the time.

56. Le samedi 20 août 2016, 11:35 par YingQVanhese

You might have made some fantastic points there. I looked on the
web for additional information concerning the issue and located many people should go along with your opinion of this website.

57. Le dimanche 28 août 2016, 05:48 par JanethMGalin

Please let me know if you're looking for a author for
your site. You have some really great articles and I feel
I would be a good asset. If you ever want to take some of the load off, I'd love to write
some content for your blog in exchange for a link back to mine.
Please shoot me an email if interested. Cheers!

58. Le lundi 29 août 2016, 01:04 par HalSHeimrich

My brother suggested I would possibly like this website.
He was totally right. This put up truly made my day. You can not consider
just how much time I had spent for this information! Thank you!

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

La discussion continue ailleurs

URL de rétrolien : http://philippe.poumaroux.free.fr/index.php?trackback/23