A Web Service-ek tesztelése (Első rész) – Az alapokból kiindulva


Ha egy webes szolgáltatás hibás értékeket ad, akkor nagyon sok problémánk kerekedhet belőle. Tehát ha webes szolgáltatást akarunk használni/publikálni, a szolgáltatás tesztelését is fel kell vennünk az eszköztárunkba, hogy megbizonyosodjunk a funkcionálisan megfelelő működésről. Amennyiben a szoftver fejlesztési folyamatunk elején alkalmazzuk a web service-ek funkcionális tesztelését, az felgyorsítja magát a fejlesztési folyamatot és növeli az alkalmazás minőségét.

3 éve kezdtem web service-eket tesztelni a semmiből, és nagyon sok dolgot tanultam azóta a webes alkalmazásteszteléssel, és úgy gondoltam eljött az ideje, hogy megosszam a szerzett tudásomat ezen a területen, hogy segíthessek a tesztelő társaimon, akik először találkoznak a web service teszteléssel. Egy kezdő szintű ismertetőt fogok bemutatni ebben e részben, a SOAP/REST –re is egyenként.

Az eviware nyílt forráskódú „SoapUI” eszközével dolgozok, mert könnyen használható/megérthető, részletesen kidolgozott dokumentáció is áll a rendelkezésünkre hozzá, és nem utolsó sorban ingyenes.

Az alábbi menetrendet fogjuk követni ebben a részben:

  • Létrehozunk egy egyszerű Web Service projektet a SoapUI-ban, végrehajtunk egy request-et, és elemezzük a választ.
  • A fejlett Web Service tesztelési technikák SoapUI-t használnak, például betölteni egy változót, állítani értékeket a Test-Properties fájlból stb.
  • Web Service–ek automatizálása SoapUI projekten keresztül.
  • Hudson CIS (Continous Integration Server)–en keresztül automatizált SoapUI projekt feladatának beállítása ellenőrzéshez.

Kezdjük az eszköz bevezetésével, amit a Web Service teszteléséhez használtam, ez a SoapUI:

„A SoapUI egy ingyenes és nyílt forráskódú cross-platform-os funkcionális tesztelési megoldás. Egy könnyen használható grafikus interfésszel, és előre gyártott funkciókkal van ellátva. A SoapUI segítségével könnyen, és gyorsan tudsz létrehozni, és végrehajtani automatizált funkcionális, regressziós, megfeleltetési, és terheléses teszteket. Egy egyszerű tesztkörnyezetben, a SoapUI teljeskörű tesztlefedettséget ad, valamint támogat minden szabványos protokollt, és technológiát.”

Nem fogom az összes funkcióját a SoapUI-nak elmagyarázni, ezért kérlek nézd át a SoapUI részletes dokumentációját, ami elérhető az eviware weboldalán: http://www.eviware.com/soapUI/what-is-soapui.html

Töltsd le a SoapUI-t a következő weboldalról (a legújabb verziók visszafelé kompatibilisek): http://sourceforge.net/projects/soapui/files/soapui/

Egy nyilvánosan hozzáférhető WSDL -t (Bing) fogok felhasználni az oktatóhoz, hogy mindannyian ugyanazt láthassuk, ezért jegyezzük fel a WSDL url-jét: http://api.bing.net/search.wsdl

Innen is kaphatsz segítséget a következő dokumentációban (Bing API alapok): http://www.bing.com/developers/s/API%20Basics.pdf

Szükséged lesz még egy AppId-re hogy használhasd a Bing AOI-t, mert ez egy szükséges mező lesz a WSDL-ben, ehhez itt tudsz feliratkozni: http://www.bing.com/developers/createapp.aspx

Indítsunk azzal, hogy létrehozunk egy új projektet a SoapUI-ban:

  • Kattints ide: File > New SoapUI Project
  • Írd be a projekt nevét.
  • Másold be a WSDL végpontját a WSDL Text mezőbe (http://api.bing.net/search.wsdl)
  • Hagyd a checkbox-okat üresen, kivéve a "Create sample requests for all operations"-nél.
  • Kattints az OK-ra.

1.ábra

Ahogy betöltődött, minden WS funkció elérhetővé válik ami a WSDL-ben szerepel, egy navigációs ablakban a projekt neve alatt:


2.ábra

Már készen állsz a használatra, és a Web Service tesztelésére. Mivel a Bing API szintén egy művelet a WSDL-ben (Search()) nyisd ki, és látni fogsz egy Request opciót alatta, ami dupla-kattintással megnyithatsz, és megjelenik egy szerkesztő ablak:


3.ábra

Egy halom elérhető elemet fogsz látni a request-ben, mint pl: webes keresés, képkeresés, stb., de a Bing API feltárása mögött a mi célunk nem az, hogy mindent felfedezzünk. Egy egyszerű webes keresést fogunk kreálni, minimális mezőszám felhasználásával a Request-ünkben. Másoljuk, majd illesszük be a következő Request kódot a Request szerkesztő ablakunkba (Add meg az AppId-t, amit létrehoztál a fentebb leírtaknál) és futtasd le a Play/Execute gombbal, ami a bal felső sarkában található a szerkesztő ablaknak.

Request:?
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sear="http://schemas.microsoft.com/LiveSearch/2008/03/Search">?
    <soapenv:Header>?
        <soapenv:Body>?
            <sear:SearchRequest>?
                <sear:parameters>?
                    <sear:Query>bing
                    </sear:Query>?
                    <sear:AppId>INSERT YOUR APPID HERE
                    </sear:AppId>?
                    <sear:Sources>?
                        <!--Zero or more repetitions:-->
                        <sear:SourceType>web</sear:SourceType>?
                    </sear:Sources>?
                        <!--Optional:-->
                    <sear:Web>?
                        <!--Optional:-->
                        <sear:Offset>0
                        </sear:Offset>?
                        <!--Optional:-->
                        <sear:Count>1
                        </sear:Count>?
                    </sear:Web>?
                </sear:parameters>?
            </sear:SearchRequest>?
        </soapenv:Body>?
    </soapenv:Header>
</soapenv:Envelope>

A futtatás után a következő választ fogod kapni:
Response:?
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">?
    <soapenv:Body>?
        <SearchResponse>?
            <parameters>?
                <Version>2.2</Version>?
                <Query>?
                    <SearchTerms>bing</SearchTerms>?
                </Query>?
                <Web>?
                    <Total>911000</Total>?
                    <Offset>0</Offset>?
                    <Results>?
                        <WebResult>?
                            <Title>Bing</Title>?
                                <Description>Bing is a search engine that finds and organizes the answers you need so you can make faster, more informed decisions.</Description>?
                            <Url>http://www.bing.com/</Url>;?
                                <CacheUrl>http://cc.bingj.com/cache.aspx?q=bing&d=4523786176561420&am...;?
                                <DisplayUrl>Hiba! A hiperhivatkozás érvénytelen.;?
                                <DateTime>2011-04-24T16:32:00Z</DateTime>?
                                    <DeepLinks>?
                                        <DeepLink>?
                                            <Title>Search History</Title>?
                                            <Url>http://www.bing.com/profile/history?FORM=Z9LH12</Url>;?
                                        </DeepLink>?
                                        <DeepLink>?
                                            <Title>Bing Search History</Title>?
                                            <Url>http://www.bing.com/profile/history</Url>;?
                                        </DeepLink>?
                                        <DeepLink>?
                                            <Title>United States</Title>?
                                            <Url>http://www.bing.com/worldwide.aspx?FORM=WHLH</Url>;?
                                        </DeepLink>?
                                        <DeepLink>?
                                            <Title>Local - Bing News</Title>?
                                            <Url>http://www.bing.com/news/search?q=&p1=%5bNewsVertical+Categ...;?
                                        </DeepLink>?
                                        <DeepLink>?
                                            <Title>Maps</Title>?
                                            <Url>http://www.bing.com/maps/</Url>;?
                                        </DeepLink>?
                                        <DeepLink>?
                                            <Title>Entertainment</Title>?
                                            <Url>http://www.bing.com/entertainment?FORM=Z9LH11</Url>;?
                                        </DeepLink>?
                                        <DeepLink>?
                                            <Title>Business - Bing News</Title>?
                                            <Url>http://www.bing.com/news/search?q=&p1=%5bNewsVertical+Categ...;?
                                        </DeepLink>?
                                        <DeepLink>?
                                            <Title>Bing Community</Title>?
                                            <Url>http://www.bing.com/community/blogs/search/archive/2009/08/17/welco...;?
                                        </DeepLink>?
                                        <DeepLink>?
                                            <Title>Sports - Bing Videos</Title>?
                                            <Url>http://www.bing.com/videos/browse/sports?q=browse:sports</Url>;?
                                        </DeepLink>?
                                        <DeepLink>?
                                            <Title>Bing Maps For India</Title>?
                                            <Url>http://www.bing.com/mapindia/?FORM=Z9LH3</Url>;?
                                        </DeepLink>?
                                        <DeepLink>?
                                            <Title>Bing ???????</Title>?
                                            <Url>http://www.bing.com/settings.aspx?sh=5&ru=%2f&FORM=...;?
                                        </DeepLink>?
                                        <DeepLink>?
                                            <Title>Travel</Title>?
                                            <Url>http://www.bing.com/travel/</Url>;?
                                        </DeepLink>?
                                        <DeepLink>?
                                            <Title>Bing Preferences</Title>?
                                            <Url>http://www.bing.com/settings.aspx?sh=5&ru=%2f&FORM=...;?
                                        </DeepLink>?
                                    </DeepLinks>?
                        </WebResult>?
                    </Results>?
                </Web>?
            </parameters>?
        </SearchResponse>?
    </soapenv:Body>?
</soapenv:Envelope>

Siker! Ahogy megkapjuk a választ, és úgy tűnik érvényes lefutással, ellenőrizzük is le manuálisan hogy valóban érvényes-e.

Egy egyszerű kérést hajtottam végre, használva egy „Bing” szavas keresést a Bing-en, korlátozva találatszámot 1-re, ami azt jelenti, hogy csak egy eredményt fog mutatni. Figyeljük meg, hogy vannak bizonyos értékek elem alatt, és vannak számos egyéb elemek, mint a Title, Description, URL, stb. és mindegyiknek megvan a maga értéke.

Ez volt a legalapvetőbb oktatóanyag, hogy hogyan hozzunk létre SoapUI segítségével egy új Web-Service projektet, és hogyan futtassunk egy Request-et, majd ellenőrizzünk egy Response-t. Szeretném megosztani a „Alapok Haladóknak” részeket, hogy a kezdők is okulhassanak belőle.

Találkozunk a következő részben, ahol majd meglátjuk, hogyan adhatunk meg pár hasznos kérést, hogy érvényesítsük a választ.

Boldog tesztelést!!!

Forrás:
Szerző:
Zuhaib Ahmed

<< Vissza