Archivy kategorií: SharePoint Online

Zlý vzrušující oznámení

Oznámení skutečnosti není moje věc, Ale tentokrát, Opravdu a skutečně se těším právě zahájila Slalom Big Apple webu služby SharePoint. 

Pracuji na Slalom poradenství a správa portálů & Spolupráce v praxi.  Big Apple web je "moje" Web pro svou praxi v New Yorku.  Dlouho jsem chtěl jeden z těchto. Jsem si jistý, že mnoho SP pro jeho přát něco podobného.  Kolikrát se podívali jsme se na veřejné stránky naší společnosti, nebo jeden ze zákazníků a viděl ji ven a jen znát a přání, že se bude stavět na SP?  Všichni víme, že SP je dobrý v takové věci, ale to není příliš časté. 

No., světy konečně zarovnána tak akorát pro mě – SP Online je opravdu levné, Měl jsem ten správný tým a dostatek času na to skutečně udělat.

Byla to úžasná cesta dostat zahájit a a to je tam na místě.

Přečtěte si o tom tady a pokud máte zájem v detailech za tím, Já jsem více než šťastný, o tom mluvit.

Zde je odkaz oficiální oznámení: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=82 #O365

</Konec>

Jak: Konfigurace jednotky Test a Test pokrytí s QUnit.js a Blanket.js pro kancelář 365 Aplikace SharePoint

Úvod

Jsem zkoumá testování a testování pokrytí pro JavaScript, když pracuji na nové aplikace SharePoint pro SharePoint online v kanceláři 365 apartmá.  Zřejmý výzkumné cesty mě vedly k Qunit.js a hned po tomto, do Blanket.js.

QUnit dovolte mi nastavit unit testy a seskupit je do modulů.  Modul je prostě jednoduchý způsob, jak uspořádat související testy. (Nejsem si jistý, že ho používám, jak bylo zamýšleno, ale funguje to pro mě zatím s malou sadou testů, které jsem doposud definovali).

Blanket.js se integruje s Qunit a bude mi ukázat skutečné linie JavaScript, které byly – a hlavně – nebyly spuštěny ve skutečnosti během spuštění testů.  To je "pokrytí"-linky, které se vztahuje testu, zatímco jiné nejsou.

Mezi nastavení dobré testovací případy a zobrazení pokrytí, můžeme snížit riziko, že náš kód má skryté vady.  Dobré časy.

Qunit

Za předpokladu, že máte Visual Studio projekt nastavení, Začněte stažením balíčku JavaScript z http://qunitjs.com.  Přidáte JavaScript a odpovídající CSS k řešení.  Důl vypadá takto:

image

Obrázek 1

Jak můžete vidět, Byl jsem pomocí 1.13.0 tehdy jsem napsal tento příspěvek blogu. Nezapomeňte si stáhnout a přidání souboru CSS.

To z cesty, Dalším krokem je vytvořit nějaký druh testu postroj a referenční Qunit bitů.  Jsem testování spoustu funkcí v souboru skriptu s názvem "QuizUtil.js", tak jsem vytvořil stránku HTML s názvem "QuizUtil_test.html", jak je uvedeno:

image Obrázek 2

Zde je kód:

<!DOCTYPE HTML>
<HTML xmlns.= "http://www.w3.org/. 1999/xhtml">
<hlava>
    <titul>QuizUtil test s Qunit</titul>
    <odkaz rel= "šablony stylů" HREF="../CSS/qunit-1.13.0.CSS" />
    <skript Typ= text/javascript"" src="QuizUtil.js" dat obal></skript>
    <skript typ ="text/javascript" src ="qunit-1.13.0.js"></skript>
    <skript typ ="text/javascript" src ="blanket.min.js"></skript>

    <skript>
        modul("getIDFromLookup");
        Testovat("QuizUtil getIDFromLookupField", funkce () {
            var goodValue = "1;#Paul Galvin";

            rovná(getIDFromLookupField(goodValue) + 1, 2), "ID [" + goodValue + "] + 1 mělo by být 2";
            rovná(getIDFromLookupField(nedefinované), nedefinované, "Nedefinované vstupní argument by měla vrátit výsledek nedefinovaný.");
            rovná(getIDFromLookupField(""), nedefinované, "Prázdný vstupní argument by měla vrátit hodnotu.");
            rovná(getIDFromLookupField("gobbledigood3-thq;dkvn ada;skfja sdjfbvubvqrubqer0873407t534piutheqw;VN"), nedefinované,"By měl vždy vrátí výsledek kabriolet na celé číslo");
            rovná(getIDFromLookupField("2;#jiná osoba"), "2", "Kontrola [2;#jiná osoba].");
            rovná(getIDFromLookupField("9834524;#hodnota Long"), "9834524", "Velké hodnoty testu.");
            notEqual(getIDFromLookupField("5;#Každý, kdo", 6), 6, "Testování notEqual (5 není rovno 6 pro tento příklad: [5;#Každý, kdo]");

        });

        modul("htmlEscape");
        Testovat("QuizUtil htmlEscape()", funkce () {
            rovná(htmlEscape("<"), "&lt;", "Únik méně než operátor ('<')");
            rovná(htmlEscape("<div třída =  "someclass">Nějaký text</div>"), "&lt;div třída =&quot;someclass&quot;&gt;Nějaký text&lt;/div&gt;", "Složitější testovací řetězec.");
        });

        modul("getDateAsCaml");
        Testovat("QuizUtil getDateAsCaml()", funkce () {
            rovná(getDateAsCaml(nové Datum("12/31/2013")), "2013-1231:00:00:00", "Testování naprogramováno datum: [12/31/2013]");
            rovná(getDateAsCaml(nové Datum("01/05/2014")), "2014-01-05T:00:00:00", "Testování naprogramováno datum: [01/05/2014]");
            rovná(getDateAsCaml(nové Datum("01/31/2014")), "2014-0131:00:00:00", "Testování naprogramováno datum: [01/31/2014]");
            rovná(getTodayAsCaml(), getDateAsCaml(nové Datum()), "getTodayAsCaml() by měla rovnat getDateAsCaml(nové datum())");
            rovná(getDateAsCaml("nesmysl hodnota"), nedefinované, "Snažte se dostat datum hodnotu nesmysl.");
            rovná(getDateAsCaml(nedefinované), nedefinované, "Pokuste se získat data [nedefinované] datum.");
        });

        modul("getParameterByName");
        Testovat("QuizUtil getParameterByName (z řetězce dotazu)", funkce () {
            rovná(getParameterByName(nedefinované), nedefinované, "Zkus se nedefinovaný parametr by měla vrátit nedefinované.");
            rovná(getParameterByName("neexistuje"), nedefinované, "Pokuste se získat hodnotu parametru, když víme, že parametr neexistuje.");

        });

        modul("Soubory cookie");
        Testovat("QuizUtil různé funkce souborů cookie.", funkce () {
            rovná(setCookie("test", "1", -1), getCookieValue("test"), "Získat soubor cookie, který jsem měla fungovat.");
            rovná(setCookie("anycookie", "1", -1), pravda, "Nastavení platné vaření by měla vrátit"true".");
            rovná(setCookie("crazy cookie název !@#$%"%\^&*(()?/><.,", "1", -1), pravda, "Nastavení názvu špatný soubor cookie zpět 'false'.");
            rovná(setCookie(nedefinované, "1", -1), nedefinované, "Předávání definován jako název souboru cookie.");
            rovná(getCookieValue("neexistuje"), "", "Cookie neexistuje test.");
        });

    </skript>
</hlava>
<tělo>
    <div ID= "qunit"></div>
    <div ID= "qunit svítidlo"></div>

</tělo>
</HTML>

Existuje několik věcí, které se zde děje:

  1. Odkazování na můj kód (QuizUtil.js)
  2. Odkazování na Qunity.js
  3. Definice některých modulů (getIDFromLookup, Soubory cookie, a další)
  4. Umístění <div> ID je "qunit".

Pak, Jsem jen vytáhnout tuto stránku a dostanete něco takového:

image

Obrázek 3

Pokud se podíváte na horním, Máte několik možností, dvě z nich jsou zajímavé:

  • Skrýt testy: Docela zřejmé.  Mohou pomoci vaše oči vidět problémové oblasti a mnoho nakupit.
  • Modul: (rozevírací seznam): To bude filtrovat testy dolů jen ty skupiny testů, které chcete.

Co se týče testy samy – pár poznámek:

  • Je samozřejmé, že musíte napsat kód tak, že je to v prvé řadě testovatelné.  Použití nástroje může pomoci prosadit kázeň. Například, Měl jsem funkci nazvanou "getTodayAsCaml()”.  To není velmi testovatelné, protože to trvá žádné vstupní argument a testování rovnosti, Musíme neustále aktualizovat testovací kód tak, aby odrážel aktuální datum.  Já refaktorování tím přidáním dat vstupní parametr a pak předá aktuální datum, kdy chci, dnešní datum ve formátu CAML.
  • Qunit rámec dokumenty své vlastní testy a vypadá to docela silný.  To může dělat jednoduché věci, jako je testování rovnosti a má také podporu pro ajax styl volání ("skutečný" nebo zesměšňován, pomocí vašeho oblíbeného mocker).
  • Prochází procesem také síly, abyste si při okraji případy – co se stane s "nedefinovanou" nebo null je předán do funkce.  To usnadňuje mrtvý otestovat tyto scénáře se.  Dobré věci.

Krytí s Blanket.js

Blanket.js doplňuje Qunit tím, že sledování skutečné řádky kódu, které vykonávají v průběhu spouštění vašich testů.  I když že je to úplně samostatná aplikace integruje přímo do Qunit, to hraje pěkně – opravdu vypadá, že je to jedna bezproblémové aplikace.

To je blanket.js v akci:

image Obrázek 4

image

Obrázek 5

(Ve skutečnosti budete muset kliknout na políčko "Povolit krytí" v horní [viz obrázek 3] aby to bylo.)

Zvýrazněné řádky v obrázku 5 nebyly provedeny některou z mých testů, Takže musím vymyslet test, který způsobuje jejich spuštění, pokud chci plné pokrytí.

Získejte blanket.js práci podle následujících kroků:

  1. Stáhnout z http://blanketjs.org/.
  2. Přidejte do projektu
  3. Aktualizovat stránku testovací pás (QuizUtil_test.html v mém případě) takto:
    1. Referenční kód
    2. Ozdobte váš <skript> referenční takhle:
    <skript Typ= text/javascript"" src="QuizUtil.js" dat obal></skript>

Blanket.js zvedne atribut "data obal" a má své kouzlo.  Háky do Qunit, aktualizuje uživatelské rozhraní přidat možnost "Povolit pokrytí" a voila!

Shrnutí (TL; DR)

Použít Qunit k napsání testovacích případů.

  • Stáhnout
  • Přidejte do projektu
  • Napište zkušební stránky postroje
  • Vytvořit vaše testy
    • Některé z kódu být testovatelné refaktorovat
    • Být kreativní!  Myslete na crazy, možné scénáře a testovat je stejně.

Pomocí blanket.js zajistit pokrytí

  • Ujistěte se, že Qunit pracuje
  • Stáhnout blanket.js a přidejte jej do projektu
  • Přidejte jej do testovací stránky postroje:
    • Přidat odkaz na blanket.js
    • Přidejte atribut "data obal" do vašeho <skript> Značka
  • Testy Qunit.

Nikdy jsem žádnou z předtím a měl nějaké základní věci v několik hodin. 

Šťastný testování!

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

BPOS 2010 a "nadmnožina”

Četla jsem jedním z Tyto dost obecné bla jako články o BPOS (Microsoft exchange a SharePoint v cloudu) a naštěstí waded až na konec:

Co se týče jiných blízko-termín dodávky, Společnost Microsoft se zavázala poskytovat v BPOS v.Next nativní PowerShell skriptů pomocí PowerShell koncový bod stavte na PowerShell verze 2. Ověření bude provedeno prostřednictvím Online ID, s jediného pověření budou moci být použity jak pro PowerShell a portál.Keane ozvěnou poselství jiných Microsoft execs byly vyjadřovat na TechEd tento týden: Mrak schopnosti, v průběhu času, bude  stát se nadmnožinou co je k dispozici na provozovnách. V současné době, opak je pravdou, a služeb Microsoft Online services nabízejí podmnožinu funkcí dostupných v softwaru ekvivalenty jednotlivých produktů.

Představa, že cloud poskytne více možností než místní, je pro mě něco nového. Zajímalo by mě, jak pravda to bude nakonec.  Je to pocit neintuitivní mě.  Úplně jsem si představu, že mnoho společností bude pohybovat věci do oblak (nebo začít v cloudu) ale normálně myslím, že to dělají, protože pro jeho (snazší admin, SLA, atd) dalece převyšují zápory (snížená funkce). 

Já mám trochu těžko uvěřit, že mrak nabídky překročí na prem schopnosti.  Víceklientské je těžké a vypadá to, že musí donutit kompromisy a zajistila tak dobré SLA a snadné použití...

Budu asi jíst moje slova na to.  Já myslela, že nikdo, kdo by mohl potřebovat více než 650 MB dat a tedy, CD nikdy chtěl být zlepšena.

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

SharePoint Online a aplikace InfoPath

Může být poslední, kdo si to uvědomují, ale SharePoint Online (často slyším lidi říkat je oslaven WSS) podporuje služby InfoPath Forms Services.  To je docela silná věc, zvlášť když uvážíme, že IP FS je MOSS podnikových funkcí a BPOS je něco jako 1,99 dolarů/měsíc 10,000 uživatelé.  Možná je to trochu víc než.

Tak, SharePoint Online není snadné definovat.  Má tato funkce enterprise, ale žádné anonymní přístup (který i WSS podporuje).  Můžete udělat nějaké zajímavé věci s vyhledáváním (MOSS-ish, vzhledem k tomu, že můžete definovat místo úrovni obory), ale pokud potřebujete přístup k zprostředkovatele sdílených služeb, Nemůžete to udělat.  S tímto produktem můžete hrát hru „na jedné straně a na druhé“ celou noc 🙂

Microsoft má vydat novou verzi SP Online v příštích několika měsících.  Zajímalo by mě jaké divný hybridní to být?

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin