La documentation par les Test unitaires ne m'a pas toujours semblée évidente. Or petit à petit, (en particulier grace à l'insistance de Stéphane à ce sujet ;) ), je me rends compte que c'est un moyen effectivement tres pratique (et surtout interactif) de compréhension du code. Mieux vaut tard que jamais ;)
J'ai justement quelques questions à ce sujet:
Existe t-il un brower qui permette de visualiser la methode "test" associée à une methode quelconque (un omnibrowser ?). Il me semble que j'en avais vu un qui intégre le lancement de test... (ca semblait plus pratique que SUnit Test Runner) mais je ne vois plus ce que c'était...
Sinon j'ai une autre question... quand on crée des tests ou qu'on en rajoute... comment on fait pour les publier ou verifier qu'ils sont interessants ?
Par exemple dans MAExtensionTest...
MAExtensionTest>>testCopyWithoutFirst testCopyWithoutFirst | col res | col := #( a b a c ). res := col copyWithoutFirst: #a. self assert: res = #( b a c ). self deny: col == res.
col := Set with: #a with: #b with: #c. res := col copyWithoutFirst: #a. self assert: res = (Set with: #b with: #c). self deny: col == res.
***j'ai rajouté:*** col := #( a b a c ). res := col copyWithoutFirst: #b. self assert: res = #( a a c ). self deny: col == res.
col := #( a b a c ). res := col copyWithoutFirst: #d. self assert: res = #( a b a c ). self deny: col == res.
Est ce que ces rajouts vous semblent pertinents ? si oui qu'est ce que j'en fais ?
Merci Cédrick
Le 8 déc. 05, à 14:30, Cdrick a écrit :
Existe t-il un brower qui permette de visualiser la methode "test" associée à une methode quelconque (un omnibrowser ?). Il me semble que j'en avais vu un qui intégre le lancement de test... (ca semblait plus pratique que SUnit Test Runner) mais je ne vois plus ce que c'était...
Je me souviens que Romain avait développé une extension du browser pour cela. Romain ?
Sinon j'ai une autre question... quand on crée des tests ou qu'on en rajoute... comment on fait pour les publier ou verifier qu'ils sont interessants ?
Par exemple dans MAExtensionTest...
MAExtensionTest>>testCopyWithoutFirst testCopyWithoutFirst | col res | col := #( a b a c ). res := col copyWithoutFirst: #a. self assert: res = #( b a c ). self deny: col == res.
col := Set with: #a with: #b with: #c. res := col copyWithoutFirst: #a. self assert: res = (Set with: #b with: #c). self deny: col == res.
***j'ai rajouté:*** col := #( a b a c ). res := col copyWithoutFirst: #b. self assert: res = #( a a c ). self deny: col == res.
col := #( a b a c ). res := col copyWithoutFirst: #d. self assert: res = #( a b a c ). self deny: col == res.
Est ce que ces rajouts vous semblent pertinents ?
A priori oui. Mais, il y a 2 choses qui me "choquent" dans ce code : 1- la longueur de la méthode. Il aurait mieux valu soit : 4 méthodes de test soit 4 "sous-méthodes" appelées par la méthode de test. 2- l'initialisation répétitive de col avec le même tableau. J'aurais tendance à mettre cette initialisation dans une unique méthode, voire même dans la méthode setUp (cela rejoint l'idée des 4 méthodes de test). Mais, là je suis "hors-contexte" car, je n'ai pas la visibilité de tout le code.
si oui qu'est ce que j'en fais ?
Publies les dans Mantis + squeak-dev.
Noury -------------------------------------------------------------- Dr. Noury Bouraqadi - Enseignant/Chercheur Ecole des Mines de Douai - Dept. G.I.P http://csl.ensm-douai.fr/noury
European Smalltalk Users Group Board http://www.esug.org
Squeak: an Open Source Smalltalk http://www.squeak.org --------------------------------------------------------------
Noury Bouraqadi a écrit :
Le 8 déc. 05, à 14:30, Cdrick a écrit :
Existe t-il un brower qui permette de visualiser la methode "test" associée à une methode quelconque (un omnibrowser ?). Il me semble que j'en avais vu un qui intégre le lancement de test... (ca semblait plus pratique que SUnit Test Runner) mais je ne vois plus ce que c'était...
Je me souviens que Romain avait développé une extension du browser pour cela. Romain ?
Est-ce BrowseUnit ? J ai essayé d'installer avec les Services mais ca ne marche pas... (pb avec le RB :s)... Je reessairai plus tard...
A priori oui. Mais, il y a 2 choses qui me "choquent" dans ce code : 1- la longueur de la méthode. Il aurait mieux valu soit : 4 méthodes de test soit 4 "sous-méthodes" appelées par la méthode de test.
est ce que justement pour la visibilité, il vaut pas mieux laisser le maximum dans la methodes... vue plus directe... sinon c'est vrai aussi qu'un nom bien choisi... ;)
2- l'initialisation répétitive de col avec le même tableau. J'aurais tendance à mettre cette initialisation dans une unique méthode, voire même dans la méthode setUp (cela rejoint l'idée des 4 méthodes de test). Mais, là je suis "hors-contexte" car, je n'ai pas la visibilité de tout le code.
C'est moi qui ai été un peu vite aussi
si oui qu'est ce que j'en fais ?
Publies les dans Mantis + squeak-dev.
Ok je continu alors ;) en essayant de mieux organiser
Existe t-il un brower qui permette de visualiser la methode "test" associée à une methode quelconque (un omnibrowser ?). Il me semble que j'en avais vu un qui intégre le lancement de test... (ca semblait plus pratique que SUnit Test Runner) mais je ne vois plus ce que c'était...
Je me souviens que Romain avait développé une extension du browser pour cela. Romain ?
Est-ce BrowseUnit ? J ai essayé d'installer avec les Services mais ca ne marche pas... (pb avec le RB :s)... Je reessairai plus tard...
Alexandre Bergel a fait un browser sympa pour les tests unitaires il me semble. Tu confirmes Alex ?
Le 8 déc. 05 à 14:30, Cdrick a écrit :
Est ce que ces rajouts vous semblent pertinents ? si oui qu'est ce que j'en fais ?
Je te réponds sur qu'est ce que l'on fait des tests. Je viens d'en écrire quelques uns sur les Collections pour Squeak 3.9 : OrderedCollection, SortedCollection, etc ... Je les ai pas déposé sur mantis, car ce ne sont pas vraiment des bugs ;-) J'ai mis le fichier mcz sur le repository http:// source.squealfoundation.org/inbox/ où l'on peut mettre des packages susceptibles d'être intégrés dans la prochaine version de Squeak.
Si à vingt personnes de la liste, on prend une classe et on écrit 10 tests, cela fait 200 tests supplémentaires dans Squeak. Cela peut aller vite ;-) Bon après, je ne peux pas me prononcer sur la qualité des tests que l'on va obtenir. Je sais pas trop ce qu'est un bon test d'ailleurs. Un test qui se lit facilement ?
Je n'ai pas compris d'où provient ta classe MAExtensionTest. Si cela ne pas fait parti du kernel Squeak, il faut faire remonter tes tests au développeur de ton code.
Cordialement, -- oooo Dr. Serge Stinckwich OOOOOOOO Université de Caen>CNRS UMR 6072>GREYC>MAD OOESUGOO http://purl.org/net/SergeStinckwich oooooo Smalltalkers do: [:it | All with: Class, (And love: it)] \ / ##
Serge Stinckwich a écrit :
Le 8 déc. 05 à 14:30, Cdrick a écrit :
Est ce que ces rajouts vous semblent pertinents ? si oui qu'est ce que j'en fais ?
Je te réponds sur qu'est ce que l'on fait des tests. Je viens d'en écrire quelques uns sur les Collections pour Squeak 3.9 : OrderedCollection, SortedCollection, etc ... Je les ai pas déposé sur mantis, car ce ne sont pas vraiment des bugs ;-) J'ai mis le fichier mcz sur le repository http:// source.squealfoundation.org/inbox/ où l'on peut mettre des packages susceptibles d'être intégrés dans la prochaine version de Squeak.
Si à vingt personnes de la liste, on prend une classe et on écrit 10 tests, cela fait 200 tests supplémentaires dans Squeak. Cela peut aller vite ;-) Bon après, je ne peux pas me prononcer sur la qualité des tests que l'on va obtenir. Je sais pas trop ce qu'est un bon test d'ailleurs. Un test qui se lit facilement ?
Il y a plusieurs sortes de tests
- on veut couvrir que la fonctionalité fait bien ce qu'elle doit faire Exemple: remove enleve bien un element maintenant que ce passe-til si remove: el et el n'est pas dans le receveur
- certains tests sont aussi des scenarios d'utilisation J'ouvre la socket J'envoie un packet J'ai recu un packet
- Souvent l'idee est que l'on veut que le test evolue moins vite que la classe si elle change.
Je n'ai pas compris d'où provient ta classe MAExtensionTest. Si cela ne pas fait parti du kernel Squeak, il faut faire remonter tes tests au développeur de ton code.
Exact
Cordialement, -- oooo Dr. Serge Stinckwich OOOOOOOO Université de Caen>CNRS UMR 6072>GREYC>MAD OOESUGOO http://purl.org/net/SergeStinckwich oooooo Smalltalkers do: [:it | All with: Class, (And love: it)] \ / ##
On 8 déc. 05, at 18:28, Serge Stinckwich wrote:
Le 8 déc. 05 à 14:30, Cdrick a écrit :
Est ce que ces rajouts vous semblent pertinents ? si oui qu'est ce que j'en fais ?
Je te réponds sur qu'est ce que l'on fait des tests. Je viens d'en écrire quelques uns sur les Collections pour Squeak 3.9 : OrderedCollection, SortedCollection, etc ... Je les ai pas déposé sur mantis, car ce ne sont pas vraiment des bugs ;-) J'ai mis le fichier mcz sur le repository http:// source.squealfoundation.org/inbox/ où l'on peut mettre des packages susceptibles d'être intégrés dans la prochaine version de Squeak.
Si à vingt personnes de la liste, on prend une classe et on écrit 10 tests, cela fait 200 tests supplémentaires dans Squeak. Cela peut aller vite ;-)
Exact!!!
J'ai lu tes tests et ils sont bien sympa. Par contre ajoute un petit commentaire aux methodes cela peut aider a comprendre. C'est une super doc. Certains n'ont pas de assert comme Heap Je ne suis pas sur sur les (1 to: 2) = #(1 2)
Bon après, je ne peux pas me prononcer sur la qualité des tests que l'on va obtenir. Je sais pas trop ce qu'est un bon test d'ailleurs. Un test qui se lit facilement ?
Je n'ai pas compris d'où provient ta classe MAExtensionTest. Si cela ne pas fait parti du kernel Squeak, il faut faire remonter tes tests au développeur de ton code.
Cordialement, -- oooo Dr. Serge Stinckwich OOOOOOOO Université de Caen>CNRS UMR 6072>GREYC>MAD OOESUGOO http://purl.org/net/SergeStinckwich oooooo Smalltalkers do: [:it | All with: Class, (And love: it)] \ / ##
Squeak-fr mailing list Squeak-fr@lists.squeakfoundation.org http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
Je les ai pas déposé sur mantis, car ce ne sont pas vraiment des bugs ;-) J'ai mis le fichier mcz sur le repository http:// source.squealfoundation.org/inbox/ où l'on peut mettre des packages susceptibles d'être intégrés dans la prochaine version de Squeak.
ok
Si à vingt personnes de la liste, on prend une classe et on écrit 10 tests, cela fait 200 tests supplémentaires dans Squeak. Cela peut aller vite ;-) Bon après, je ne peux pas me prononcer sur la qualité des tests que l'on va obtenir. Je sais pas trop ce qu'est un bon test d'ailleurs. Un test qui se lit facilement ?
Justement, quand on test une methode, une methode = un test (mais eventuellement des sous-methodes)
Je n'ai pas compris d'où provient ta classe MAExtensionTest. Si cela ne pas fait parti du kernel Squeak, il faut faire remonter tes tests au développeur de ton code.
en fait c'est une classe de Magritte...donc effectivement directement au developpeur (Lukas) ;) le developpeur est certainement le plus à même de juger ces tests car j'imagine qu'on peut écrire aussi de mauvais tests (qui dépassent les fonctionnalités de la classe ou même carrément faux).
me tarde d'avoir Romain au sujet des extensions du browser, car c'est vrai que ca serait plus sympa d'avoir un pane avec le test quand on browse les methodes
squeak-fr@lists.squeakfoundation.org