Comment tester un numéro de téléphone

mardi 27 juin 2006 :: perrick :: Extreme Programming :: 3 commentaires :: aucun trackback

- Je peux l'appeler de ta part ?
- Oui bien sûr, voici son numéro...

La suite de la conversation dépendra souvent du contexte : entre le numéro privé de M. Bond - James Bond, celui personnel de la serveuse du bar des sports et celui de mon frère informaticien au boulot, les variations sont multiples.

Une des plus courantes reste bien sûr de faire répeter le numéro par l'interlocuteur : on vérifie directement qu'il a bien noté le numéro et qu'il pourra le composer sans craindre la fausse manipulation. Rarement on lui demandera de répéter une deuxième ou même une cinquième fois. Et si on détecte un chiffre erroné... on reprend du début.

Et maintenant sur un bout de code, combien de tests faudrait-il pour vérifier qu'il fait bien ce qu'on lui demande ? Ma réponse s'appuie parfois sur ce même exemple du numéro de téléphone : si la réponse est facile, on pourra s'arrêter très vite. Sinon et -- surtout -- à la moindre erreur, on ajoute des scénarii à tester. Et puis la comparaison avec les numéros de téléphone peut aussi nous amener sur d'autres chantiers à explorer.

  • à un étranger, on prendra le temps de dicter chaque chiffre séparement : 0-3-2-0-0-6-5-1-2-6
  • dans la base classique, on aura tendance à grouper par pair : 03-20-06-51-26...
  • ...jusqu'au jour où certains ont commencer à jongler avec ces groupements : si 0800-800-800 fontionne bien, 0320-065-126 n'est pas aussi heureux
  • et puis tout se complique avec les numéros plus courts : avant le 11, 12, 18 et désormais la famille des 118-XXX
  • avant d'ajouter ensuite les codes pays, +33-3-... ou 00-33-(0)-3-...

A chaque fois, il faut repenser sa stratégie de transmission et de test : pensez encore qu'il soit si simple d'échanger de manière fiable un numéro de téléphone ?

Vos commentaires et/ou trackbacks

Le jeudi 29 juin 2006 à 15:32, commentaire par pascal :: site :: #

je m'interroge aussi sur la pertinence de mes tests:
dans quelle mesure un test valide-t-il *réellement ou suffisamment fortement* le code?

pour moi, un bon test:
_ valide le cas général ( 03-20-06-51-26 )
_ détecte les erreurs triviales ( texte comme un mail à la place du téléphone )
_ détecte des cas particuliers connus ( numéros courts )
_ n'est pas affecté par les effets de bord ( présence de données ou non en DB )

* valider suffisamment fortement * = pouvoir valider les données et les regles de gestion en l'état actuel, avant leurs prochaines évolutions.

Le jeudi 29 juin 2006 à 19:52, commentaire par perrick :: site :: #

Dans la littérature XP, on distingue souvent "test" et "test case" / "test" et "groupe de tests" ou "scénario de tests". Avec cette nomenclature, ce que tu décris est bien un "scénario".

Souvent quand je construit un tel scénario, je commence plutôt par les erreurs trivials pour borner mon développement.

$this->assertFalse(est_un_telephone(""));
$this->assertFalse(est_un_telephone("aa"));
$this->assertFalse(est_un_telephone("8xx"));

Ensuite on voit les cas faciles :

$this->assertTrue(est_un_telephone("0320065126"));

Ensuite les cas plus compliqués:

$this->assertTrue(est_un_telephone("03 20 06 51 26"));
$this->assertTrue(est_un_telephone("03.20.06.51.26"));
$this->assertTrue(est_un_telephone("03-20-06-51-26"));

En enfin les cas tordus que je laisse à ton imagination !

Le lundi 10 juillet 2006 à 18:29, commentaire par Julien :: site :: #

On a aussi l'option d'envoyer la vCard du contact par Bluetooth à l'autre personne :]

Ajouter un commentaire

Les commentaires pour ce billet sont fermés.