Partie 1 : Analyse du document WSDL
1. Vérification de l’existence du WSDL
Ouvrir dans un navigateur : http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl
Le document WSDL s’affiche correctement, confirmant que le service est accessible.
2. Analyse du document WSDL
a. Liste des opérations disponibles
Les principales opérations du service sont :
LatLonListZipCode: Conversion de codes postaux en coordonnées géographiquesNDFDgen: Prévisions météorologiques généralesNDFDgenByDay: Prévisions par jourNDFDgenByDayLatLonList: Prévisions par jour pour plusieurs localisationsNDFDgenLatLonList: Prévisions pour une liste de coordonnées
b. Signature de l’opération NDFDgen
<operation name="NDFDgen">
<input message="tns:NDFDgenRequest"/>
<output message="tns:NDFDgenResponse"/>
</operation>L’opération prend en entrée des paramètres de localisation (latitude, longitude), des dates et des paramètres météorologiques à récupérer, puis retourne un document XML contenant les prévisions.
c. Types compTypeType et unitType
compTypeType: Définit le type de comparaison ou de calcul à effectuer sur les données météorologiquesunitType: Spécifie l’unité de mesure (e = anglais avec Fahrenheit, m = métrique avec Celsius)
d. Adresse du service
Le service est disponible à l’adresse : http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl
e. Protocole réseau
Le service utilise le protocole SOAP over HTTP.
f. Patron de communication de NDFDgenLatLonList
Le patron de communication est Request-Response.
g. Style d’intéraction de ndfdXMLBinding
Le style d’intéraction est RPC.
h. Règles de codage
Les messages utilisent l’encodage SOAP encoded pour l’invocation et la réponse de l’opération NDFDgenLatLonList.
Partie 2 : Création du projet SOAP-UI
3. Création du projet
Démarrer SOAP-UI → File → New SOAP Project
- Nom :
SOA-TP1-NOAA - Initial WSDL :
http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl
Le projet se crée avec l’ensemble des opérations disponibles.
4-6. Invocation de LatLonListZipCode
Double-cliquer sur Request 1 de l’opération LatLonListZipCode.
Dans le corps du message SOAP, saisir :
<zipCodeList>10001</zipCodeList>Soumettre la requête → La réponse affiche :
<latLonList>40.7198,-73.993</latLonList>Les coordonnées correspondent bien à New York.
7. Invocation de NDFDgenByDay
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soapenv:Body>
<NDFDgenByDay xmlns="https://digital.weather.gov/xml/wsdl/ndfdXML.wsdl"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<latitude xsi:type="xsd:decimal">40.7198</latitude>
<longitude xsi:type="xsd:decimal">-73.993</longitude>
<startDate xsi:type="xsd:date">2021-12-10</startDate>
<numDays xsi:type="xsd:integer">1</numDays>
<Unit xsi:type="xsd:string">e</Unit>
<format xsi:type="xsd:string">24 hourly</format>
<XMLformat xsi:type="xsd:string">24 hourly</XMLformat>
</NDFDgenByDay>
</soapenv:Body>
</soapenv:Envelope>a. Réponse
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:NDFDgenByDayResponse xmlns:ns1="https://digital.weather.gov/xml/wsdl/ndfdXML.wsdl">
<XMLByDayOut xsi:type="xsd:string"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<dwml version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://digital.weather.gov/xml/schema/DWML.xsd">
<head>
<product srsName="WGS 1984" concise-name="dwmlByDay" operational-mode="official">
<title>NOAA's National Weather Service Forecast by 24 Hour Period</title>
<field>meteorological</field>
<category>forecast</category>
<creation-date refresh-frequency="PT30M">2025-12-03T16:19:32Z</creation-date>
</product>
<source>
<more-information>https://digital.weather.gov/xml/</more-information>
<production-center>Meteorological Development Laboratory<sub-center>Weather Information Applications Division</sub-center></production-center>
<disclaimer>http://www.nws.noaa.gov/disclaimer.html</disclaimer>
<credit>https://www.weather.gov/</credit>
<credit-logo>https://www.weather.gov/logorequest</credit-logo>
<feedback>https://www.weather.gov/contact</feedback>
</source>
</head>
<data>
<location>
<location-key>point1</location-key>
<point latitude="40.72" longitude="-73.99"/>
</location>
<moreWeatherInformation applicable-location="point1">http://forecast.weather.gov/MapClick.php?textField1=40.72&textField2=-73.99</moreWeatherInformation>
<time-layout time-coordinate="local" summarization="24hourly">
<layout-key>k-p24h-n1-1</layout-key>
<start-valid-time>2025-12-03T06:00:00-05:00</start-valid-time>
<end-valid-time>2025-12-04T06:00:00-05:00</end-valid-time>
</time-layout>
<time-layout time-coordinate="local" summarization="12hourly">
<layout-key>k-p12h-n2-2</layout-key>
<start-valid-time>2025-12-03T06:00:00-05:00</start-valid-time>
<end-valid-time>2025-12-03T18:00:00-05:00</end-valid-time>
<start-valid-time>2025-12-03T18:00:00-05:00</start-valid-time>
<end-valid-time>2025-12-04T06:00:00-05:00</end-valid-time>
</time-layout>
<time-layout time-coordinate="local" summarization="24hourly">
<layout-key>k-p1d-n1-3</layout-key>
<start-valid-time>2025-12-03T06:00:00-05:00</start-valid-time>
<end-valid-time>2025-12-04T06:00:00-05:00</end-valid-time>
</time-layout>
<parameters applicable-location="point1">
<temperature type="maximum" units="Fahrenheit" time-layout="k-p24h-n1-1">
<name>Daily Maximum Temperature</name>
<value>41</value>
</temperature>
<temperature type="minimum" units="Fahrenheit" time-layout="k-p24h-n1-1">
<name>Daily Minimum Temperature</name>
<value>32</value>
</temperature>
<probability-of-precipitation type="12 hour" units="percent" time-layout="k-p12h-n2-2">
<name>12 Hourly Probability of Precipitation</name>
<value>0</value>
<value>2</value>
</probability-of-precipitation>
<weather time-layout="k-p24h-n1-1">
<name>Weather Type, Coverage, and Intensity</name>
<weather-conditions weather-summary="Mostly Sunny"/>
</weather>
<conditions-icon type="forecast-NWS" time-layout="k-p24h-n1-1">
<name>Conditions Icons</name>
<icon-link>http://forecast.weather.gov/images/wtf/few.jpg</icon-link>
</conditions-icon>
<hazards time-layout="k-p1d-n1-3">
<name>Watches, Warnings, and Advisories</name>
<hazard-conditions xsi:nil="true"/>
</hazards>
</parameters>
</data>
</dwml>]]></XMLByDayOut>
</ns1:NDFDgenByDayResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>b. Format de la réponse
Le format de réponse est XML. La mention <![CDATA[ indique que le contenu est traité comme du texte brut (Character Data) et non comme du XML à parser. Cela permet d’inclure des balises XML dans la réponse sans qu’elles soient interprétées.
c. Réponse avec startDate = 01/12/2021
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:NDFDgenByDayLatLonListResponse xmlns:ns1="https://digital.weather.gov/xml/wsdl/ndfdXML.wsdl">
<XMLByDayOut xsi:type="xsd:string"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<dwml version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://digital.weather.gov/xml/schema/DWML.xsd">
<head>
<product srsName="WGS 1984" concise-name="dwmlByDay" operational-mode="official">
<title>NOAA's National Weather Service Forecast by 24 Hour Period</title>
<field>meteorological</field>
<category>forecast</category>
<creation-date refresh-frequency="PT30M">2025-12-03T16:31:39Z</creation-date>
</product>
<source>
<more-information>https://digital.weather.gov/xml/</more-information>
<production-center>Meteorological Development Laboratory<sub-center>Weather Information Applications Division</sub-center></production-center>
<disclaimer>http://www.nws.noaa.gov/disclaimer.html</disclaimer>
<credit>https://www.weather.gov/</credit>
<credit-logo>https://www.weather.gov/logorequest</credit-logo>
<feedback>https://www.weather.gov/contact</feedback>
</source>
</head>
<data>
<location>
<location-key>point1</location-key>
<point latitude="40.72" longitude="-73.99"/>
</location>
<moreWeatherInformation applicable-location="point1">http://forecast.weather.gov/MapClick.php?textField1=40.72&textField2=-73.99</moreWeatherInformation>
<time-layout time-coordinate="local" summarization="24hourly">
<layout-key>k-p24h-n1-1</layout-key>
<start-valid-time>2025-12-03T06:00:00-05:00</start-valid-time>
<end-valid-time>2025-12-04T06:00:00-05:00</end-valid-time>
</time-layout>
<time-layout time-coordinate="local" summarization="12hourly">
<layout-key>k-p12h-n2-2</layout-key>
<start-valid-time>2025-12-03T06:00:00-05:00</start-valid-time>
<end-valid-time>2025-12-03T18:00:00-05:00</end-valid-time>
<start-valid-time>2025-12-03T18:00:00-05:00</start-valid-time>
<end-valid-time>2025-12-04T06:00:00-05:00</end-valid-time>
</time-layout>
<time-layout time-coordinate="local" summarization="24hourly">
<layout-key>k-p1d-n1-3</layout-key>
<start-valid-time>2025-12-03T06:00:00-05:00</start-valid-time>
<end-valid-time>2025-12-04T06:00:00-05:00</end-valid-time>
</time-layout>
<parameters applicable-location="point1">
<temperature type="maximum" units="Fahrenheit" time-layout="k-p24h-n1-1">
<name>Daily Maximum Temperature</name>
<value>41</value>
</temperature>
<temperature type="minimum" units="Fahrenheit" time-layout="k-p24h-n1-1">
<name>Daily Minimum Temperature</name>
<value>32</value>
</temperature>
<probability-of-precipitation type="12 hour" units="percent" time-layout="k-p12h-n2-2">
<name>12 Hourly Probability of Precipitation</name>
<value>0</value>
<value>2</value>
</probability-of-precipitation>
<weather time-layout="k-p24h-n1-1">
<name>Weather Type, Coverage, and Intensity</name>
<weather-conditions weather-summary="Mostly Sunny"/>
</weather>
<conditions-icon type="forecast-NWS" time-layout="k-p24h-n1-1">
<name>Conditions Icons</name>
<icon-link>http://forecast.weather.gov/images/wtf/few.jpg</icon-link>
</conditions-icon>
<hazards time-layout="k-p1d-n1-3">
<name>Watches, Warnings, and Advisories</name>
<hazard-conditions xsi:nil="true"/>
</hazards>
</parameters>
</data>
</dwml>]]></XMLByDayOut>
</ns1:NDFDgenByDayLatLonListResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>8-9. Invocation de NDFDgenByDayLatLonList
Paramètres :
- Liste de coordonnées :
40.7198,-73.993 startDate: 2020-12-01numDays: 1format: 24 hourly
La réponse affiche les informations météorologiques pour New York.
10. Assertion SLA
Le test échoue car eduroam
Partie 3 : Modification du WSDL
11-12. Modification du fichier WSDL
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>13-14. Création du projet avec WSDL modifié
a. Comparaison des messages d’invocation
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soapenv:Body>
<NDFDgenByDay xmlns="https://digital.weather.gov/xml/wsdl/ndfdXML.wsdl"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<latitude xsi:type="xsd:decimal">40.7198</latitude>
<longitude xsi:type="xsd:decimal">-73.993</longitude>
<startDate xsi:type="xsd:date">2021-12-10</startDate>
<numDays xsi:type="xsd:integer">1</numDays>
<Unit xsi:type="xsd:string">e</Unit>
<format xsi:type="xsd:string">24 hourly</format>
</NDFDgenByDay>
</soapenv:Body>
</soapenv:Envelope>b. Message renvoyé
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ndf="https://digital.weather.gov/xml/wsdl/ndfdXML.wsdl">
<soapenv:Header/>
<soapenv:Body>
<ndf:NDFDgenByDay>
<ndf:latitude>40.7198</ndf:latitude>
<ndf:longitude>-73.993</ndf:longitude>
<ndf:startDate>2021-12-10</ndf:startDate>
<ndf:numDays>1</ndf:numDays>
<ndf:Unit>e</ndf:Unit>
<ndf:format>24 hourly</ndf:format>
<ndf:XMLformat>24 hourly</ndf:XMLformat>
</ndf:NDFDgenByDay>
</soapenv:Body>
</soapenv:Envelope>Partie 2 : Suite de tests
1-7. Création de la TestSuite
Clic droit sur le projet SOA-TP1-NOAA → New TestSuite → Nom : SimpleTestSuite
Ajouter les trois opérations précédentes en tant que TestCase :
LatLonListZipCode Test CaseNDFDgenByDay Test CaseNDFDgenByDayLatLonList Test Case
Exécuter la suite → Les trois tests passent avec succès.
8-12. Ajout d’assertions
Double-cliquer sur LatLonListZipCode Test Case → Ouvrir la requête.
Cliquer sur Assertions → Add → Contains
- Content :
40.7198,-73.993
Modifier le code postal dans la requête : 20001 (Washington DC)
Exécuter la suite → Le test LatLonListZipCode Test Case échoue car l’assertion attend les coordonnées de New York mais reçoit celles de Washington.
13. Load Testing
a. Qu’est-ce que le Load Testing ?
Le Load Testing permet de simuler un grand nombre de requêtes simultanées vers le service web pour évaluer ses performances sous charge. SOAP-UI propose plusieurs stratégies de test de charge (Simple, Burst, Thread, etc.).
b. Tests réalisés et conclusions
Clic droit sur le TestCase → Add new load test
Configuration du test :
- Stratégie : Simple
- Threads : 10 utilisateurs simultanés
- Durée : 60 secondes
- Delay : 1000 ms entre requêtes
Résultats observés :
- Temps de réponse moyen : entre 150 et 300 ms
- Taux de réussite : 100%
- Le service gère correctement 10 requêtes simultanées
Partie 3 : Création d’un Mock
Configuration du Mock :
- Port : 8088
- Path :
/noaa-mock
Définir une réponse simulée pour LatLonListZipCode :
<latLonList>48.8566,2.3522</latLonList>Démarrer le Mock → Le service simulé répond sur http://localhost:8088/noaa-mock
Le Mock permet de tester l’application cliente sans dépendre du service réel, utile pour les tests hors ligne ou lorsque le service est indisponible.