Avancage presque fin

master
Érina Point 3 years ago
parent d1456eb3b3
commit 2185296d1d

@ -0,0 +1,153 @@
@comment{x-kbibtex-encoding=utf-8}
@misc{sismo,
author = {Wikipédia},
title = {\href{http://fr.wikipedia.org/w/index.php?title=Sismologie&oldid=194023870}{Sismologie --- Wikipédia, l'encyclopédie libre}},
year = {2022},
url = {http://fr.wikipedia.org/w/index.php?title=Sismologie&oldid=194023870},
note = {[En ligne; Page disponible le 27-mai-2022]}
}
@website{resifHome,
author = {résif},
title = {\href{https://resif.fr}{résif}}
}
@website{resifOrga,
author = {résif},
title = {\href{https://resif.fr/presentation/organisation/}{Organisation de RÉSIF}}
}
@website{resifSI,
author = {résif},
title = {\href{https://seismology.resif.fr/resif-information-system/}{RÉSIF-SI}}
}
@website{osugHome,
author = {osug},
title = {\href{https://osug.fr/l-institut/l-osug-en-bref/}{L'OSUG en bref}}
}
@website{osugOrga,
author = {osug},
title = {\href{https://osug.fr/IMG/pdf/organigramme\_hierarchique\_osug\_01-04-2022.pdf}{Organigrame OSUG}}
}
@website{osugDC,
author = {osug},
title = {\href{https://osug.fr/l-institut/services-communs/systeme-d-information/}{Systeme d'information}}
}
@website{isterreScientifics,
author = {ISTerre},
title = {\href{https://isterre.fr/french/l-institut/priorites-scientifiques/}{Priorités scientifiques}}
}
@website{isterrePlaquette,
author = {ISTerre},
title = {\href{https://isterre.fr/IMG/pdf/isterre\_plaquette\_2017.pdf}{Paquette ISTerre}}
}
@website{behavePypi,
author = {Behave},
title = {\href{https://pypi.org/project/behave}{Behave Pypi}},
url = {https://pypi.org/project/behave}
}
@website{behaveHome,
author = {Behave},
title = {\href{behave.readthedocs.io/en/stable/index.html}{Documentation Behave}},
url = {behave.readthedocs.io/en/stable/index.html}
}
@misc{ wikiFDSN,
author = "{Wikipedia contributors}",
title = {\href{https://en.wikipedia.org/w/index.php?title=International_Federation_of_Digital_Seismograph_Networks&oldid=679383746}{International Federation of Digital Seismograph Networks --- {Wikipedia}{,} The Free Encyclopedia}},
year = {2015},
url = {https://en.wikipedia.org/w/index.php?title=International_Federation_of_Digital_Seismograph_Networks&oldid=679383746},
note = {[Online; accessed 7-June-2022]}
}
@website{fdsnAbout,
author = {FDSN},
title = {\href{http://www.fdsn.org/about/}{FDSN about}},
url = {http://www.fdsn.org/about/}
}
@misc{wikiPython,
author = {Wikipédia},
title = {\href{http://fr.wikipedia.org/w/index.php?title=Python_(langage)&oldid=193466432}{Python (langage) --- Wikipédia, l'encyclopédie libre}},
year = {2022},
url = {http://fr.wikipedia.org/w/index.php?title=Python_(langage)&oldid=193466432},
note = {[En ligne; Page disponible le 6-mai-2022]}
}
@website{pipenvReedme,
author = {pypa},
title = {\href{https://github.com/pypa/pipenv/blob/main/README.md}{pipenv REEDME}},
url = {https://github.com/pypa/pipenv/blob/main/README.md}
}
@website{gitAbout,
author = {git},
title = {\href{https://git-scm.com/about}{About git}},
url = {https://git-scm.com/about}
}
@website{gitflow,
author = {nvie},
title = {\href{https://github.com/nvie/gitflow/blob/develop/README.mdown}{gitflow REEDME}},
url = {https://github.com/nvie/gitflow/blob/develop/README.mdown}
}
@article{articleResif,
author = {Catherine Péquegnat and Jonathan Schaeffer and Claudio Satriano and Helle A. Pedersen and Jérôme Touvier and Jean-Marie Saurel and Marie Calvet and Laurent Stehly and Patrick Arnoul and Philippe Bollard and Olivier Dewée and Fabien Engels and Marc Grunberg and Constanza Pardo and David Wolyniec and Grégory Arneodo and Rima Bouazzouz and Olivier Geber and Coralie Aubert and Mickaël Langlais and Sandrine Roussel and Florent Brenguier and Wayne C. Crawford and Arnaud Lemarchand and Emeline Maufroy and Serge Olivier and Diane Rivet and Martin Vallée and Jerôme Vergne and Jérôme Chèze and Eric Debayle and Bertrand Delouis and Philippe Gueguen and Sophie Lambotte and Antoine Mocquet and Anne Paul and Fabrice Peix and François Schindelé and Nikolai M Shapiro and Eléonore Stutzmann and Pierre Volcke and Andrea Walpersdorf},
doi = {10.1785/0220200392},
hal_id = {hal-03193314},
hal_version = {v2},
journal = {{Seismological Research Letters}},
keywords = {seismological data; data management; data access; France; Résif},
month = may,
number = {3},
pages = {18321853},
pdf = {https://hal.archives-ouvertes.fr/hal-03193314v2/file/2021-SRL-Resif-SI-preprint.pdf},
publisher = {{Seismological Society of America}},
title = {\href{https://hal.archives-ouvertes.fr/hal-03193314}{RÉSIF-SI: A Distributed Information System for French Seismological Data}},
url = {https://hal.archives-ouvertes.fr/hal-03193314},
volume = {92},
year = {2021}
}
@website{resifPres,
author = {résif},
title = {\href{https://www.resif.fr/presentation}{Présentation de RÉSIF}},
url = {https://www.resif.fr/presentation/}
}
@website{isterreEnBref,
author = {ISTerre},
title = {\href{https://www.isterre.fr/french/l-institut/le-laboratoire-en-bref}{ISTerre en bref}},
url = {https://www.isterre.fr/french/l-institut/le-laboratoire-en-bref/}
}
@misc{ umr,
author = "Wikipédia",
title = {\href{http://fr.wikipedia.org/w/index.php?title=Unit%C3%A9_mixte_de_recherche&oldid=193595932}{Unité mixte de recherche --- Wikipédia, l'encyclopédie libre}},
year = "2022",
url = "\url{http://fr.wikipedia.org/w/index.php?title=Unit%C3%A9_mixte_de_recherche&oldid=193595932}",
note = "[En ligne; Page disponible le 11-mai-2022]"
}
@website{gitlab,
author = {gitlab},
title = {\href{https://about.gitlab.com}{gitlab}},
url = {https://about.gitlab.com}
}
@misc{ osu,
author = "Wikipédia",
title = {\href{http://fr.wikipedia.org/w/index.php?title=Observatoire_des_sciences_de_l%27univers&oldid=180038548}{Observatoire des sciences de l'univers --- Wikipédia, l'encyclopédie libre}},
year = "2021",
url = "\url{http://fr.wikipedia.org/w/index.php?title=Observatoire_des_sciences_de_l%27univers&oldid=180038548}",
note = "[En ligne; Page disponible le 18-février-2021]"
}
@website{ ir,
author = {CNRS},
title = {\href{https://www.cnrs.fr/fr/infrastructures-de-recherche}{Infrastructures de recherche}}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

@ -2,7 +2,7 @@
\documentclass[12pt]{article}
\title{Rapport de stage Point}
\title{Rapport de stage Allan Point}
\author{Point}
\usepackage[utf8]{inputenc}
@ -12,6 +12,7 @@
\usepackage[a4paper]{geometry}
\geometry{verbose,tmargin=2cm,bmargin=2cm,lmargin=2.5cm,rmargin=2cm}
\usepackage[export]{adjustbox}
\usepackage{url}
\graphicspath { {./images/} }
@ -26,21 +27,48 @@
%-----------------------------------
\begin{document}
\maketitle
\begin{titlepage}
\newcommand{\HRule}{\rule{\linewidth}{0.5mm}}
\center
\textsc{\LARGE
Institut Universitaire de Technologie d'Aubière
} \\[1cm]
\includegraphics[width=\textwidth]{iut} \\[1cm]
\HRule \\[0.4cm]{ \huge \bfseries Rapport de stage à ISTerre\\[0.15cm] }
\HRule \\[1.5cm]
\includegraphics[scale=0.4]{isterre} \\[1cm]
\includegraphics[scale=1]{resif} \\[1cm]
\vspace*{\fill}
présenté par: \textbf{Allan POINT}
\end{titlepage}
\newpage{}
\begin{center}
\vspace*{\fill}
\framebox{J'autorise la diffusion de mon rapport sur l'intranet de l'IUT}
\vspace*{\fill}
\end{center}
\newpage{}
\textbf{\huge Remerciements}
\paragraph{}
Je souhaite remercier tout les membres de ISTerre pour avoir pu m'acceuillir dans les meilleurs conditions ainsi que toutes le personnes m'ayant aidé ou ayant proposer leur aide à la réalisation de ce rapport.
\paragraph{}
Je souhaite remercier toute l'équipe RÉSIF-DC avec qui j'ai pu travailler.
\paragraph{}
Je souhaite aussi remercier mon tuteur de stage, \textit{Phillipe BOLLARD}, pour avoir su m'encadrer et m'aider dans les défficultés que j'ai pu rencontrer lors du stage.
\newpage
\tableofcontents
\newpage{}
\section{Introduction}
\paragraph{}
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ée sismique 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.
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\cite{sismo}. 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ée sismique 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. 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).
ISTerre est un laboratoire universitaire à Grenoble dont le but est l'étude de le sismologie\cite{isterrePlaquette}. 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)\cite{resifSI}.
\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 '!'!'!}
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\cite{resifHome}.
\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, 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.
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 utilité 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{}
@ -48,16 +76,17 @@
\section{Les structures d'acceuil}
\subsection{Présentation des structures d'accueil}
\paragraph{}
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.
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\cite{resifOrga}. 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 (cf. Figure~\ref{fig:orgaResifDC}).
\begin{figure}[H]
\caption{Répartition des organismes contribuant à RÉSIF-DC}
\includegraphics[width=\textwidth]{organigrame}
\label{fig:orgaResifDC}
\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.
Le réseau sismologique et géodésique français (RÉSIF) est un consortium réunissant 18 institutions\cite{resifOrga}.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\cite{resifHome}.
\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.
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\cite{resifPres}.
\paragraph{}
Ainsi, RÉSIF contribut
à l'évaluation des aléas et des risques liès à une acctivitée sysmique,
@ -65,26 +94,26 @@
à 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 lactivité humaine, etcetera.
les secousses induite par lactivité humaine, etcetera\cite{resifPres}.
\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 dalimenter, en partie, linfrastructure 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.
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 \cite{resifSI}. 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)\cite{resifSI}. Ces capteurs permettent dalimenter, en partie, linfrastructure 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.\cite{resifSI}
\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.
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\cite{osugHome}.
\paragraph{}
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.
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\cite{osugOrga}.
\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.
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é scientifique\cite{osugDC}.
\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, fédéré par l'OSUG, dont lobjectif 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 dacction du laboratoire, celui ci a un budget annuel denvirion 15 millions deuros.
ISTerre (Instutut des Sciences de ta Terre) est un laboratoire créer en 2011, fédéré par l'OSUG\cite{isterreEnBref}, dont lobjectif scientifique est létude physique et chimique de notre planette\cite{isterrePlaquette}. 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 dacction du laboratoire, celui ci a un budget annuel denvirion 15 millions deuros\cite{isterrePlaquette}.
\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 dinstrument géophysique, lanalyse déchentillons naturels, et grâce à de nouvelles modelisation et expérimentations. La récolte et le traitement des données sarticule autour de 3 grand axes pour ISTerre :
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\cite{isterrePlaquette}. 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\cite{isterrePlaquette}. 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 dinstrument géophysique, lanalyse déchentillons naturels, et grâce à de nouvelles modelisation et expérimentations\cite{isterrePlaquette}. La récolte et le traitement des données sarticule autour de 3 grand axes pour ISTerre\cite{isterreScientifics} :
\begin{enumerate}
\item Peut on identifier des précurseurs aux grands événements qui boulverssent notres planète ? Quels sont les processus physiques qui gouvernent les séismes, les mouvements de terrain, les éruptions volcaniques, kes varuations du champs magnétique terrestre ?
\item Comment la surface de la Terre est-elle façonnée par les interacrions entre les processus profonds et les pocessus de surface ?
@ -96,7 +125,7 @@
\subsection{Gestion de projet}
\subsubsection{Ce que j'ai fait}
\paragraph{}
Sachant que j'étais sur un projet seule, le besoin de planification ne c'est pas fait ressentir. En effet, ce genre de methode est très utils dans les projet de groupes ou les acteur\textperiodcentered ice\textperiodcentered s on besoin de communiquer leur avancées ainsi que le plans d'acction. Ainsi, je n'ai pas réalisé de diagrame de GANTT et c'est seuelement à posteriori que j'en ai constuit un (cf. Figure \ref{fig:GANTT}). Cepandant, j'ai quand même organiser mon travail en différentes tâches qui respecte un certain patern. En effet, pour chaque web services, je faisait une tache \textit{Scénario} et une tâche \textit{Implémentation}. Chaqu'une de ces tâches était elle même divisé en sous tâches. Par exemple, la tache \textit{Station Implementation} avait une sous-tâche nomé \textit{given the paramerter value from start to end on the level level [STATION]} ou encore \textit{Make xml vlaidator compute str and not etree}.
Sachant que j'étais sur un projet seul, le besoin de planification ne c'est pas fait ressentir. En effet, ce genre de methode est très utils dans les projet de groupes ou les acteur\textperiodcentered ice\textperiodcentered s on besoin de communiquer leur avancées ainsi que le plans d'acction. Ainsi, je n'ai pas réalisé de diagrame de GANTT et c'est seuelement à posteriori que j'en ai constuit un (cf. Figure \ref{fig:GANTT}). Cepandant, j'ai quand même organiser mon travail en différentes tâches qui respecte un certain patern. En effet, pour chaque web services, je faisait une tache \textit{Scénario} et une tâche \textit{Implémentation}. Chaqu'une de ces tâches était elle même divisé en sous tâches. Par exemple, la tache \textit{Station Implementation} avait une sous-tâche nomé \textit{given the paramerter value from start to end on the level level [STATION]} ou encore \textit{Make xml vlaidator compute str and not etree}.
\begin{figure}[H]
\label{fig:GANTT}
\caption{Réalisation du travail}
@ -151,24 +180,24 @@
Ensuite, j'ai pu commencer à prendre en main l'outil behave et me rafraichir la mémoire au niveau du langage python. Après ca, j'ai pu commencer à réfléchir à des scénarios de tests. C'est ce que j'ai principalement fait pendant 3 jours. En paralele de ca, j'ai pu prendre en main d'autre bibliothèque tel que lxml.
\subsubsection{La FDSN}
\paragraph{}
La \textit{Federation of Digital Seismograph Networks} (FDSN) est une organisation qui fedère des laboratoire de sismologie dont le but est d'installer et maintenire des station sismologiques ausibien nationalement qu'internationalement. La FDSN a notament normaliser la diffusion de données et métadonnées par des format tel que le \textit{MiniSEED} ou le \textit{StationXML}.
La \textit{Federation of Digital Seismograph Networks} (FDSN) est une organisation qui fedère des laboratoire de sismologie dont le but est d'installer et maintenire des station sismologiques ausibien nationalement qu'internationalement. La FDSN a notament normaliser la diffusion de données et métadonnées par des format tel que le \textit{MiniSEED} ou le \textit{StationXML}\cite{fdsnAbout, wikiFDSN}.
\subsection{Les outils utilisés}
\subsubsection{Python}
\paragraph{}
Python est un langage de programation orienté objet qui est accèssible à un large publique. Cette accessibilité apportent certaine contraites, notament au niveau objet. En effet, des notion importantes du paradigme objet ne sont pas présentes, ce qui peut géner lors de la conception du logiciel.
Python\cite{wikiPython} est un langage de programation orienté objet qui est accèssible à un large publique. Cette accessibilité apportent certaine contraites, notament au niveau objet. En effet, des notion importantes du paradigme objet ne sont pas présentes, ce qui peut géner lors de la conception du logiciel.
\subsubsection{Pipenv}
\paragraph{}
\textit{Pipenv} est un outil de gestion d'environement virtuel. Un environement virtuel est un ensemble de programe qui viennent s'ajouter ou remplacer une version du même programe. En python, cela sert principalement a importer le verssion de python avec le quelle a été implémenter le code et les bibliothèques utilisé par celui-ci. Ainsi, \textit{pipenv} permet d'ajouter des bibliotheque et framework a un environement virtuel. Ainsi, lors du déploiment du projet, il n'y aura pas de conflit de version ou de bibliothèques manquantes grâce à l'environement virtuel. Autrement dit, c'est comme si la machine qui éxécute le projet avais la même configuration que la machine qui servit a developper.
\textit{Pipenv}\cite{pipenvReedme} est un outil de gestion d'environement virtuel. Un environement virtuel est un ensemble de programe qui viennent s'ajouter ou remplacer une version du même programe. En python, cela sert principalement a importer le verssion de python avec le quelle a été implémenter le code et les bibliothèques utilisé par celui-ci. Ainsi, \textit{pipenv} permet d'ajouter des bibliotheque et framework a un environement virtuel. Ainsi, lors du déploiment du projet, il n'y aura pas de conflit de version ou de bibliothèques manquantes grâce à l'environement virtuel. Autrement dit, c'est comme si la machine qui éxécute le projet avais la même configuration que la machine qui servit a developper.
\subsubsection{Behave}
\paragraph{}
\textit{Behave} est l'implementation en python de \textit{cucumber}, un framework de test comportemental. Cela permet de tester le comportement d'un logiciel sans rentrer dans le code, contrairement à d'autre types de tests tel que les tests unitaire ou les tests fonctionels. Cela possède son lot d'aventages et d'inconveignant. Pour ce qui est des aventages, je n'ai pas eu besoin d'entrer dans le détail des web services, d'autant plus que ces codes sont dificiles à comprendre car ils n'ont pas été codés dans un langage de programation mais en SQL. Un des inconveignant de ce type de test est qu'il est plus difficile de reperer le morceau de code qui provoque un bug détécté par les tests comportementeaux.
\textit{Behave}\cite{behavePypi, behaveHome} est une implementation en python de \textit{cucumber}, un framework de test comportemental. Cela permet de tester le comportement d'un logiciel sans rentrer dans le code, contrairement à d'autre types de tests tel que les tests unitaire ou les tests fonctionels. Cela possède son lot d'aventages et d'inconveignant. Pour ce qui est des aventages, je n'ai pas eu besoin d'entrer dans le détail des web services, d'autant plus que ces codes sont dificiles à comprendre car ils n'ont pas été codés dans un langage de programation mais en SQL. Un des inconveignant de ce type de test est qu'il est plus difficile de reperer le morceau de code qui provoque un bug détécté par les tests comportementeaux.
\paragraph{}
Le fontionement du framework est assez simple. Il faut faire des fichier de \textit{feature} écris en langage naturel (français, anglais, mandarin, \dots). Ensuite, chaque ligne est assochier à un morceau de code qui vas faire les tests. Par example, une ligne "Étant donné le parametre network égale à FR" est associer à un bout de code qui vas dire au contexte du test que le réseau utiliser est FR.
\subsubsection{Git}
\paragraph{}
Git est un outil de verssionage, principalement utilisé dans le développement. Il permet de pouvoir revenir à tout moment sur une verssion précédente du code produit pour pouvoir ainsi revenir en arrière en cas de déviation trop important entre le code et ce qui est attendut. Git permet aussi de diviser un projet en branches, c'est à dire que plusieurs personnes peuvent colaborer sans ce gener si ces personnes se situe sur des branche différentes. Quand le travail sur deux branche est terminé, il est possible de les fusioner (\textit{merge}) pour que le projet continu avec la production des colaborateur\textperiodcentered ice\textperiodcentered s des branches fusionées.
Git\cite{gitAbout} est un outil de verssionage, principalement utilisé dans le développement. Il permet de pouvoir revenir à tout moment sur une verssion précédente du code produit pour pouvoir ainsi revenir en arrière en cas de déviation trop important entre le code et ce qui est attendut. Git permet aussi de diviser un projet en branches, c'est à dire que plusieurs personnes peuvent colaborer sans ce gener si ces personnes se situe sur des branche différentes. Quand le travail sur deux branche est terminé, il est possible de les fusioner (\textit{merge}) pour que le projet continu avec la production des colaborateur\textperiodcentered ice\textperiodcentered s des branches fusionées.
\paragraph{}
Une extention de git, nommé \textit{git flow} est faite pour avoir une arboréssance git optimal pour la colaboration (cf. Figure~\ref{fig:gitflow}). Elle divise le projet en deux branche: \textit{main} et \textit{develop}. La branche \textit{main} coresspond au code fonctionel, pret à être utilisé et stable. C'est la branche à utiliser pour un\textperiodcentered e utilisateur\textperiodcentered ice\textperiodcentered s lambda. La branche \textit{develop} coresspond à la verssion instable du projet, celle qui tend à être stable. C'est la brache dans la quelle les devloppeur\textperiodcentered{}euse\textperiodcentered s fusionent (\textit{merge}) leur travail. Ce travail est produit dans des branches spécifiques appeler \textit{feature} qui coresspond à une fonctinalité du programe. Ainsi, les bugs du à la progression du code de la fonctinalité n'affecte pas les autres colaborateur\textperiodcentered ice\textperiodcentered s qui travaillent sur autre chose.
Une extention de git, nommé \textit{git flow}\cite{gitflow} est faite pour avoir une arboréssance git optimal pour la colaboration (cf. Figure~\ref{fig:gitflow}). Elle divise le projet en deux branche: \textit{main} et \textit{develop}. La branche \textit{main} coresspond au code fonctionel, pret à être utilisé et stable. C'est la branche à utiliser pour un\textperiodcentered e utilisateur\textperiodcentered ice\textperiodcentered s lambda. La branche \textit{develop} coresspond à la verssion instable du projet, celle qui tend à être stable. C'est la brache dans la quelle les devloppeur\textperiodcentered{}euse\textperiodcentered s fusionent (\textit{merge}) leur travail. Ce travail est produit dans des branches spécifiques appeler \textit{feature} qui coresspond à une fonctinalité du programe. Ainsi, les bugs du à la progression du code de la fonctinalité n'affecte pas les autres colaborateur\textperiodcentered ice\textperiodcentered s qui travaillent sur autre chose.
\begin{figure}[H]
\centering
\caption{Schéma du fonctionement de git flow}
@ -178,7 +207,7 @@
\subsubsection{Gitlab}
\label{chap:gitlab}
\paragraph{}
Gitlab est un logiciel de type serveur permetant de stoquer un dêpot git et de le redistrubuer ensuite. Il permet la centralisation du code ce qui aboutil à une collaboration plus éfficace. En effet, Ce qu'apport gitlab par rapport à un simple serveur de partage de fichiers comme \textit{nfs} ou \textit{ftp}, c'est de pouvoir avoir une version sur sa propre machine, coder sur cette verssion local et soumettre ces moddification au dêpot distant (gitlab) avec une gestion intéligente des conflits (quand plusieurs personnes modifie un même fichier au même endoit).
Gitlab\cite{gitlab} est un logiciel de type serveur permetant de stoquer un dêpot git et de le redistrubuer ensuite. Il permet la centralisation du code ce qui aboutil à une collaboration plus éfficace. En effet, Ce qu'apport gitlab par rapport à un simple serveur de partage de fichiers comme \textit{nfs} ou \textit{ftp}, c'est de pouvoir avoir une version sur sa propre machine, coder sur cette verssion local et soumettre ces moddification au dêpot distant (gitlab) avec une gestion intéligente des conflits (quand plusieurs personnes modifie un même fichier au même endoit).
\paragraph{}
Gitlab possède aussi une interface web qui permet de faire de la gestion de projet grâce à la séction \textit{issue} et \textit{tableau}(cf. Figure~\ref{fig:gitlabBoard}). En effet, pour une tâche donnée, il fallait faire une \textit{issue} qui y corréspondait. On peut voir une \textit{issue} comme un \textit{post it} qui peut être détaillé et commenté. Alors, chaque \textit{issue} était labbelisé par un ou plusieurs tags qui permette d'identifier les différente categories à la quelle corréspondait la tâche. Parmis ces tags, on peu retrouver les tags: \textit{TODO}, \textit{IN PROGRESS} et \textit{DONE}. C'est la que la séction tableau de gitlab intervient. En effet, cet outil permet de visualiser les \textit{issues} par tags. Si l'on met les 3 tags précédants en collone du tableau, alors, on simuler un tableau \textit{scrum} et suivre cette methode de travail.
\begin{figure}[H]
@ -207,7 +236,7 @@
\subsubsection{Le traitement de la donnée}
\begin{figure}[H]
\includegraphics[width=\textwidth]{organigrameNoeudANoeudB}
\caption{Parcours de la donnée depuis l'aquisition jusqu'à la distribution}
\caption{Parcours de la donnée depuis l'aquisition jusqu'à la distribution\cite{articleResif}}
\label{fig:parcourDonnee}
\end{figure}
\paragraph{}
@ -624,41 +653,59 @@ Query <|-- DataselectPh5Query
\end{itemize}
\paragraph{}
J'ai donc pu relever plusieurs bugs, par exemple, une divergence dans le comportement du web service \textit{station} en fonction de la methode utilisée (GET et POST) si on demende une date à la limite éxterieur de ce qui existe (par exemple le 21 novembre 2020 à 12h\textit{60}). Ainsi le travail que j'ai produit à pu servir à mettre en lumière des problèmes qui n'ont pas étés repéré jusqu'à présent. Aussi, dans le cadre d'une réecriture d'un web service, mes test permettent de verifier qu'il n'y a pas eu de régression par rapport à l'implémentation précédente. Ces tests peuvent aussi être lancer de manière automatique dans le cadre d'une verification routinière du bon fonctionement des web services. J'ai aussi documenter mon code pour une transmition du savoir plus facile.
J'ai donc pu relever plusieurs bugs, par exemple, une divergence dans le comportement du web service \textit{station} en fonction de la methode utilisée (GET et POST) si on demende une date à la limite éxterieur de ce qui existe (par exemple le 21 novembre 2020 à 12h\textbf{60}). Ainsi le travail que j'ai produit à pu servir à mettre en lumière des problèmes qui n'ont pas étés repéré jusqu'à présent. Aussi, dans le cadre d'une réecriture d'un web service, mes test permettent de verifier qu'il n'y a pas eu de régression par rapport à l'implémentation précédente. Ces tests peuvent aussi être lancer de manière automatique dans le cadre d'une verification routinière du bon fonctionement des web services. J'ai aussi documenter mon code pour une transmition du savoir plus facile.
\newpage{}
\section{Conclusion}
\paragaph{}
\paragraph{}
J'ai pu lors de ce stage, développer des tests fonctionels pour différents \textit{web services} de RÉSIF. Ainsi, j'ai pu interagir avec les membres de mon équipe pour mieux cerner les problèmatiques que ce stage comprenait. J'ai donc pu travailler ma capacitée d'écoute ainsi que de communication. En effet, J'ai aussi du m'exprimer pour expliquer quels étaient les problèmles que je rencontrai, quels problèmes j'avais relevé au niveau des \textit{web services} ou encore quel était l'état d'avancement de mon projet.
\paragraph{}
Hélas, j'était la seule personne à travailler sur ce projet. En effet, travailler à plusieur sur un même projet apporte et amméliore cette cappacité à travailler en équipe. Toute fois, cela reste à relativiser dans mon cas car je devais quand même faire un rapport quotidien au près de mon tuteur ainsi qu'un rapport hébdomadaire pour l'ensemble de l'équipe RÉSIF-DC.
\paragraph{}
Cependant, j'ai quand même pu me sentir à l'aise au seing de l'équipe. En effet, l'ambiance de travail était bonne, les personnes s'entraidaient en cas de besoins, etcetera.
\newpage{}
\section{Recap}
\paragraph{}
During my intrenship in ISTerre, I was missioned to realize behavior tests. Thoses kinds of tests check the behavior of a software from the outside. The pieces of software I was testing were web services. The goal of thoses applications is to give data depending on parameters, usualy defined and affected in a URL. There were three web services that I had to test: \textit{station}, \textit{availability} and \textit{dataselect}. Thoses web services give differents types of data:
\begin{itemize}
\item \textbf{station} gives the context of how the data were captured
\item \textbf{availability} gives time periods where there is data captured
\item \textbf{dataselect} gives data depending a time period and an instrument of capture
\end{itemize}
\paragraph{}
A test is split in two parts: the scenario and the implementation.
\subparagraph{}
Scenario is the description of a test written in natural language (like english, french or chinese). It is composed by three types of steps:
\begin{itemize}
\item \textbf{Given}, that will initiate the context of the test
\item \textbf{When}, that will represent a acction done by users (in my case, this is requesting a web service)
\item \textbf{Then}, that will test the behavior.
\end{itemize}
Of course, it is possible to have sevral \textit{Given}, \textit{When} and \textit{Then} but each one of type's step must be present in a scenario.
\subparagraph{}
Then there is the implementation. Each step must be translated in code. To do that, I had to define function with a \textit{decorator}. The decorator must has in parameter the exact sentence written in the scenario. For exemple, the step \textit{Given the cache refreshed} will have this translation in a python file and the decorator of the function that implement the comportement of the step will looks like \textit{@given("the cache refreshed")}.
\paragraph{}
To be able to use serval times my code, I had to make a conception to factorize my code. So I wrote a class named \textit{Query} and a class named \textit{Response}. Thoses two classes are the mains of my model. With a \textit{Querry} object, you can ask a web sevice, but only if there is a subclass specilized for that (ex. \textit{StationQuery}). With a \textit{Response} object, you can access and do opperations to the response of the web service, same as \textit{Query}, \textit{Response} must be specialized.
\newpage{}
\section{Lexique}
\begin{itemize}
\item Test de comportement (behavior test) : Test informatique permetant de vérifier le comportement du logiciel testé sur la base de différnts scénarios
\item Nœud A : Équipe de sismologue charcher de placer des sondes, de récolter les données et métadonnées, et de les transmetre au nœud B
\item Nœud B : Équipe de sysmologue charger de traiter les données et métadonnées récolté par les differents nœud A pour coriger les données.
\item \textbf{Test de comportement (behavior test)} : Test informatique permetant de vérifier le comportement du logiciel testé sur la base de différnts scénarios
\item \textbf{Nœud A}: Équipe de sismologue charcher de placer des sondes, de récolter les données et métadonnées, et de les transmetre au nœud B
\item \textbf{Nœud B}: Équipe de sysmologue charger de traiter les données et métadonnées récolté par les differents nœud A pour coriger les données.
\item \textbf{Classe}: Concepte informatique permetant de regrouper des données et des fonctionalitées liés à ces données.
\item \textbf{Objet}: Représentation en mémoire d'une classe.
\item \textbf{UMR}: Une Unité Mixte de Recherche est le résultat d'une collaboration entres un ou plusieurs laboratoires de recherche d'un établissement d'enseignement supérieur\cite{umr}.
\item \textbf{OSU}: Un Observatoire des Sciences de l'Univers est un regroupement de laboratoires chargé de conduire des observations de longue durée dans le domaine des sciences de lunivers\cite{osu}.
\item \textbf{IR}: Une Infrastructure de Recherche premettent au chercheur\textperiodcentered euse\textperiodcentered s de mener des recherches de grande ampleur dans des domaines de pointe. \cite{ir}
\end{itemize}
\newpage{}
\section{Webographie}
\bibliographystyle{plain}
\bibliography{biblio}
\newpage{}
\section{Anex}
\begin{figure}[h]
\caption{exemple de scénario}
\begin{verbatim}
Scenario Outline: is XML format clean
Given a '<network>', '<station>', '<location>' and '<channel>'
When the webservice is "GET" requested
Then the XML format must be errorless
Examples: of request
| network | station | location | channel |
| FR | CIEL | 00 | HHZ |
| XG | A002 | 00 | GPE |
Scenario: latitude under -90
Given the 'latitude' of '-100'
When the webservice is "GET" requested
Then the HTTP code returned must be '400'
\end{verbatim}
\end{figure}
\begin{figure}[h]
\caption{Diagramme de classe pour les classes Response}
\includegraphics[angle=90, scale=0.5]{response}
\label{fig:ResponseClassDiag}
\end{figure}
\end{document}

Loading…
Cancel
Save