février
2010
Dans le 18e coding dojo du Club Agile Rhône Alpes, ce 5 janvier dernier, j’avais pris un exemple réel issu de nos plans de tests, et basé sur les courbes de calibration, un concept très utilisé en chimie (et donc dans nos applications). Demain, dans la 20ème session, nous poursuivrons sur cet exemple. Comme pas mal de jours ont passé, ce billet est destiné à nous rafraîchir la mémoire sur la question, à moi le premier !
Le but du dojo est de faire exécuter un scénario réaliste comme celui-ci dessous, que j’avais mis au point avec une collègue chimiste :
Ce qui nous intéresse c’est qu’il faut implémenter un calcul de régression linéaire, et pour cela il sera probablement nécessaire de pratiquer un peu de TDD en plus du BDD ci-dessus, et c’est pourquoi l’exemple peut nous montrer comment s’articulent BDD et TDD.
Dans la séance du 5 janvier j’avais proposé un scénario simplifié, afin de prendre en main l’environnement de développement (j’utilise RubyMine, mais on peut aussi travailler directement en ligne de commande avec Cucumber).
L’idée était d’aligner tous les points sur une droite passant par zéro, comme cela on pouvait trouver l’équation de la droite sans la régression linéaire (dans un premier temps), et donc juste se familiariser avec l’IDE et les diverses notions (les scénarios, le pont, le code métier).
J’avais aussi un deuxième scénario pour vérifier qu’on savait bien faire des vérifications sur les nombres flottants :
Pas très excitant, mais important en calcul scientifique !
Et le troisième scénario proposait une droite qui ne passait plus par zéro :
Et justement le dojo s’était arrêté sur l’échec de ce dernier test – notre calcul de l’équation était vraiment trop simpliste :
D’après la rétrospective de la session, ces scénarios simplifiés n’étaient pas forcément une bonne idée, car ils nous ont un peu éloigné de l’objectif d’aller vers du TDD. Il n’est pas simple dans l’animation des dojos de trouver le bon équilibre entre pédagogie et bonne progression !
Ils nous ont tout de même permis de mettre au point le pont suivant vers le code métier, pont qui sera utilisé tel quel dans la session de demain :
Given /^the calibration mode is R=f\(Q\)$/ do
#nothing
end
Given /^a calibration curve for component CO2 with the points:$/ do |table|
@curve = CalibrationCurve.new
table.hashes.each do |hash|
area = hash["Area"]
concentration=hash["Concentration"]
@curve.ajoute_points(area.to_f, concentration.to_f)
end
end
Then /^the computed concentration for area (.*) should be (.*)$/ do |area, expected_concentration|
calcul_concentration = @curve.calcul_concentration(area.to_f)
calcul_concentration.should be_close(expected_concentration.to_f, 0.001)
end
When /^the slope should be (.*)$/ do |expected_slope|
@curve.calcule_slope.should == expected_slope.to_f
end
When /^the ordinate at origin should be (.*)$/ do |expected_ordinate|
@curve.calcule_ordinate.should == expected_ordinate.to_f
end
When /^the following table should be valid:$/ do |table|
table.hashes.each do |hash|
area = hash["Area"]
concentration=hash["Concentration"]
@curve.calcul_concentration(area.to_f).should == concentration.to_f
end
end
Alors à demain à l’ENSIMAG salle 206 de 12 à 14h pour la suite !
Commentaires récents
- Des tableaux pour l’intégration d’un équipier dans une équipe Scrum dans
- Rétrospectives, la directive première dans
- Des tableaux pour l’intégration d’un équipier dans une équipe Scrum dans
- Des tableaux pour l’intégration d’un équipier dans une équipe Scrum dans
- Des tableaux pour l’intégration d’un équipier dans une équipe Scrum dans