Előadás a HUSTEF 2014 konferencián

A héten volt szerencsém előadőadni a Hungarian Software Testing Forum (HUSTEF) 2014 teszteléssel foglalkozó konferencián.

Amikor láttam áprilisban az előadásra felhívást elgondolkoztam, hogy milyen téma lenne érdekes a konferencia főleg ipari szereplőkből álló közönségének. Rá kellett jönnön, hogy az aktuális kutatásainkról (pl. ez vagy ez vagy ez) szóló beszámolót nem túl sokan éreznék hasznosíthatónak, ugyanis elég messze vannak a konferencia tipikus témáitól (automatikus tesztbemenet-generálás módszerei vs. automatikus tesztvégrehajtás). Próbáltam összegyűjteni a HUSTEF korábbi, valamint a hasonló külföldi konferenciák témáit és összehasonlítani a sajátjainkkal. Ezek átbogarászása után jött az ötlet, hogy ez az összehasonlítás viszont másnak is hasznos lehet, így végül az előadásom a teszteléssel foglalkozó akadémiai és ipari témák különbségeiről szólt.

A fóliák és az összegyűjtött előadásokról szóló anyag elérhető itt:

The Gap Between Academic Research and Industrial Practice
in Software Testing

Kategória: Testing | Címke: , | Megjegyzés hozzáfűzése

Előadás a Teszt & Tea meetupon

Múlt hét csütörtökön előadtunk a Teszt & Tea meetupon, az előadásunk címe ‘Egységtesztek automatikus generálása forráskódból’ volt.

Volt benne egy kis áttekintés a tesztbemenet-generálásról, néhány szó az eszközökről és egy demo a Microsoft Pex eszközéről.

A fóliák és a demo elérhető itt.

Kategória: Research, Testing | Címke: , | Megjegyzés hozzáfűzése

“How We Test Software at Microsoft” könyvajánló

Most jelent meg a Hungarian Testing Board (HTB) oldalán egy könyvajánlóm a “How We Test Software at Microsoft” könyvről. A könyvben én sok hasznos dolgot találtam, ezeknek egy részét próbáltam belesűríteni a leírásba. Jó olvasgatást:)

Kategória: Research | Címke: | Megjegyzés hozzáfűzése

PowerShell szkript Facebook profilképek letöltésére

Korábban szükségem volt egyszer arra, hogy letöltsem az összes Facebook ismerősöm profilképét. Természetesen nem szerettem volna egyesével végigkattintgatni a képeket:) A Facebook szerencsére ad egy webes API-t, amivel le lehet adatokat kérdezni. Összetákoltam rá egy PowerShell + wget + egyéb szkriptet némi kézi lépésekkel megtűzdelve, és kész is volt. Aztán el is felejtettem, de most az egyik tantárgyunkban pont jó példa volt, úgyhogy elővettem újra. Az elmúlt egy évben kijött a PowerShell 3 végleges verziója, és azzal gyerekjáték volt megoldani.

Feladat: töltsük le az összes FB ismerősünk profilképét lehetőleg valami nagyobb méretben.

Facebook API: a Facebook oldalán egész jó kis leírás van erről (Graph API). A lényeg annyi, hogy a következő kéréssel tudjuk lekérdezni az ismerősök adatait:

https://graph.facebook.com/me/friends?access_token=XXXXX

Itt az access_token helyébe kell generáltatni egy hozzáférési tokent a saját felhasználónak (lásd itt, de a legegyszerűbben a példákra kattintva tudunk kérni egy érvényes tokent).

Az ismerősök adatait JSON formában kapjuk vissza:

{
 "data": [
 {
 "name": "Kis Bela",
 "id": "123456"
 },
 {
 "name": "Nagy Bela",
 "id": "1234567"
 }
 ],
 "paging": {
 "next": "https://graph.facebook.com/..."
 }
}

Azaz a data részben vannak a (name, id) párok, és ha túl sok ismerősünk lenne, akkor a paging-ben lévő next linken lehetne elkérni a következő adagot.

A PowerShell v3-ban már van egy ConvertFrom-Json cmdlet, de az ezt nem tudta beolvasni. A .NET osztályok között kezdtem el körbenézni, de ott se volt annyira triviális, több helyen a Json.NET könyvtárat ajánlották. Aztán szerencsére rájöttem, hogy nem is kell a JSON köztes formátummal küzdeni, ugyanis van egy sokkal kényelmesebb megoldás:

Invoke-RestMethod -Uri https://graph.facebook.com/...

Így szépen egy PSCustomObject objektumban visszakapjuk a hívás eredményét, aminek van egy data és egy paging tulajdonsága is.

Ezek után már csak a képeket kellett letölteni, ehhez csak a következő URI kell:

https://graph.facebook.com/<person id>/picture?type=large

A letöltéshez használható az új Invoke-WebRequest cmdlet.

Ezzel az egész kb. 3 sorból megoldható:)

Egy kommentezett, paraméterezhető változata megtalálható itt: Get-FaceBookFriendsPicture.ps1

Kategória: Tech | Címke: | Megjegyzés hozzáfűzése

Virtualizációs és számítási felhő témájú diploma és házi feladatok

Az előző félévben elkészült itt a BME-n egy pár nagyon érdekes hallgatói munka virtualizáció és cloud témában, ezek esetleg hasznosak lehetnek másnak is.

Diploma:

  • Siklósi Zsolt: Dynamically scalable applications in cloud environment (English, 87 pages, PDF)

“…The focus of this thesis is dynamic scaling, one of the most remarkable cloud features. An automatically scaled cloud infrastructure or cloud application ensures that the amount of reserved resources is always sufficient to keep up a certain service level while optimizing costs by avoiding over-provisioning. The thesis presents the main details and available services of the two currently dominant cloud providers, Amazon Web Services and Windows Azure, emphasizing their scaling solutions with an extensive technical documentation section. The thesis leads the reader through the reflective design and implementation process of two different cloud applications that comply with the special cloud design principles.”

Rövidebb házi feladatok a virttech tantárgyunkban (10-20 oldal):

A dolgozat célja, hogy bemutassa a Microsoft PaaS számítási felhő (cloud computing) keretrendszerét, az Azure-t, egy chat oldal fejlesztésének részletes ismertetésén keresztül.

A dolgozat célja, hogy bemutassa az I/O virtualizációval kapcsolatos kihívásokat és technológiákat, majd ismertesse az Intel VT-d megoldással kapcsolatos tapasztalatokat.

A házi feladat ismerteti a legelterjedtebb menedzsment eszközöket, amik a nyílt forráskódú KVM virtualizációs megoldáshoz elérhetőek.

This short paper gives a survey of the typical management tasks in a virtualized datacenter, and uses the solutions from VMware as examples for these tasks.

A házi feladat bemutatja röviden a VMware ESXi és a Microsoft Hyper-V legújabb verzióit, és egy magas szintű összehasonítást kínál a bennük megtalálható főbb funkciókról.

Kategória: Tech | Címke: , | Megjegyzés hozzáfűzése

Winodws Server 2012: DC vs. RDS

A virtualizációs tantárgyunk gyakorlatára készülve elkezdtem megint összerakni egy Remote Desktop Services (RDS) környezetet bemutató rendszert. Tavaly Windows Server 2008 R2-t mutattunk, idén viszont Windows Server 2012-t szerettem volna használni.

Korábban ez úgy ment, hogy a frissen telepített szervert Active Directory tartományvezérlővé (domain controller, DC) kellett előléptetni, majd utána telepíteni rá az RDS szerepeket. Be kellett állítani a használt tanúsítványokat, ki kellett választani, hogy melyik gépek és alkalmazások legyenek elérhetőek, majd működött is az RDWeb webes felület meg a RemoteApp.

Az új verzióban ezen sajnos változtattak, és erre a fájdalmasabb módon kellett rájönnöm:) Eddig csak nem volt ajánlott egy DC gépre RDS-t telepíteni, de most nem is nagyon lehet. Pár óra kellett nekem, hogy belássam, de végül csak engedtem, és két külön virtuális gépre kerültek az Active Directory és az RDS szerepek.

Az egészben megint az a kellemetlen, hogy a hivatalos dokumentációban erről semmit nem találtam (a Technet Library-ban van egy What’s New in Remote Desktop Services leírás, meg néhány Test Lab Guide, de semmi egyéb), és a Server Manager vidáman engedi az RDS szerepeket telepíteni egy DC-re. Fájt volna belerakni egy ellenőrzést?;) Nem hiszem el, hogy a tesztelés során ez nem jött ki, hisz 1) ha tesztrendszert kezd építeni az ember, akkor nyilván minimális számú géppel akarja megúszni, 2) kisvállalati kategóriában az “egy vállalat – egy szerver” felállás azért még mindig divat, és 3) ez korábbi verziókban működött.

A hiba részletesei

Az RDS telepítése során a ‘Session-based desktop deployment’ opciót választva a telepítő az RDS szerepek hozzáadása közben hibára fut. ‘There was an error’ a hibaüzenet tartalma csak, ami nem túl sokat segít. Az eseménynaplóban körbenézve két kapcsolódó hibát találhatunk. Az egyik:

The Remote Desktop Management service terminated with the following service-specific error: %%2284126209

A másik pedig:

Login failed for user 'NT AUTHORITY\SYSTEM'. Reason: Failed to open the explicitly specified database 'RdCms'. [CLIENT: <named pipe>]

A fenti hibakód nem túl segítőkész, de szerencsére ez alapján gyorsan el lehet jutni hasonló problémával küzdő sorstársak fórumos bejegyzéseihez:

Install Remote Desktop Services Failed on Windows 2012 Server

Remote Desktop Management Service, Service-specific error %%2284126209

A leírások szerint volt, akinek működött az, hogy átállítja az RDS szolgáltatásokat, hogy más felhasználó nevében fusson, vagy módosítja az RdCms adatbázis felhasználóit.

Egy ideig vacakoltam ezzel, de ezek a “megoldások” több sebből véreznek:

  • Alapesetben a Windows Internal Database adatbázishoz nem kerülnek fel a menedzsment eszközök (jogos, hisz ezért ‘Internal’), a C:\Windows\WID\Binn könyvtárban csak maga a kiszolgálóhoz tartozó exe van fent.
  • Lehet a parancssori felületet külön telepíteni.
  • Aztán megváltoztatták az adatbázis elérését is, a korábbi helyett ezt kell használni (eddig #SSEE volt és \sql\):
sqlcmd -S \\.\pipe\MICROSOFT##WID\tsql\query
  • Ha ez megvan, akkor, ha éppen balszerencsénk van, akkor nincs is RdCms adatbázis. Ha egy ilyen sikertelen, félkész telepítés után újraindul a gép, akkor az RD Connection Broker szolgáltatást el is távolítja az újraindítás során. A többi ott marad, de a Connection Broker eltűnik.
  • Itt adtam fel, és kezdtem el egy külön DC-t telepíteni. Így már gond nélkül települt.
  • Azért még utoljára keresztbe tett nekem, a Remote Desktop bejelentkezések mindig ‘Access Denied’ hibaüzenetet adtak, még Domain Administrator felhasználóval is. Elég sokáig kereshettem volna az okát, de szerencsére ráakadtam erre a cikkre:

The Case of the Mysterious Access Denied aka More on Service Hardening

  • Hiába lett eltávolítva és újra felrakva a szerep, valamelyiknél még ott maradt egy korábbi módosítás, hogy nem a ‘Network Service’ nevében fut. Ezt átállítva már tényleg ment.

Összességében utána tetszettek az új funkciók, kényelmes az új Server Managerben lévő felület is, tényleg sokat tud az új RDS, de miért nem lehet belerakni ezt az ellenőrzést a Server Managerbe….

Kategória: Tech | Címke: | Megjegyzés hozzáfűzése

Tapasztalatok a Windows Server 2012 menedzsment felületeivel

A Windows Server 2012-ben három (vagy inkább kettő és fél) menedzsment felület közül választhatunk, ahogy azt pl. itt is részletesen le van írva: Windows Server Installation Options

  • Server Core: a GUI nagy része nem elérhető, helyi parancssori vagy távoli menedzsment lehetséges. Végre telepíthető benne a legtöbb szerep, és ez lett az alapértelmezett.
  • Server with GUI: ez a régi változat, minden GUI komponens elérhető.
  • Minimal Server Interface: köztes eset, a GUI menedzsment eszközök egy része megy elvileg (Server Manager, MMC).

Tetszik ez az irány, végre például követelmény, hogy a szerver oldali alkalmazásoknak kötelező Server Core változaton is futni, vagy a PowerShell hatalmas lökést kapott, hogy mindent lehessen vele állítani. Sőt, már azt is ki lehet próbálni, hogy egy Windowson parancssorból el tudunk teljesen távolítani egy komponenst, majd utána egy másik paranccsal vissza tudjuk rakni úgy, hogy a legfrissebb fájlokat közben a Windows Update tárhelyről szedi le (Features on Demand funkció)! (Azért az Install-WindowsFeature cmdlet messze van még tudásban az apt-get parancstól:)

Ha már van ez a szép Minimal Server Interface opció, gondoltam megnézem, hogy mit tud. Egy pár nap után azért vegyesek a tapasztalataim.

  • A PowerShell cmdleteket nagyon jól kibővítették, egy 5 gépből álló feladatátvételi fürt (failover cluster) demo rendszerhez meg tudtam mindent csinálni PowerShellből. (Azért mondjuk azzal, aki az iSCSI cmdleteit kialakította, elbeszélgetnék egy kicsit:)
  • A Minimal Server Interface módban tényleg elindulnak a régi MMC-s felületek. De ha kicsit is megkapargatjuk, azért vannak érdekességek, pl. ez:

 

Az MMC felület szépen megy, azonban például a Failover Cluster Manager az összesítést HTML-ben jeleníti meg, az azt megjelenítő komponens viszont IE nélkül nem elérhető. Szóval azért látszik, hogy ezeket a felületeket anno nem ilyen környezetre tervezték.

A másik fájó példa az iSCSI Initiator beállítása (megint az iSCSI:). Ez egy jól használható kis GUI, még működik is Minimal Server Interface módban. Az egyetlen egy gond vele, hogy ez a helyi gépre vonatkozik. Ez bizony nem MMC-modul, ezt nem lehet megnyitni a távoli gépre vonatkozóan (legalábbis én nem találtam meg). Úgyhogy ha a távoli gép történetesen Server Core, akkor ott marad a PowerShell. Ez megint olyan, hogy akkor nyilván egy indokolható döntés volt, hogy miért nem MMC-modulként valósítják meg, csak ennek most megvan a következménye.

  • Az igazi felületek azok (lesznek), amiket a Server Managerhez újragondoltak. Ilyen például a lemezek és kötetek kezelése. Ez szépen megy már a háttérben WS-Management + PowerShell fölött. Viszont úgy tűnt nekem, hogy ezeken azért még látszik, hogy első verziók (az MMC-s felületeket már 10 éve csiszolják).

Példa: a fürthöz hozzáadtam egy olyan kötetet, aminek nem volt betűjele. Később mégis kellett volna, nézzük meg akkor a Server Manager felületét.

Itt betűjelet nem lehet már hozzáadni (ami akár még jogos is, hisz ez a lemez elvileg már több géphez is hozzá van rendelve). Kiszedtem a fürt kezeléséből a lemezt, készíteni akartam egy új kötetet rá. Azonban a betűjel kiválasztásánál ez fogadott:

Igen, lehet a C is? Nyilván nem tudtam megállni, hogy ne azt válasszam:) El is fogadta, végig lehetett nyomkodni a varázslót, majd miután befejezte a munkát, ezt adta:

Jé, tényleg nem sikerült? Nem mondod, ki hitte volna:). Biztos ott van az is a háttérben, hogy a Server Manager csak egyszerű GUI váz a PowerShell cmdletek becsomagolására, de azért mégis jó lenne némi ellenőrzés már menet közben is.

Összességében tényleg nagy ugrás a Windows Server 2012, ha legközelebb Windows szerver kell valamihez, akkor 2012-es Server Core-t használnék már majd legszívesebben, de azért látszik még a UI-ba a hirtelen váltás szerintem.

Kategória: Tech | Címke: , | Megjegyzés hozzáfűzése