Question
PowerShell et TDD
- Richard Lazaro
- Auteur du sujet
- Hors Ligne
- Membre platinium
- Messages : 530
- Remerciements reçus 0
Ces derniers temps, PowerShell se structure de plus en plus. Et on en arrive au TDD (depuis un petit moment déjà qd même) avec des framework comme Pester (y'en a d'autre mais je les ai pas spécialement aimé)
Autant, j'arrive bien a voir l'implémentation pour des fonctions basique mais j'ai un peu plus de mal dès qu'il va s'agir de manipuler des objets complexe.
Par exemple, prenons le cas de la création d'une fonction New-ADUserCustom (oui, une perso pas celle du module ActiveDirectory).
Comment vous envisagerez l'implémentation du TDD là dessus ?
En gros, comment vous implementez vos tests pour des objets complexes ?
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
Dans ton exemple le test dépend d'une AD, peut être un mock , voir plusieurs (réseau).Comment vous envisagerez l'implémentation du TDD là dessus ?
Richard Lazaro écrit:
Pas évident de répondre :-/En gros, comment vous implémentez vos tests pour des objets complexes ?
Avec PS, je teste les valeurs de paramètres, les cas d'erreur spécifiés (règles de gestion), les jeux de paramètres et les combinaisons de paramètres .
Je peux créer un test validant une liste de valeurs jugée correcte pour un paramètre et pas un test pour chaque valeur.
Je n'ai pas encore eu à gérer ce type d'objet, si ton objet est une agrégation, je pense qu'il faut tester chaque partie séparément.
Dans ton cas, tu testes du code existant , c'est tes spécifications qui peuvent répondre à ta question, non ?
Mais je doute que ma réponse puisse t'aider.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Richard Lazaro
- Auteur du sujet
- Hors Ligne
- Membre platinium
- Messages : 530
- Remerciements reçus 0
Dans ton exemple le test dépend d'une AD, peut être un mock , voir plusieurs (réseau).
Je suis d'accord, mais dans un cas de création de donnée. On peut pas vraiment faire de mock et on est obligé de tester si la fonction va bien créer la donner sur l'infra distante, exemple :
Fonction A
Param : username
Param : domain
Action : Creation d'un user 'username' sur l'ad 'domain'
Return : Null ou un Objet ADUSER
En gros on va appeler notre fonction et créer un code custom qui va vérifier la présence de l'objet avec les bonnes valeurs ?
Laurent Dardenne écrit:
Dans ton cas, tu testes du code existant , c'est tes spécifications qui peuvent répondre à ta question, non ?
Mais je doute que ma réponse puisse t'aider.
Le link m'a un peu aidé, mais en gros le TDD serait uniquement pour du traitement local avec un retour.
Sauf que en Scripting (en tout cas pour mon utilisation) je vais souvent agir avec une infrastructure externe (AD, SCCM, SVN, ect...)
PS : Non cela n'est pas lié à mon projet PSAnalysis mais je parle de concept global
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
Oui, un mock est une simulation si tu n'as pas l'infra de dispos. Ou valider le comportement de ton code en étant assuré que rien d'externe n'interfère.On peut pas vraiment faire de mock et on est obligé de tester si la fonction va bien créer la donner sur l'infra distante
Richard Lazaro écrit:
Oui tout à fait, tu automatises une partie de la recette.En gros on va appeler notre fonction et créer un code custom qui va vérifier la présence de l'objet avec les bonnes valeurs ?
J'ai un fichier, je le verrouille, je tente de l'ouvrir, je vérifie si mon code se comporte de manière attendue. J'additionne 1+1 je vérifie si le résultat est 2.
Ensuite c'est les données de test qui permettent de vérifier la plupart des cas. cf. fichier joint.
Richard Lazaro écrit:
Non, juste être capable de vérifier une action ( get/set). Sinon ce serait très limitémais en gros le TDD serait uniquement pour du traitement local avec un retour.
La pièce jointe TestPathDatas.zip est absente ou indisponible
Tutoriels PowerShell
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Discussions générales
- PowerShell et TDD