Töökas nädalavahetus Rails Girlsil ehk naised programmeerima!

Jahedad ja vihmased sügisilmad lihtsalt on tubaseid tegemisi soodustavad ja kui üks hetk avastasin, et Rails Girls Tallinna septembrikuu workshopile registeerimine on avatud, siis oli asi otsustatud. Olen koolis paar põgusat programmeerimisteemalist kursust küll läbi teinud, kuid oma igapäevases kvaliteediinseneri töös koodi kirjutamisega siiski ei tegele. Ettevõttesiseselt on aga käimas raamatukogu arendus just Ruby on Railsi kasutades ja nii süveneski idee lasta end sel teemal natuke harida.

Igatahes Rails Girlsi näol on tegemist rahvusvahelise mittetulundusliku õpitoaga, mis on kõikidele huvilistele tasuta. Ahjaa, üks väike aga on ainult – osalejateks on vaid naised või kui ikka väga hästi läheb, siis lubatakse ka mõni mees uksest sisse. Muidugi ainult juhul, kui ta eriti ägeda ja tegija naise kaasa toob. Seekord vist keegi selle trikiga hakkama ei saanudki. Nagu tasuta asjade puhul ikka on ka Rails Girlsi workshopile tunglejate hulk alati suur (see aasta koguni 125 naist ning 2 meest) ja silmapaistmiseks tuleb ära täita paarist-kolmest küsimusest koosnev ankeet. See on võimalus demonstreerida oma suurepärasid ilukirjanduslikke võimeid ja korraldajaid võluda. Kusjuures kui “motivatsioonikiri” on atraktiivselt kirja pandud, siis tundub, et mida vähem programmeerimisest teada, seda suurema tõenäosusega ka Rails Girlsi üritusele kutse saab. Paar kevadel toimunud workshopilt välja jäänud neiut soovitasid oma kogemustest õppida ning oma koodi kirjutamise oskuste kohapealt enesekiitusega tagasi hoida. Just sel põhjusel sai oma ankeeti kirja pandud, et ei ole koodi näinud ja ei ole koodi teinud.

 

Mis see Rails Girls ikkagi on?

Rails Girls on 2010. aasta novembris Helsingist alguse saanud üritus, mida organiseerivad vabatahtlikud Ruby huvilised. Selgitusena olgu öeldud, et Ruby on programmeerimiskeel Jaapanist ning Rails veebiarenduse raamistik, mis siis Rubyt kasutab. Continue reading “Töökas nädalavahetus Rails Girlsil ehk naised programmeerima!”

Acceptance Testing: RSpec vs Cucumber

Levinumad acceptance testide loomise vahendid Behavior-Driven Development metoodikas on RSpec (Ruby jaoks) ja Cucumber (universaalsem). Olles mõlemat mõnevõrra pruukinud, tekkis küsimus, et kumb siis on lõpuks acceptance testimiseks parem. BDD põhitõdesid ei hakkaks ehk siinkohal kordama, vaataks hoopis Cucumberis ja RSpec’is testide kirjutamist hüpoteetilise Rubys kirjutatud veebirakenduse jaoks.

Mõlemad tööriistad kasutavad brauseri käitamiseks Capybara-nimelist veebirakenduste testimise raamistikku. RSpec’i ja Cucumberi erinevus seisneb peamiselt testi loetavuses ning kirjelduse nö. tasemes. Lihtne näide esmalt Cucumberi stsenaariumina:

Feature: Blog articles
  In order to have an awesome blog
  As an author
  I want to create and manage articles

  Scenario: Article index
    Given there are 2 articles
    When I go to the articles page
    Then I should see the following articles:
    | Article title |
    | Article one   |
    | Article two   |

Iga sammu tähenduse Cucumberile arusaadavaks tegemiseks tuleb need defineerida:

Given /there are (.*) articles/ do |number|
  number.times { |n| Article.create! }
end

Nagu näha, kasutab Cucumber testide kirjeldamiseks loomulikku keelt ja seetõttu on sellised testid väga hästi loetavad, samuti aitab kõrgema taseme funktsionaalsusele keskendumine kergemini vastata küsimusele “Mida meie rakendus õigupoolest tegema pidi?“. Teisalt on antud juhul vajalik kirjutada ka sammudefinitsioonid, et Cucumber teaks, mida meie loomulikus keeles kirjeldatud stsenaariumitega peale hakata, seega tekib testidesse üks lisakiht, mis samuti vajab ülalpidamist.

Continue reading “Acceptance Testing: RSpec vs Cucumber”

Veel tankiga seenel käimisest

Tegelikult ajendas mind kirjutama Valdo postitus SOAPi testide automatiseerimisest. Ma ei tea kuidas teile teistele tundub, aga minule jätab Visual Studio SOAPi testide jaoks küll ebaproportsionaalse mulje. Kõik see GUI ja proxide genereerimise wizardid ja noh peamiselt siiski – Windows only vahend – ei kõla nagu veebi testimiseks mõstlik. Aga eks ole Youtubest nähtud kuidas tankiga seenel ka käiakse või õlle jahutamiseks reaktiivmootor ehitatakse.

Jutt keerukusest kõlas intrigeeriv. Mõtlesin, et prooviks siis ise ka. Ütlen ausalt, ei olnud ka minul varasemat kogemust selles vallas. Aga et mitte igavalt Valdoga samasse auku astuda valisin keeleks Ruby.

Ruby install on kõigis enamkasutatavates keskkondades (mida mina kasutanud olen) sirgejooneline. Installerid on olemas või on Ruby opsüsteemi vaikimisi ära installitud. Pole vaja midagi “internetist otsida” ja mööda foorumeid aurata. Hilisem librade install käib sisse ehitatud package manageriga imelihtsalt.
Continue reading “Veel tankiga seenel käimisest”

Kuidas automatiseerida veebiteenuse testimist üle SOAP protokolli

Proeksperdi plaan on testide laialdane automatiseerimine. Esimeseks katsetuseks sai telekommunikatsiooni projekt, kus iseteeninduse veebileht suhtleb teenuste serveriga ja infovahetus toimub vana hea SOAP protokolli abil. Regressiooni käigus tuleb testida, kas teenused käituvad õigesti ja seda saab teha käsitsi iseteeninduse lehte kasutades. Lühidalt öeldes: serverile on vaja saata HTTP päringuid ja veenduda, et tagasi tuleva paketi sees on õige info. Säherdune ülesanne tundub jõukohane just arvutile meie eest ära teha.

SOAP – Simple Object Access Protocol on tuntud asi, aga kohe kuulsin lisaks, et nii “lihtne” see ka ei ole. SOAPiga käib kaasas WSDL (Web Services Description Language) kirjeldus, mis on antud teenuse kirjeldus veebilehel. Sellest saab teada, mis funktsioone teenuselt kutsuda saab, mis argumente tahetakse, milline objekt tagastatakse ja mida objektid sisaldavad. Õnneks on asi nii standardne, et on olemas erinevates keeltes library’d, mis funktsioonide ja klasside genereerimise automaatselt ära teevad, ega ole vaja ise WSDLi dešifreerida. Tulemuseks on PROXY, mis võimaldab funktsioonide näol veebiserverile päringuid saata ja mingeid XMLi ega HTTP päringuid pole üldse vaja näppida.

1. päev – PERL

Automatiseerimise üks eesmärk on asjad võimalikult lihtsana hoida. Kuna olin sellega veidi kokku puutunud, sai esimeseks valikuks PERL. Otsimise peale selgus, et on kaks pakki Continue reading “Kuidas automatiseerida veebiteenuse testimist üle SOAP protokolli”

“Kas me läheme sinna progema?” ehk kuidas Proeksperdi kvaliteediinsenerid BDD’d tegemas käisid

Kuna Proeksperdi kvaliteedimeeskonna eelmisest treeningpäevast oli möödunud juba hea mitu kuud, kõik olid karmidest kogemustest taastunud ning meeskonda oli lisandunud ka uusi liikmeid, oligi augustikuu eelviimane päev paras hetk järgmise väliõppuse korraldamiseks. Püüaks sellest siis ka natuke lähemalt rääkida.

Seekordse treeningpäeva teemaks sai valitud Behavior-Driven Development ehk BDD metoodika, millest olen ka varem lühidalt kirjutanud. Kuna päris tühja koha pealt on sant alustada, tuli riiulist alla tõsta ja tolmust puhtaks puhuda üks Proeksperdi sisemine projekt – Raamatukogu 2.0, mis on meie füüsilist raamatukogu toetav veebipõhine rakendus. Kuna see rakendus oli juba algusest peale loodud just BDD metoodikat kasutades, oli tegu pea ideaalse õppevahendiga.

 

Kuidas BDD töötab

BDD üks definitsioone kõlab järgnevalt:

Behaviour-driven development is an “outside-in” methodology. It starts at the outside by identifying business outcomes, and then drills down into the feature set that will achieve those outcomes.

Piltlikult esitades töötab see metoodika umbes nii:

  1. Iga stsenaariumi jaoks, mis kirjeldab mingit funktsionaalsust
  2. käivita stsenaarium – tulemuseks on FAIL
  3. defineeri esimene samm – ka selle tulemus on FAIL
  4. kirjuta rakenduse koodi täpselt niipalju, et sammu tulemus oleks PASS
  5. refaktoori kirjutatud kood ja korda samme 4 & 5 iga stsenaariumi sammuga kuni…
  6. …kogu stsenaariumi tulemus on PASS
  7. refaktoori rakenduse kood ja alusta uuesti sammust number 2

Continue reading ““Kas me läheme sinna progema?” ehk kuidas Proeksperdi kvaliteediinsenerid BDD’d tegemas käisid”