mobile / archive / rss
Posted on March 29, 2009
*

Cucumber + (Iron)ruby #6 : Første egne test

Da er vi klare for vår første egne test.

Jeg vil lære noe om ASP.Net MVC. Dette er lagret i en features-fil “nnug.feature”.
For at dette skal bli en kjørbar test trenger vi en fil med “step-definisjoner”. Step-filer lagrer vi i katalogen “step_definitions”. Dette er ruby-koden som kjøres av cucumber og definerer de skrittene vi bruker i testen vår. I vår step-fil ” har vi:

Her brukes regexmatching på teksten i vår features fil til å definere hva som skal skje i hvert step. @browser er et objekt som representerer nettleseren, styrt av watir. I dette tilfellet internet explorer. Det er definert i en environment.rb-fil som ligger i support-katalogen:

require 'spec/expectations'
require 'watir'
Browser = Watir::IE

# "before all"
browser = Browser.new

Before do
@browser = browser
end

# "after all"
at_exit do
browser.close
end
I “When” - skrittet har vi bare en utkommentert linje, siden vi ikke skal gjøre noe der i denne enkle testen.

I Then-skrittet så tar vi mot en parameter text, og sjekker om den fins i teksten på websiden.
Så det vi sjekker i denne testen er, når vi er på websiden localhost:2323/default.aspx, så skal vi ha teksten “Velkommen NNUG”på denns siden.

Når jeg kjører denne testen med "cucumber --language no features" blir den rød-
Hva må vi gjøre for å få en grønn test ?

Vi laster ned ASP.Net MVC fra codeplex, og lager et nytt prosjekt. Her kaller vi prosjektet NNUG, siden det ble presentert der. Vi setter portnummer for web-siten til 2323 så vi har dette klart til testen vår.

Vi endrer ingenting, vi bare starter det. Da ser vi denne websiden:


Når vi kjører testen blir den fremdeles rød.

Neste skritt er å endre koden så testen vår kan forventes å bli grønn. Fra dette:
til dette:

Vi kjører testen på nytt med "cucumber --language no features" . Og får nå dette skjermbildet:
En grønn cucumber-test.

PS!Jeg ser nå at jeg glemte “chcp 1252” så de norske tegnene ødelegger testene. Så husk chcp1252 som beskrevet i en tidligere post så får du penere bilder enn meg ;)

Comments (View)
Posted on March 10, 2009
*

Cucumber + Ironruby #5 : BDD

Nå kommer vi til poenget med å installere ruby, ironruby og cucumber på pcen.

BDD, eller behaviour driven development.

Testing som fokuserer på systemets oppførsel.

Nøkkelord om BDD

  • Fra utsiden og inn
  • Sikre forretningsverdi
  • Naturlig språk
  • Domenedrevet design
  • Involvere QA og forretning : Samarbeid og eierskap
  • Fokus på hensikten med koden du skal lage
  • Samme syklus som i TDD : Starter med tester
Startet med utvikling av enhetstester. Men istedenfor fokus på klasser, funksjoner, metoder og kode :
Fokusere på oppførsel
De gikk fra tester som ”FødselsnummerTest”
Til tester med logiske tolkbare navn. “FødsesnummerSkalVære11Siffer”.
Det ble tatt et skritt videre til automatiserte formattere som tolket testen til klartekst:”Fødselsnummer skal være 11 siffer” som ble skrevet ut i klartekst og dermed er lesbart av kunden.

Men de stoppet ikke der. Man utviklet standard formulering av scenarier som beksriver systemet.

”Som en .. Når jeg … ønsker jeg at ….”

Given some initial context (the givens),
When an event occurs,
then ensure some outcomes.

De første versjonene a testrammeverk for dette var rammeverk som man brukte i testene som skrev ut scenariene etterhvert som testen kjørte:

2003: JBehave
Nbehave
Specter
Rspec
Fitnesse
Cucumber

Et eksempel fra NBehave:

Som vi ser her så blir resultatet av testen skrevet ut i klartekst.
Og for oss i Norge kan vi gjøre dette på norsk. Dette er et klart fremskritt i kommunikasjon med vår kunde. Men testen vår er fremdeles skrevet i kode. Et språk kunden ikke behersker, testere ike nødvendigvis behersker.

Men det er ikke nok til å involvere kunden i det som teller. Å formulere kravene sine slik at de kan brukes av oss, direkte og uendret.

Enter cucumber:



Dette er faktisk en test i cucumber (!)

Den er
  • på norsk
  • kjørbar
  • repeterbar
Og det er noe kunden kan formulere sammen med deg.

Når du kjører denne testen, linje for linje, vil den bli grønn om den er vellykket, og rød om den ikke er vellykket.

Kunden kan kjøre disse testene fortløpende under testene, og du kan kjøre testene fortløpende under utvikling.

I neste post skal vi se på det som ligger bak denne testen. Ta skrittet fra ord til kode.
Comments (View)
Posted on February 19, 2009
*

Den pågående finanskrisen

Når krise inntreffer er det store utslag, som blir avgjort av valg man treffer. Treffer man bunn med sin investering kan man tjene store summer etterpå.

Jeg har bitt meg merke i 2 overskrifter om Obos :

25. April 2008:
Markedet stuper -Obos gambler


Selv om det er null interesse for kjøp av nybolig, gir Obos full gass på Østlandet.
Vi har økonomisk ryggrad til å ta denne risikoen. Flesteparten av disse boligene står ikke ferdig før i 2009, og vi har tro på at markedet snur, sier Obos-sjef Åge Pettersen (bildet øverst) til avisen.
19. februar 2009:
Desperat pengejakt i Obos
Obos-sjef Martin Mæland har vært på desperat pengejakt. En akutt pengeknipe tvinger Obos til kjøpe seg inn på eiersiden i Terra Gruppen, skriver Dagens Næringsliv.
Uten tilgang på flere milliarder kroner ville Obos-systemet fått alvorlige problemer allerede til påske, innrømmer toppsjef Martin Mæland.
Comments (View)
Posted on February 17, 2009
*

Cucumber + Ironruby #4

Da er vi klare til å kjøre eksemplet som demonstrerer det vi skal bruke for våre egne tester.

Men vi mangler fremdeles noen gems:

gem install watir firewatir win32-api windows-pr

Deretter åpner vi cmd-prompten vår, og skifter til katalogen:
Ruby\lib\ruby\gems\1.8\gems\cucumber-0.1.16\examples\watir

(Merk,om du har en annen versjon av ruby/cucumber skift ut versjonsnummeret).

I denne katalogen kjører vi vår første test med
cucumber features
eller
icucumber features

Her kjører vi en klartekst akseptansetest, som tester ved å kjøre google og kontrollere resultatet.


Feature: Search
In order to learn more
As an information seeker
I want to find more information

Scenario: Find what I'm looking for
Given I am on the Google search page
When I search for "cucumber github"
Then I should see a link to "Ruby on Rails — cucumber — GitHub":
http://github.com/aslakhellesoy/cucumber/wikis/ruby-on-rails


Dersom testen blir rød er en indikasjon på at vi ikke er ferdige med leveransen vår enda. Som du ser er den også på engelsk. Noe vi skal jobbe videre med, siden vi vil ha det på norsk.

Men dette er en god demotest siden den fjernstyrer IE. Det er nokså kult å gå fra en test skrevet i kalrtekst som her, som så fjernstyrer IE, og sjekker resultatet. Før den så synliggjør resultatet med en rød eller grønn test tilbake til oss.

I de neste postene skal vi nærme oss målet:
Norske tester, som tester vår egen kode i .Net verden.

Comments (View)
*

Cucumber + Ironruby #3 og farger for windows

Selv med gode innspill fra Aslak Hellesøy om hvordan å få farger ved kjøring av cucumber med ironruby ser det ut til å bli fargeløst inntil nå.

Første forslag er å bruke ansicon, og så kjøre icucumber vha ansicon.
@"C:\ironruby\build\debug\ansicon.exe" "C:\ironruby\build\debug\ir.exe" "c:\ruby\bin\cucumber" %*
Men det ble grått.

Forslag 2 var å laste ansi.sys som i gamle dagers dos, med egen konfigurasjon for command.com. Dette er beskrevet i en forumpost (link).

Forslag 3, var å kjøre icucumber i cygwin. Men også det ble grått :)

På den positive siden: cucumber virker med ironruby i cygwin.

Om noen klarer dette bedre enn meg så si fra asap. Jeg legger det dødt så lenge.

Comments (View)
Posted on February 15, 2009
*

Forberedelser til å bruke cucumber og rspec til å teste .net med ironruby #2

Vi er enda ikke ferdige med å sette opp miljøet slik jeg vil for å jobbe med cucumber.

Vi kommer til å bruke cmd endel så vi vil ha et bedre cmd-vindu.
Jeg vil ha Consolas som standard font, så jeg redigerer registry for å tillate dette:

reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont” /v 00 /d Consolas

(fra Jeff Lynch)

Et standard cmd vindu er 80x25 tegn, dette er for lite.
Vi høyreklikker på tittellinjen og velger defaults, og endrer dette på fliken for layout til 120x50, med en buffer på 500 linjer.

Det visuelle i grønt og rødt når man kjører tester, er veldig sterkt. Så vi må installere en siste gem vi trenger for å få farger i output fra cucumber:
gem install win32console

Ved kjøre eksemplet fra
C:\Ruby\lib\ruby\gems\1.8\gems\cucumber-0.1.16\examples\i18n\en>
med kommandoen
cucumber features
får vi følgende skjermbilde:

Da er vi klare for å begynne med våre egne tester i neste post.

Disclaimer:
Det viste seg at jeg ikke fikk farger i output i ironruby enda. Bare ruby.

Comments (View)
Posted on February 12, 2009
*

Forberedelser til å bruke cucumber og rspec til å teste .net med ironruby

Jeg har startet forberedelsene til en presentasjon om testing i .Net med cucumber, rspec og ironruby. Dette er da post 1 i rekken av poster for å forberede dette. Informasjonen er satt sammen fra flere kilder og jeg startet med Aslaks post om samme tema.

Jeg trenger subversion, da kan du laste ned tortoisesvn så har du både cmd-versjon og gui.

Deretter installere ruby one-click installer, for å få ruby og MRI.
I et cmd installerer vi de gems vi trenger ved å kjøre gem install :

gem install cucumber rspec
gem install pathname2
gem install rake

Vi må ha ironruby installert, og vi laster ned siste versjon fra subversion. Denne kommandoen laster ned ironruby til en ny katalog der du står i cmd, kalt ironruby. Plasser den der du vil ha den før du henter ned siste versjon:
svn checkout http://ironruby.rubyforge.org/svn/trunk ironruby

Og kompilerer det:

cd ironruby
rake compile

Når man henter ned cucumber får man en batfil for å kjøre cucumber (cucumber.cmd), vi lager oss en ny som heter icucumber.bat som kjører cucumber med ironruby istedenfor vanlig ruby:

@ECHO OFF
REM This is to tell IronRuby where to find gems.
SET GEM_PATH=c:\ruby\lib\ruby\gems\1.8
@"C:\ironruby\build\debug\ir.exe" "c:\ruby\bin\cucumber" %*

Plasser filen et egnet sted som f.eks. C:\ruby\bin

Da kan jeg kjøre:
icucumber --help

Vi trenger god håndtering av norske tegn. Vi vil jo skrive våre akseptansekriterier på norsk. Så for å få vist norske tegn i cmd endrer jeg codepage til 1252: chcp 1252
og endrer registry slik at det blir permanent:

Start->Run->regedit
Go to [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
And change the "OEMCP" value to "1252"
(ref: http://codesnippets.joyent.com/posts/show/414)
Da er vi klare til å starte med tester som blir tema i neste post.

Comments (View)
Posted on February 5, 2009
*

Twitter

Etter å ha vært skeptisk lenge har jeg begynt med twitter. Jeg forstod bare ikke poenget, men tenkte nå må jeg vel prøve likevel.

Det har vist seg å være veldig nyttig. Man finner ut så mye mer med twitter. Så får man prøve å bidra med sine egne små tweets. Første dag på twitter endte med et kjøp av en bok om bdd,rspec, og cucumber: http://tr.im/etg2

Via twitter fant jeg også ut at det fins bedre alternativer til tinyurl.com. Som tr.im, som er enda lettere å huske til og med.

Jeg er AH74 på twitter.

Comments (View)
Posted on January 30, 2009
*

Return of the joker

Etter et par dager med bare psykologisk krigføring
(glising og mistenkelig oppførsel :))

ble trinn 2 iverksatt.

En enkel dings fra thinkgeek, som skiftet capslock av/på ca hvert 20. sekund hadde en passelig low profile effekt på offeret :)

Hans Jørgen begynte å lete gjennom pcen etter mistenkeligeprosesser som eom kjørte :) God underholdning for lite effort!

Det tok ca 4 timer før han avslørte den og neste trinn var da å slå på neste feature med tilfeldige tekster som skulle komme av seg selv.

Egentlig fantastisk. Windows lar deg koble til slike med bare en liten balloonadvarsel som automatisk blir borte etter noen sekunder.

Så offeret trenger ikke være lenge borte fra pc-en for at det skal funke :)
Og i dagens usb-virvar bak pcer kan man jo gjemme de mange steder.
Anbefales sterkt!

Comments (View)
Posted on January 26, 2009
*

Batman


I hans jørgen sin blogpost “The Joker” får vi en oppsummering av de straffetiltak han implementerte etter min lille spøk med skjermen hans.

Min lidelse var betydelig mer langvarig etter hans oppskalerte respons, men den slo også litt tilbake:

  • Sabotasjen av tastaturet virket ikke (dvs tastaturet virket som det skal enda).
  • Pulten stod ikke høyere enn at jeg fikk til å jobbe, og jeg skjønte at noe var galt, så jeg hevet det ikke mer.
  • Annoy-a-trons irriterer tydeligvis andre mer enn meg :)
  • Og etter at jeg “fiksa” pulten min, var kontrollene for å heve og senke pulten død.
Så får vi prøve å plassere skyld, men etter en halvtimes skruing måtte vi begge konstatere at det ikke gikk. Vi måtte låne strøm og kontroll fra nabobordet for å få senket mitt til normal stilling.

Pult-trikset var skikkelig bra det, synd at det skled ut på slutten :) :

Den siste inverteren fant jeg ikke enda, så vi får ta HJ på sitt ord og følge med om den finner meg! Men skal den finne meg bør den vel være i stolen ?

Siste ord er nok ikke sagt i denne soga. Min ene spøk ble besvart med 3. Jeg har allerede rukket å bruke min paypal.
Comments (View)
follow me on Twitter