Question PowerShell et TDD

Plus d'informations
il y a 8 ans 9 mois #20130 par Richard Lazaro
PowerShell et TDD a été créé par Richard Lazaro
Bonjour à tous scripteur fou,

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.

Plus d'informations
il y a 8 ans 9 mois #20150 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:PowerShell et TDD
Richard Lazaro écrit:

Comment vous envisagerez l'implémentation du TDD là dessus ?

Dans ton exemple le test dépend d'une AD, peut être un mock , voir plusieurs (réseau).
Richard Lazaro écrit:

En gros, comment vous implémentez vos tests pour des objets complexes ?

Pas évident de répondre :-/
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.

Plus d'informations
il y a 8 ans 9 mois #20155 par Richard Lazaro
Réponse de Richard Lazaro sur le sujet Re:PowerShell et TDD
Laurent Dardenne écrit:

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.

Plus d'informations
il y a 8 ans 9 mois #20158 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:PowerShell et TDD
Richard Lazaro écrit:

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

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.
Richard Lazaro écrit:

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 ?

Oui tout à fait, tu automatises une partie de la recette.
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:

mais en gros le TDD serait uniquement pour du traitement local avec un retour.

Non, juste être capable de vérifier une action ( get/set). Sinon ce serait très limité :)

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.

Temps de génération de la page : 0.130 secondes
Propulsé par Kunena