S kanónom na SharePoint

Roman Hesteric  /  21. 03. 2011, 10:37

Ako využiť prednosti testovacieho frameworku Canoo WebTest na testovanie webových aplikácií v Microsoft Office SharePoint Server.

Témou tohto článku bude využitie predností testovacieho frameworku Canoo WebTest na testovanie webových aplikácií v Microsoft Office SharePoint Server [MOSS]. Pre čitateľov, ktorí nepoznajú túto platformu, uvádzam zopár základných informácií o technológii MOSS:


•    využíva platformu Microsoft  .NET,
•    používatelia môžu vytvárať weby určené na zdieľanie informácií s inými používateľmi, umožňuje správu dokumentov, publikovanie obsahu, blog,  kalendár, RSS, notifikácie pri zmenách obsahu webu a iné pripravené webové aplikácie, ktoré je možné nasadiť vo firemnom intranete alebo extranete,
•    umožňuje fulltextové vyhľadávanie v uložených dokumentoch a položkách jednotlivých zoznamov SharePointu,
•    jednoducho sa pripája k balíku programov Microsoft Office a platformám tretích strán [SAP, SQL-Server],
•    úpravy MOSS webových aplikácií je možné vykonávať v jazyku C#  [Visial Studio .NET] formou features, ktoré sa inštalujú na MOSS server.
 

MOSS  je teda  komerčný webový framework/webová aplikácia, ktorá v súčasnosti zaznamenáva veľký  boom.  Kedže však ide o webovú aplikáciu, tak to môže byť vhodné prostredie pre testovací nástroj Canoo WebTest, o ktorom píšem na tomto serveri už od roku 2008.


Základné informácie o testovacom frameworku Canoo WebTest nájdete v mojich predchádzajúcich článkoch alebo priamo na webe projektu Canoo WebTest.

Prvým a základným problémom testovania aplikácií MOSS je pripojenie testovacieho robota na testovaný SharePointový server. Po mojich niekoľkých pokusoch s verziami Canoo som našiel jednoduché riešenie spočívajúce v nastavení „Basic Authentication" na IIS a použitím verzie Canoo WebTest  minimálne 1810. Ako je vidno z obrázkov, MOSS webovej aplikácii na porte 80 som zapol  „Basic Authentication".
 

1-iis-small.gif

Ďalšou možnosťou by bolo zriadenie nového autentifikačného providera,  napríklad FBA – Form Based Autentication. Takúto akciu štandardne poskytuje MOSS – rozšírenie webovej aplikácie o alternatívneho autentifikačného providera, pričom obaja by poskytovali rovnaký obsah. Je s tým ale dosť práce a takto jedným kliknutím na IIS som dosiahol rovnaký cieľ.  Canoo testovací robot je teda schopný pripojiť sa k webovej aplikácii a začať testovať.


Čo by sme však tak mohli testovať na komerčnej webovej aplikácii? Takých prípadov je niekoľko. V úvode som spomenul, že MOSS webové aplikácie sa dajú upravovať pomocou features, napísaných v jazyku C#. Features sa  inštalujú na MOSS server a zabezpečujú požadovanú funkcionalitu, ktorú neposkytuje štandardná inštalácia. To je teda jeden z dobrých prípadov, prečo automatizovane testovať C# featurami  upravené MOSS webové aplikácie.


Ďalšou možnosťou je využite testovacích robotov na simuláciu záťaže budúceho informačného systému formou tzv. „stres alebo load testov", o ktorých som písal v minulosti.


V tomto článku však ide o automatický test  webovej aplikácie, ktorá má nainštalovanú a aktivovanú C# feature,  ktorej úlohou je zmena prístupových práv položky podľa definovaného spôsobu.


Po uložení položky do SharePoint zoznamu sa spúšťa kód feature, ktorý  asynchrónne zmení skupiny používateľov, ktorí môžu s položkou pracovať – zmení takzvané povolenia/permisions. Overenie či permissions  uloženej položky zodpovedajú očakávaniam je možné otestovať tak, že si tieto permissions  zobrazíme pomocou šandardného MOSS zobrazenia permissions  a skontrolujeme, či zodpovedajú našim očakávaniam.


Na tomto obrázku je zobrazený MOSS web, obsahujúci  dva SharePoint listy, pričom „test-list" je zlinkovaný s listom „Skupiny"  pomocou stĺpca „ČisloPS" . Jednotlivé záznamy v zozname „test-list" majú „zdediť" skupiny použivateľov/permissions  z listu „Skupiny" a jeho stĺpca „Skupina".
 

moss-server

Ako som už spomínal, túto funkcionalitu zabezpečuje  C# feature, ktorá je nainštalovaná na serveri a je aktivovaná na testovanom webe.


Cieľom automatického testu je presvedčiť sa, či všetky položky v zozname „test-list" správne zdedili skupiny použivateľov/permissions  zo zoznamu „Skupiny".


To dosiahneme tak, že  Canoo WebTest robot, podobne ako na nasledujúcich obrázkoch, otvorí zobrazenie skupín pre testovanú položku a skontroluje správnosť featurou pridelených skupín.
 

audi


Na vytvorenie kostry testovacieho scenára použijeme Canoo Webtest recorder, ktorý zachytáva klikanie na aplikáciu a transformuje ich na xml zápisy – tzv. "Canoo test-steps".
 

wt-rec

Takto vytvorené testovacie kroky skopírujeme do Canoo xml testovacích súborov, napríklad takto:

<target name="do_test_audiences">

  <webtest name="do_test_audiences">

    <steps>

       <do_login/>

       <clickLink label="Canoo-Test"/>    

       <clickLink description="Click link: Spravovat oprávnění" htmlId="ctl00_m_g_fac060_RptControls_diidIOPermissions_LinkText"/>

       <verifyText description="Verify text" text="očakávaná sharepoint skupina 1"/>

        <verifyText description="Verify text" text="očakávaná sharepoint skupina 2"/>


To však až v nasledujúcom texte.  Najskôr však musíme nakonfigurovať  Canoo testovacieho robota. Canoo WebTest na svoj beh používa štandardný ANT, takže začneme s konfiguráciu súboru build.xml

Build.xml:

<?xml version="1.0"?>

<project name="MOSS" default="wt.full">

<property name="webtest.home" value="C:canooversionsBuild"/>

 

  <import file="definitions.xml" description="Import cust. definitions "/>

  <import file="${webtest.home}/webtest.xml" description="Import all functionalities for a full build"/>      

  <property name="wt.testInWork" value="tests/allTests.xml"/> 

       <!-- host.properties -->

   <property name="host" value="moss-server"/>

   <property name="config.port" value="80"/>

   <property name="config.protocol" value="http"/>

   <property name="config.basepath" value="/sites/a/cz/test/"/>        

   <!-- Login-data -->

   <property name="login.username" value="administrator"/>

   <property name="login.password" value="heslo"/>              

   <!-- showing parser output during the test  (true/false)      -->

   <property name="showhtmlparseroutput" value="false"/>

   <!-- halt on test failure  (true/false)-->

   <property name="haltonfailure" value="false"/>

   <!-- halt on test error (true/false)     -->

   <property name="haltonerror" value="false"/>

   <!-- saving server responsesi  (true/false)     -->

   <property name="saveresponse" value="true"/>

   <!-- summary  (true/false) -->

   <property name="summary" value="true"/>      

   <property name="resultpath" location="results"/>      

</project>


V súbore build.xml som nastavil všetky potrebné konfiguračné nastavenia na pripojenie Canoo testovacieho robota na MOSS server. Pri pohľade na konfiguráciu je teda vidieť, že sa canoo testovací robot pripojí na http://moss-server/sites/cz/test, na prihlásenie použije meno „administrator"a heslo „heslo“.  Property wt.testInWork je nastavená tak, že  jednotlivé testovacie kroky sú uložené v súbore allTests.xml.

allTests.xml:
 

<?xml version="1.0"?>

<project default="test">

  <target name="test" description="runs all the tests">

    <ant antfile="MOSS-test.xml"/>

  </target>

</project>


Pri  pohľade na allTests.xml  vidíme, že jednotlivé testovacie kroky sú uložené v súbore MOSS-test.xml, ktorý leží v rovnakom adresári ako allTests.xml.

MOSS-test.xml:

<project name="MOSS" basedir="." default="MOSS">             

    <target name="MOSS">

       <antcall target="ECHO"/>

       <antcall target="do_test_audiences"/>      

    </target>

          

    <target name="ECHO">              

      <webtest name="ECHO">

        <steps>

          <echo message="***TEST SPECIFICATIONS - MOSS ***"/>

          <echo message="Host            : ${host}"/>

          <echo message="Username        : ${login.username}"/>

          <echo message="*************************"/>                   

        </steps>

      </webtest>

     </target>

             

     <macrodef name="do_login">

       <sequential>

         <invoke description="Goto start page [login]"

                  username="${login.username}"

                  password="${login.password}"

                  url="default.aspx"

         />

      </sequential>

    </macrodef>  

   

    <target name="do_test_audiences">

        <webtest name="do_test_audiences">

           <steps>

             <do_login/>

                <clickLink label="Polozka c.1"/>

                <clickLink description="Click link: Spravovat oprávnění" htmlId="ctl00_m_g_fac060d3_5c0e_4b07_1ef8ecaebf6c_ctll01_ctlLinkText"/>

                 <verifyText description="Verify text" text="očakávaná sharepoint skupina 1"/>

                       <verifyText description="Verify text" text="očakávaná sharepoint skupina 2"/>

                                                                    

                <echo message="Test OK"/>

               </steps>

         </webtest>

      </target>           

</project>   


Po spustení testu sa postupne vykonajú oba „targety":
•    ECHO – vypíše do testovacieho reportu údaje o testovanej URL prihlasovacie menu
•    Do_test_audiences – obsahuje vlastné testovacie kroky, ktoré:
    1. po prihlásení na server  <do_login/>,

    2. vyberú záznam SharePont listu „Polozka c.1“ <clickLink label="Polozka c.1"/>,

    3. zobrazia skupiny používateľov, ktoré môžu s položkou pracovať <clickLink description="Click link: Spravovat oprávnění"...,   

    4. skontrolujú či zobrazené skupiny zodpovedajú pedpokladom <verifyText description="Verify text" text="očakávaná sharepoint skupina 1"/>.


Spustenie testu vykonáme nasledovne. V konzole zavolame „ant":

ant 

 

Po krátkej chvíli sa zobrazí testovacia konzola – „tzv. WebTest Monitor":


wt-monitor 

Výsledky testu sú zobrazené v štandardnej forme, pomocou HTML reportu:
 report

 
Pre úplnosť ešte uvádzam konfiguráciu testovacieho a testovaného prostredia:


•    Server: SharePoint 2007 na  Windows 2008
•    Testovací klient:  Windows 7, java version 1.6.0_20 , Canoo Webtest 1810, Apache-ant-1.7.0
 

 

Neprehliadnite: