La sismologie est une dicipline scientifique visant à étudier le comportement de la Terre. Il est donc important pour les chercheur\textperiodcentered euse\textperiodcentered s d'avoir accèes rappidement et facilement au données mesurées et aux conditions de récolte des données. C'est donc dans l'horizon d'une distribition parfaite des données que s'inscrit mon stage à ISTerre.
La sismologie est une dicipline scientifique visant à étudier le comportement de la Terre lors de séismes ainsi que la propagation des ondes élastique (sismique) à l'interieur la plannete\textbf{SOURCE '!'!'!}. En effet, la Terre est constament en train de trambler Il est donc important pour les chercheur\textperiodcentered euse\textperiodcentered s d'avoir accèes rappidement et facilement au données mesurant l'activitéesismique ce la Terre et aux conditions de récolte de ces données pour créer de nouvelles connaissances sur la structure de la Terre mais aussi pour pouvoir enticiper l'arrivée de catastophes dût au séisme. C'est pour cela que de nombreux capteurs, mesurant diversses unitées tel que la vitesse ou l'accélération, sont installés un peu partout autour du globe qui sureveil en permanace le comportement de la Terre. Ansi, c'est donc dans l'horizon d'une distribition parfaite des données que s'inscrit mon stage à ISTerre.
\paragraph{}
ISTerre est un laboratoire universitaire à Grenoble dont le but est l'étude de le sismologie. Il y a aussi un service informatique dont l'objectif est de développer et maintenir le centre de donnée RÉSIF. Le centre de donnée se doit de désservir les données sismologiques récoltées par les noeuds A du réseau RÉSIF, à qui le demande grace à différents web services gérés par le centre de donnée RÉSIF (noeud B).
ISTerre est un laboratoire universitaire à Grenoble dont le but est l'étude de le sismologie. Ce laboratoire héberge un service informatique, nommé RÉSIF-DC, dont l'objectif est de développer et maintenir le centre de donnée RÉSIF en s'appuiyant sur les ressource de l'Universitée Grenoble Alpes (UGA).
\paragraph{}
Résif c'est une infrastructure de recherche qui déploie en France métropolitaine une instrumentation moderne (parcs de sismomètres, stations GNSS et gravimètres) qui mesure la déformation de la surface terrestre. \textbf{CITATION '!'!'!}
\paragraph{}
J'ai donc pu éffectuer mon stage dans ce contexte dans le cadre d'une optimisation des \textit{web services} RÉSIF.
\paragraph{}
L'objectif de mon stage était donc de construir des tests comportementaux sur plusieurs de ces web services, à savoir les services \href{https://ws.resif.fr/fdsnws/station/1}{'station'}, \href{https://ws.resif.fr/fdsnws/dataselect/1}{'dataselect'} et \href{https://ws.resif.fr/fdsnws/availability/1}{'availability'}. En effet, les tests que j'ai implémenté auront pour untilité de comparrer les performances entre les nouvelles et anciennnes version de ces web services. La problematique de ce stage est donc comment réaliser des tests exaustif qui permettent de mettre en lumière les problemes des web services de résif.
L'objectif de mon stage était donc de construir des tests comportementaux sur plusieurs de ces web services, à savoir les services \href{https://ws.resif.fr/fdsnws/station/1}{'station'}, \href{https://ws.resif.fr/fdsnws/dataselect/1}{'dataselect'} et \href{https://ws.resif.fr/fdsnws/availability/1}{'availability'}. En effet, les tests que j'ai implémenté auront pour untilité de comparrer les performances, la non-régréssion entre les nouvelles et anciennnes version de ces \textit{web services} ainsi que la conformité de ces \textit{web services} face aux spécification établie par la communoté scientifique. La problematique de ce stage est donc comment réaliser des tests exaustif qui permettent de mettre en lumière les problemes des web services de résif.
\paragraph{}
Dans ce rapport, j'éxposrai d'abord les structures qui m'ont acceuillit et entouré lors de la réalisation de mon stage. En suite, je décrirai le contexte dans le quelle j'ai baigné pendant 10 semainses. C'est après cela que je détaillrai le déroluement de ce stage, depuis la gestion de projet jusqu'a réalisation finale en passant par les problèmes rencontés. Enfin, je ferai un bilan sur ce que j'ai pu réaliser avant de conclure.
\newpage{}
@ -45,19 +47,41 @@
\section{Les structures d'acceuil}
\subsection{Présentation des structures d'accueil}
\paragraph{}
RÉSIF-DC est géré par différents organismes chapauté par le CNRS. Quand j'ai signé ma convention, je l'ai fait avec l'Unitée Mixte de Recherche ISTERRE. En effet, le bureau dans le quel je travail se situ dans les locaux de cet UMR. Toute fois, le personel travaillant dans l'équipe RÉSIF-DC est sous la diréction de l'OSUG et de RÉSIF. Ainsi, j'ai été amené à integrer une équipe d'ingénieurs OSUG.
RÉSIF-DC est géré par différents organismes qui sont sous la tutelle du ministere de la transition écologique ainsi que par le minister de l'enseignement supperieur, de la recherche et de l'inovation. Quand j'ai signé ma convention, je l'ai fait avec l'Unitée Mixte de Recherche (UMR) ISTerre. En effet, le bureau dans le quel je travail se situ dans les locaux de cet UMR. Toute fois, le personel travaillant dans l'équipe RÉSIF-DC est sous la diréction de l'OSUG et de RÉSIF-EPOS. Ainsi, j'ai été amené à integrer une équipe d'ingénieurs OSUG.
\begin{figure}[H]
\caption{Répartition des organismes contribuant à RÉSIF-DC}
\includegraphics[width=\textwidth]{organigrame}
\end{figure}
\subsection{RÉSIF-EPOS}
\paragraph{}
Le réseau sismologique et géodésique français (RÉSIF) est un consortium réunissant 18 institutions (\textbf{SOURCES}).RÉSIF c'est aussi une infrastructure de recherche (IR) regroupant des chercheur\textperiodcentered euse\textperiodcentered s qui étudient les données récoltées pour comprendre la dynamique et les aléas de l'interieur de notre planète ainsi que les interactions atmosphère/océan.
\paragraph{}
L'infrastructure est né d'un besoin de prévention dans le cadre de secousses sysmique. Historiquement, c'est le séisme de Teil (2019), près de Castres, qui a confirmé la vulnérabilitée de la France faces au aléas sismiques par son impacte social et éconimique.
\paragraph{}
Ainsi, RÉSIF contribut
à l'évaluation des aléas et des risques liès à une acctivitée sysmique,
à l'évaluation rapide des dégâts,
à la gestion de crises,
aux normes de construction des bâtiments,
à l'établissement d'un lien entre les dégâts sur un immeuble et la sismicité,
les secousses induite par l’activité humaine, etcetera.
\subsubsection{RÉSIF-SI}
\paragraph{}
RÉSIF-SI est une acction transverse, impliquant ingénieurs et scientifiques provenant de plusieurs laboratoir et observatoir tel que l'Institur de Physique du Globe de Paris(IPGP), l'Observatoir des Sciences de l'Univers de Grenoble (OSUG), ISTerre et bien d'autres (\textbf{SOURCES}). Sont but est la collecte, le fomratage, la validation et la qualifiquation de données sismique, la génération de méta données, l'archivage des données/méta données ainsi que leurs distribution. Ainsi, un ensmble de capteurs géophysiques implentés partout en France est maintenu par RÉSIF-SI. Ces capteurs sont répartis en plusieurs réseaux tel que le \href{https://rap.resif.fr}{Réseau d'acelerométrie Permanant} (RAP) ou le \href{https://sismob.resif.fr}{parc national Sismologique Mobile} (SisMob) (\textbf{SOURCES}). Ces capteurs permettent d’alimenter, en partie, l’infrastructure EPOS (European Plate Observing System). RÉSIF-SI, c'est l'organisme majeur qui contibut à cette alimentation. Ainsi les données colléctées par RÉSIF sont disponible via plusieurs webservices qui sont standardiser par plusieurs organismes tel que EIDA, FDSN et RÉSIF même.
\subsection{L'OSUG}
\paragraph{}
L'Observatoir des Sciences de l'Univers de Grenoble fédére des laboratoires pour permetre à la recherche dans les sciences de l'Univers, de la Terre et de l'environement, une communication plus facile, une répartition des tâches éfficace et une collaboration favorisée.
\paragraph{}
Ainsi, l'OSUG permet aux insitituts d'avoir du personel qualifié pour pouvoir assurer une mission d'observation.
Ainsi, l'OSUG permet aux insitituts d'avoir du personel qualifié pour pouvoir assurer une mission d'observation grâce à ces Unités d'Appui et de Recherche (UAR) dont fait partit l'OSUG-DC.
\subsubsection{OSUG-DC}
\paragraph{}
L'OSUG-DC est une équipe formée principalement d'ingénieurs informatiques s'assurant de le traitement et la diffusion de données d'observation. L'équipe a aussi pour mission de concevoir et développer des logiciels qui seront mis à disposition de la communoté scinetifique.
\subsubsection{RÉSIF-DC}
\paragraph{}
Ainsi, des membres de l'OSUG-DC forment l'équipe RÉSIF-DC chargé de développer et maintenir les \textit{web services} résif. C'est dans ce cadre s'inscrit mon stage et c'est dans ce contexte que j'ai interagie avec les mebre de l'équipe.
\subsection{ISTerre}
\paragraph{}
ISTerre (Instutut des Sciences de ta Terre) est un laboratoire créer en 2011 dont l’objectif scientifique est l’étude physique et chimique de notre planette. Le laboratoire est diviser en 2 sections, une à Chambery et l’autre à Grenoble, toutes deux fédéré par l'OSUG. Le nombre de personne travaillant pour ce laboratoir est assez important: près de 300 personnes en additionant les 2 sites dont la pluparts sont scientifiques (\~20\% du personel sont des technicien·ne·s). Pour donner une idée du pourvoir d’acction du laboratoire, celui ci a un budget annuel d’envirion 15 millions d’euros.
ISTerre (Instutut des Sciences de ta Terre) est un laboratoire créer en 2011, fédéré par l'OSUG, dont l’objectif scientifique est l’étude physique et chimique de notre planette. Le laboratoire est répartit sur deux villes, Chambery et Grenoble. Le nombre de personne travaillant pour ce laboratoir est assez important: près de 300 personnes en additionant les 2 sites dont la pluparts sont scientifiques (\~20\% du personel sont des technicien·ne·s). Pour donner une idée du pourvoir d’acction du laboratoire, celui ci a un budget annuel d’envirion 15 millions d’euros.
\paragraph{}
ISTerre travail en colaboration avec plusieurs pays, notatment du Sud (Équateur, Pérou, Liban, \dots). Cet collaboration est en partie traduite par l’échange de chercheur·euse·s et d’étudiant·e·s. Le travail scientifique du laboratoire se retrouve chaque année dans près de 250 articles de recherche et dans de nombreuses actions de vulgarisation scentifique. Ces connaissance on pu être récoltées grâce au differentes action menées comme des déplacement dans des lieux sismiques, la récolte et la distribution de données aquisent par differents réseau d’instrument géophysique, l’analyse d’échentillons naturels, et grâce à de nouvelles modelisation et expérimentations. La récolte et le traitement des données s’articule autour de 3 grand axes pour ISTerre:
\begin{enumerate}
@ -65,19 +89,6 @@
\item Comment la surface de la Terre est-elle façonnée par les interacrions entre les processus profonds et les pocessus de surface?
\item Comment roches et sols engegistrent les perturbations physico-chimique naturelles ou anthropique de leur environement? Quelles sont les mécanismes qui gouvernent la croissance, la sorption et l’alteration des minéreaux? Comment les processus hydrothermaux et magnétiques concernent-ils les ressources minérales? Comment produire de l’hydrogène? La carbonation minéral, une voie pour le stockage du CO2?
\end{enumerate}
\subsection{RÉSIF}
\paragraph{}
Le réseau sismologique et géodésique français (RÉSIF) est un ensmble de capteurs géophysiques implentés partout en France qui permettent d’alimenter, en partie, l’infrastructure EPOS (European Plate Observing System). C'est l'organisme majeur qui contibut à cette alimentation en France. Ainsi les données colléctées par RÉSIF sont disponible via plusieurs webservices qui sont standardiser par plusieurs organismes tel que EIDA, FDSN et RÉSIF même. RÉSIF c'est aussi une infrastructure de recherche (IR) regroupant des chercheur\textperiodcentered euse\textperiodcentered s qui étudient les données récoltées pour comprendre la dynamique et les aléas de l'interieur de notre planète ainsi que les interactions atmosphère/océan.
\paragraph{}
L'infrastructure est né d'un besoin de prévention dans le cadre de secousses sysmique. Historiquement, c'est le séisme de Teil (2019), près de Castres, qui a confirmé la vulnérabilitée de la France faces au aléas sismiques par son impacte social et éconimique.
\paragraph{}
Ainsi, RÉSIF contribut
à l'évaluation des aléas et des risques liès à une acctivitée sysmique,
à l'évaluation rapide des dégâts,
à la gestion de crises,
aux normes de construction des bâtiments,
à l'établissement d'un lien entre les dégâts sur un immeuble et la sismicité,
les secousses induite par l’activité humaine, etcetera.
\section{Présetation du stage}
\subsection{Gestion de projet}
@ -93,23 +104,29 @@
\item \textbf{Tout les matin}: \textit{Point avec mon tutereur de stage}: définition des objectifs du jours
\item \textbf{Lundi matin à 11h}: \textit{Réunion ticket}: Point sur les réalisations de la semaine précédante + explication du travail à fournir pour la semaine qui vient.
\item \textbf{Vendredi matin}: \textit{Présentation du travail personel}: Réunion qui permet de voir l'état d'avancement des membre du groupe de manière plus précises que dans les réunions ticket
\item \textbf{Le reste du temps}: \textit{travail personel}: Chaque membre de l'équipe travail sur ses tâches (seul ou en groupe)
\item \textbf{Le reste du temps}: \textit{travail individuel}: Chaque membre de l'équipe travail sur ses tâches (seul ou en groupe)
\end{itemize}
\subsection{Environement}
\paragraph{}
Le laboratore est pricipallement constitué de chercheur\textperiodcentered euse\textperiodcentered s dans diférrents dommaines, ce qui donne un environement très riche où les interactions entre les membre des different services sont assez édifantes.
Cependant, durant mon stage, j'étais la pluspars du temps dans un bureau avec une équipe de 4 personnes. L'équipe se composait d'un chef de projet, un developpeur logiciel, un administrateur systeme et un data enginier.
Cependant, durant mon stage, j'étais la pluspars du temps dans un bureau avec une équipe de 4 personnes.
\begin{itemize}
\item \textbf{Jonathan Schaeffer}: responsable infrastructure et coordinateur de l'équipe Résif-DC
\item \textbf{David Wolyniec}: ingénieur expert données et responsable de l'intégration des donnés des noeuds A \textit{RAP} et \textit{SISMOB}
\end{itemize}
\subsection{L'existant}
\paragraph{}
Quand je suis arrivé, les differents web services que j'avais à tester était terminés et déployés. Il exister déja une suite de tests développée par Catherine Lecompte mais les tests etait effectués sans bibliothèque de test, ce qui rendait difficile son maintient.
Quand je suis arrivé, les differents \textit{web services} que j'avais à tester était terminés et déployés par une ancienne équipe. Il exister déja une suite de tests développée par cette même équipe mais les tests etait effectués sans bibliothèque ou framework de test, ce qui rendait difficile son maintient.
\paragraph{}
L'équipe RESIF-DC, dans la quelle je me trouvais, avait déja effectué quelques tests avec la bibliothèque \textit{behave} pour decider quelle bibliothèque utiliser pour le stage.
L'équipe RESIF-DC, dans la quelle je me trouvais, avait déja effectué quelques tests avec la bibliothèque \textit{behave} pour decider quelle bibliothèque utiliser pour le faire ces derniers.
Cependant, pour ne pas brider ma créativité, il a était déssidé que je parte de 0 et que selement une fois que j'aurai finit d'écrir mes scénarios, je regarde les différents scénarios définit par l'équipe.
\subsection{Les objectifs}
\paragraph{}
Les objectif de mon stages était multiples. En effet, je devais développer une suite de tests cappable de verifier le comportement des web services dans des cas de mise en difficulté ainsi que de verifier le simple fonctionement de ces derniers. Un des effet de bord de cela est que j'ai pu détécter des bugs des \textit{web setvices}.
Les objectif de mon stages était multiples. En effet, je devais développer une suite de tests cappable de verifier le comportement des web services dans des cas de mise en difficulté ainsi que de verifier le simple fonctionement de ces derniers. Un des effet de bord de cela est que j'ai pu détécter des bugs des \textit{web services}.
\paragraph{}
Ainsi, lors d'une nouvelle implémentation d'un web service, les résultats des requettes peuvent être comparés. Aussi lors d'un changement d'infrastructure, qui peuvent ammener une migration des serveurs, le test du fonctionement des web services peuvent être réalisé rappidement.
\newpage{}
@ -227,12 +244,20 @@
Le web service \textit{\href{https://ws.resif.fr/fdsnws/dataselect/1}{dataselect}} permet de selectioner des données pour en fonction des réseaux, station et canneaux sur une periode de temps. Le format de la réponse est un fichier binaire sour le format MiniSEED. Il est donc naissaissaire d'avoir un outils pour lire ce type de fichier.
\subsubsection{PH5}
Les web services \textit{\href{https://ph5ws.resif.fr/fdsnws/dataselect/1}{dataselect}} et \textit{\href{https://ph5ws.resif.fr/resifws/availability/1}{availability}} ont aussi leurs verssion en PH5. C'est à dire que ce sont des gros fichier stocker sous le format ph5 et délivré sous les formats disponibles mentionés plus haut.
\subsection{Réfléxion sur les sénarios}
\label{chap:scenarReflexion}
\paragraph{}
Pour établir un scénario, il fallais prendre un temps de réfléxion pour comprendre le \textit{web service} que je m'appretais à tester. Pour cela, j'ai pu avoir une approches pour cerner le cas intéréssant.
\paragraph{}
Tout d'abord, je lisais la documentation des web service pour bien comprendre leurs utilités. Ensuite, je devais comprendre l'utilisation des paramètres qui permettent de réstraindre la donnée. Une fois cette étape réalisée, je faisais varier les paramèttres entre des valeurs normales, des valeurs improbable et des valeurs aux limites de ce que le \textit{web service} autorisait (par exemple, une lattitude 181°).
\paragraph{}
Ainsi, en combinant les paramettres, je créais des URL et les testais pour voir le comportement du \textit{web service}. C'est ici que ce situait la pricnipale difficulté dans le processus de réfléxion. En effet, c'est dans ces moment là qu'il fallait déterminer si le \textit{web service} ce comportait normalement. Aussi, il est possible que j'eu oublié des cas du fait de cette methode. Cependant, c'est la meilleur methode que j'ai trouvé pour avoir des idées de scénarios.
\subsection{L'écriture des scénarios}
\paragraph{}
Pour pouvoir tester le fonctionement des different webservices, J'ai du écrire des scénario. Ceux ci sont décomposé en plusieurs éléments:
Pour pouvoir tester le fonctionement des different webservices, J'ai du écrire des scénarios. Ceux ci sont la traduction en mots de la période de réfléxion éxpliqué plus haut (cf. Chap~\ref{chap:scenarReflexion}). Ces scénarios sont décomposé en plusieurs éléments appelés \textit{steps}:
\begin{itemize}
\item Le type de \textbf{scénario (outline/inline)} et son titre (ex. \textit{Scenario Outline:} S'abonner à des chaines Peertube)
\item \textbf{L'initialisation} du context en fonction du comportement souhaité (ex. \textit{Étant donné} que je suis connécté·e)
\item \textbf{L'initialisation} du context en fonction du comportement souhaité (ex. \textit{Étant donné} que je suis connécté·e avec mon compte)
\item \textbf{Les actions} à tester (ex. \textit{Quand} je clique sur un bouton s'abonner)
\item \textbf{La déscription} du comportement atendu (ex. \textit{Je m'attend à} pouvoir voir mon abonement dans la liste des abonements et le boutton s'aboner devien se désaboner)
\item \textbf{Les exemples} de parametres qui vont être testés si on est \textbf{dans un scénario outline} (ex. \textit{Par exemple}, si je m'abonne à 'Hygiene mental', à 'Politikon', à 'Tzitzimitl')
@ -240,7 +265,7 @@
\paragraph{}
Le format du ficher de scénario permet d'utiliser un langage naturel quelqu'il soit mais il y a quand même des mots clefs qui sont écrit en anglais. J'ai donc rédigé les scénarios en anglais pour permettre une meilleur fuidité de lecture ainsi que pour internationaliser mes scénario dans un contontexte polylingue tel qu'au laboratoire ISTerre.
\paragraph{}
La principale dificulté lors de ces étapes est qu'il est important de penser aux cas d'utilisations qui pourai mettre en danger l'éxecution d'une requete, sachant que je ne connais pas l'implémentation des web services.
Pour ne pas répeter de code inutilement, j'éssayais à chaque fois de réutiliser les même \textit{steps}. C'est ainsi que dans tous mes scénarios, je réalise le même \textit{step}: \textit{When the web service is "GET|POST" requested}. En effet, ce \textit{step} me permetait de faire une requete au \textit{web service} qui était parametré. Ainsi, j'évite de faire un \textit{step} par web service, ce qui facilite l'écriture de scénario pour le future.
\subsubsection{Les tags}
\paragraph{}
Dans behave, il existe une notion de tag qui permet de labéliser des scénarios. Ainsi, j'ai pu diférentié plusieurs types de scénarios:
@ -253,12 +278,55 @@
\end{itemize}
\paragraph{}
Le tag \textit{@failling} met souvent en évidence un bug.
\subsubsection{Exemples de scénarios}
\subsection{L'implémenation des tests}
\paragraph{}
Pour implementer mes tests, j'ai du reprendre chaque phrase du scénario (\textit{Given, When, Then, And, But}) et coder leurs sens. Par exemple, pour un \textit{Given}, la plupars du temps, je devais initialiser le contexte, pour les \textit{Then}, je devais comparer les résultat des \textit{When} avec ce qui était attendut. Ainsi, il était important de bien factoriser les différents cas pour pouvoir réutiliser le code déjà produit. Aussi, toujours pour les même raisons évoqué plus haut, le code est écris en anglais.
\subsubsection{Conception}
Pour implementer mes tests, j'ai du reprendre chaque \textit{step} du scénario (\textit{Given, When, Then, And, But}) et coder leurs sens. Par exemple, pour un \textit{Given}, la plupars du temps, je devais initialiser le contexte, pour les \textit{Then}, je devais comparer les résultat des \textit{When} avec ce qui était attendu. Aussi, toujours pour les même raisons évoqué plus haut, le code est écris en anglais.
\subsubsection{Exemples de scénario}
\paragraph{}
Voici un exemple de scénario qui illustre le travaille depuis l'écriture de ce dernier, jusqu'à son implémentation.
\paragraph{}
Sur la Figure~\ref{fig:scenarioLatitudeFeature}, on demendre à \textit{behave} d'éxecuter 3 \textit{steps} différents: un pour initialiser le paramettre \textit{latitude} avec la valeur \textit{-100} (la lattitude minimale sur Terre est de -90°, au dela, les coordonées décrivent un point dans l'espace), un pour transmetre la requete au \textit{web service} et enfin, un pour verifier que le code de retour du \textit{web service} est bien égale à 400 (le code 400 signifit que l'utilisateur\textperiodcentered ice à fait une erreur dans sa requete).
\begin{figure}[H]
\caption{Exemple de scénario}
\begin{verbatim}
Scenario: Latitude inférieur à -90°
Given une 'latitude' de '-100'
When quand le web service est requété via une URL
Then le code de retour du web sercice doit être '400'
\end{verbatim}
\label{fig:scenarioLatitudeFeature}
\end{figure}
\paragraph{}
Au niveau du code, l'implémentation des \textit{steps} ressemble à la Figure~\ref{fig:implementationScenario}
\begin{figure}[H]
\caption{Implémentation du scénario (pseudo code)}
\begin{verbatim}
@given("une '{parametre}' de '{valeur}'")
fonction initaliser un parametre:
ajouter aux parametres de la requete 'parametre' égale à 'valeur'
@when("quand le web service est requété via une URL")
fonction faire une requete au web service:
url <= construir l'url avec les parametres initalisés avants
réponse <= interoger le web service
@then("le code de retour du web sercice doit être '{code}'")
fonction comparer le code de retour:
si le code de retour de réponse est différant de 'code':
dire à behave que le test à échoué
sinon
ne rien faire car tout ce passe bien
\end{verbatim}
\label{fig:implementationScenario}
\end{figure}
Pour chaque \textit{step}, \textit{behave} ira chercher et executer la bonne fonction grâce au préfix \textit{@given}, \textit{@when} et \textit{@then}. Ainsi, le nom de la fonction n'est pas imprtant pour \textit{behave}. Les variables peuvent être transmises de fonction en fonction grâce à la notion de \textit{context}. Concrétement, c'est un objet qui est passé en paramètre de chaque fonction est qui est capable de stocker des variables sous la forme de propriété.
\subsection{Environement}
\textit{Behave} est capable de généré un environement entre chaqu'un des \textit{items} composant les tests (\textit{feature}, \textit{scénario}, \textit{tag}, ...). Pour ça, il faut définir des fonctions avec des noms prédéfinit par \textit{behave} dans un fichier nomé \textit{environment.py}.
\paragraph{}
Les noms des fonctions sont composés de la manière suivante: $<$before|after$>$\_$<$\textit{element}$>$ (exemple: before\_feature, after\_scenario, before\_all, \dots). J'ai pu me servir de certaine de ces fonction, notament pour la configuration des tests par des élément extenes tel que des variables d'environement ou des fichiers de configuration. Ainsi, avant tout, je configure le protocole utilisé (http ou https) et le couple loggin/mo de passe pour l'accès aux données réstraintes. Avant chaque \textit{feature}, je séléction le \textit{web service} addéquat.
\subsection{Conception}
Lors de la réalisation des tests du deuxième web service, \textit{availability}, je commençais à reprendre des fonctionalités du premier, \textit{station}, comme l'envoi de requette au web service, la verification de format de la réponse. À ce moment là, j'ai resenti le besoin de metre en commun certaine partie de code et d'en spécialiser d'autres. Ainsi, j'ai commancé un travail de factorisation de code.