Dette indlæg er alene udtryk for skribentens egen holdning.

Vi er alle testere

21. april 2015 kl. 08:257
Artiklen er ældre end 30 dage
Manglende links i teksten kan sandsynligvis findes i bunden af artiklen.

Test er en disciplin, der desværre ikke har særlig høj social status. Jeg tænker, at det er fordi, at ordet “test” er så almindeligt i vores sprog, og at vi forbinder det med ting, vi alle gør i vores hverdag.

Vi tester

  • om maden er spiselig før vi serverer den for vores gæster.
  • at temperaturen på badevandet er behagelig inden vi springer i.
  • at farven, størrelsen og mærket på de nye badehåndklæder svarer overens med konens forskrifter.

Det foranleder de fleste til at tænke, at test ikke er en særlig disciplin, men noget som alle kan udføre. Og selvom jeg meget gerne ville sige, at de tager fejl, så kan jeg ikke. De har ret.

Alle kan teste.

Artiklen fortsætter efter annoncen

Og de kan også synge og danse.

Bare ikke alle med lige stor elegance og kunst.

Test er både et håndværk og en kunst

Medfødt talent, træning, studier og indlæring af teknikker gør en stor forskel på, hvorvidt dit sangtalent rækker til at synge for dig selv under bruseren, eller om du kan underholde et betalende publikum på en scene.

Test er ingen undtagelse. Det er et fag, der kan udføres af glade amatører, og det er et fag, der kan dyrkes professionelt med lidenskab og passion. Test er ikke kun en medfødt evne. Det er også et håndværk og en kunst.

En ekspedition ud i det ukendte

I softwareudvikling er test en disciplin, der udføres på mange niveauer. Test kan udføres som samlebåndsarbejde, hvor en studentermedarbejder kontrollerer, at features virker som beskrevet i specifikationen. Det kræver ingen særlige forudsætninger udover at kunne sammenligne to ting.

Artiklen fortsætter efter annoncen

Men test kan også udføres som en ekspedition ud i det ukendte, hvor testeren ved hjælp af kritisk tænkning opstiller eksperimenter for at opnå ny viden om systemet under test.

Det kræver viden og erfaring og en god portion opfindsomhed at finde de scenarier, ingen andre har tænkt på i udviklingsprocessen, at opnå mest mulig information om systemet og afdække kritiske sider med de begrænsede ressourcer, der er afsat til test. Kort sagt få mest mulig værdi for pengene. 100% testdækning er aldrig en mulighed, så det gælder om intelligent prioritering.

Testere er opdagelsesrejsende, der afsøger ny viden om det ukendte, og som formår at formidle deres opdagelser, så det giver værdi.

Vi er alle testere, men vi er ikke alle trænede i at bruge vores naturlige nysgerrighed og intuitive evner struktureret og effektivt eller kreativt.

Emner for bloggen

Jeg vil gerne i mine fremtidige blogposts diskutere synet på test, give indblik i en testers verden og de mange metoder, teknikker og værktøjer, der er indenfor dette felt.

Jeg vil gerne diskutere, hvad en god tester kan bidrage med, og hvilken rolle test spiller i udviklingsprocessen. Mit fokus vil være på agil test og testautomatisering, men vil også omhandle andre emner indenfor test.

Inden jeg giver mig i kast med at skrive min næste blogpost, vil jeg gerne spørge dig:

  • Hvad forbinder du med ordet test?
  • Hvad er dit syn på testere?
  • Og hvilke slags testere har du mødt?
7 kommentarer.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
7
26. april 2015 kl. 02:06

Tak for jeres kommentarer. Dejligt at høre jeres tanker om test, som på mange måder viser diversiteten af, hvad en tester kan/skal beskæftige sig med.

Jeg synes personligt ikke at en tester bør sætte sig i respekt ved at give personlige overhalinger. For mig gælder det om at oparbejde en kultur, hvor folk arbejder sammen om at skabe god kvalitet. Testeren skal ikke være ordenspoliti, men en service, der hjælper teamet med at indarbejde gode vaner og som jævnligt tager temperaturen på projektet.

Er helt enig i citatet fra Dijkstra om at en test viser tilstedeværelsen - og ikke fraværet af fejl. Jeg er dog ikke helt enig i, at gode testere nødvendigvis også er gode programmører. Det afhænger meget af typen af fejl, der skal findes om programmeringsevner er et must. At teste alle mulige kombinationer af input/output er kun en form for test, og der er ikke noget der siger, at den form for test finder de fejl, der er mest forretningskritiske.

Henrik har flere gode pointer. Ligesom Jesper siger, er der fordel i at finde fejl så tidligt som muligt. Det aller billigste sted at finde fejl - er før de introduceres. Testere kan derfor med fordel inddrages så tidligt i processen som muligt - feks. i kravfasen, hvor “ukrudtet” stadig kan nå at blive luget ud, inden det danner et stort uoverskueligt rodnet, der koster mange flere ressourcer at få gjort kål på senere i processen.

Dygtige testere kan meget mere og andet end at verificere/sætte kryds i checkboxe for hvorvidt en feature er opfyldt. De kan, som Henrik beskriver, stille spørgsmål til selve forudsætningerne for opgaven. Men fordi der ikke er nogen formel uddannelse for testere, så er det en meget broget flok, der kommer ind i branchen.

Kunne være interessant at høre om der er nogen, der har gode bud på, hvad der kan gøres for at hæve niveauet.

6
23. april 2015 kl. 05:46

Det afhaenger af situationen hvad jeg forbinder med test, men normalt vil jeg taenke paa det som kritisk stillingtagen til formaal, krav samt implementation. Jeg kan godt lide at dreje det tilbage til 'hvilket problem forsoeger vi at loese?, og hvorfor? Hvad er formaal?', og saa tage den derfra; at putte rubberstamp paa en 5 liniers diff er for mig ligegyldigt, det skal gerne goere en forskel. (hvilket diff kan goere, og saa er det okay at bruge tid paa)

Som en der identificerer sig som tester, saa kan det hidse mig lidt op naar andre tolker det som verification af at tingene af okay. Udover det ikke er saerlig sjovt, saa goer det at fokus saettes paa kontrollen af andre personers arbejde; hvilket ikke er en oenske situationen ift. rent faktisk at arbejde med andre og der at fungere i en socialsammenhaeng - og derudover er man doemt til at fejle den dag hvor man som team releaser en bug.

Det jeg er begyndt at pitche/sige er at jeg hjaelper andre med at fejle hurtigt, saa vi hurtigere kan faa lavet de korrekte ting og bruge tid og penge paa det der aabner nye muligheder.

Jeg har vaeret til en del tester meetups, og jeg er nok generelt skuffet over det tekniske niveau; vi har som faggruppe der en udfordring hvis disciplinen skal ses som relevant.

En virkelig god en jeg engang har moedt var hvor personen havde en 'tirade' over en test vi havde stillet op ifbm med job interview. Det var den klassiske med at taelle antal ord i en tekst, og endeligt var der en kandidat der saa udover memory, koerselstid, dictionaries, filer blabla - og taenkte paa den leksikale analyse ift. hvad et ord er - i forskellige kontekster og sprog, det var noget jeg bevidst havde haabet paa qua formuleringer i spoergsmaal - og har var der er som hoppede paa - og gav en laengere forklaring paa hvorfor det at splitte paa mellemrum, punktum, ! o.l var dumt (taenk et.al, L'Oreal, l'ecole, Yahoo! etc) - det gjorde mig glad, da det netop var kravende som personen paapegede fejl i (i.e. loes formulering af hvad et 'ord' er, og kontekst omkring det).

5
22. april 2015 kl. 16:19

Først og fremmest, så forbinder jeg ordet test med kvalitet. Dijkstra sagde i 1969 "Testing shows the presence, not the absence of bugs", og det er jo meget rigtigt. Vi tester for at finde fejl i systemer så tidligt som muligt. For det kan være temmeligt dyrt at rette fejl senere. Men vi tester ikke for at vise vores programmer er korrekte. Jeg tror at gode testere intuitivt forstår dette og derfor konstruerer deres plan således de finder flest mulige fejl på færrest tid.

Testere er mindst lige så forskellige som programmører. Måske endda mere.

Rigtigt gode testere er ofte rigtigt gode programmører! Hvis du skal finde komplekse fejl, så er det oftest fejl der kun viser sig under meget specifikke forhold. Her skal der typisk en del programkode til for overhovedet at provokere fejlen. Denne type fejl opstår måske først efter 30-40 påvirkninger af systemet, og den slags kan ikke findes manuelt.

En del af mit arbejde handler om at finde fejl, og dertil benytter jeg ofte værktøjer hvor man genererer tilfældige tests ud fra monte-carlo processer. Så lader man systemet køre natten over, udfører et par millioner tests og får som oftest også 90%+ dækning. Derefter finder man en delmængde af millionerne der giver samme dækning, og de 20-30 tests bruger man så når man udvikler. Formelle metoder såsom model-checking kommer også hurtigt i spil, netop for at finde usandsynlige fejl. Specielt i systemer med distribution og samtidighed.

Jeg har mødt testere hvis rolle var at udføre et kæmpe ark i hånden og være øjnene der fangede en pixelfejl på side 3. Eller testeren der forstod systemet intuitivt og kunne finde logik der ikke hang sammen efter en rettelse. Jeg har mødt udviklere, hvis produkt var et kæmpe test-harness til et stykke software. Jeg har også mødt en del akademikere, hvis område er at lave værktøjer til at teste software med, typisk med en formel tilgang til fejl i software.

4
22. april 2015 kl. 15:13

Hvad forbinder jeg med ordet test? Det har jeg vist aldrig filosoferet over, men det er at undersøge, om et system (eller hvad man nu tester) svarer til specifikationerne, til forventningerne (det er ikke altid det samme), til ens egne forventninger som udvikler, er hensigtsmæssigt, ikke forvirrer brugere unødigt, og i øvrigt "ser ordentligt ud". Jeg har sikkert glemt noget vigtigt. Hvad er mit syn på testere? Respektfuldt! Nogle er skrappere end andre (og skrappere kan også forstås på flere måder, men her skal ikke fortælles anekdoter). I øvrigt kommer vi alle til at teste, der hvor jeg arbejder. Ud over at vi lige prøver vores egne ændringer af, inden de sendes videre, så har vi også "testdage", hvor vi alle tamper løs på systemerne. Vi sidder sammen, så tvivlsspørgsmål kan afklares hurtigt. Og i øvrigt lærer vi alle en masse. Hvilke slags testere har jeg mødt? Jeg har mødt en (en bruger), der ringede straks jeg havde sendt en ændring ud. Hun havde ikke læst ændringen ind, men hun havde på fornemmelsen, at der var en detalje, jeg nok havde glemt. Skræmmende og imponerende, for naturligvis havde hun ret. En anden nød at "sætte sig i respekt" over for grønne programmører. Hun var hamrende dygtig, men ret barsk. Så jeg lagde en lille "orientering" ind i modtagelsen af nye programmører, så de ikke (som mig) skulle sidde og snøfte efter en verbal overhaling. De var forberedt. Men resten har været meget omgængelige. Og de kommer godt rundt efter en rettelse, også der hvor man som udvikler ikke har tænkt på problemer.

3
21. april 2015 kl. 13:13

Enig! Som ved alle andre håndværk, så er passion og kompetencer ret afgørende for resultatet.

Men i det daglige "glemmes" ret tit forudsætninger for god test.

  • Metode. Der giver en vis forudsigelighed for aftager og PL'er. Herunder forretningsmæssig prioritering af test cases, test af krav, spec, osv.
  • Tilstrækkelig test basis (grundlag), så vi undgår: "jeg tror ..", "jeg synes ....", ".. det er nok ..." under kodning og test cases
  • Er løsningen testbar. Delafleveringer sker (også) sådan at test kan påbegyndes tidligt. Testdata og miljøer er en del af leveringen.
  • Virksomhedens egne krav til afleveringen er naturligvis også en del af testen
2
21. april 2015 kl. 12:01

Jeg ser ikke noget problem i at lægge test ud til forbrugerne. Men alt med måde selvfølgelig. Det er først og fremmest en forretningsbeslutning, hvorvidt man vil tage risikoen for, at der er alvorlige fejl i produktet eller om man vil gå med livrem og seler.

Idag hvor udviklingen går så stærkt, er det ofte vigtigere at være først på markedet med sit produkt end at være bedst på markedet. Derfor giver det mere mening at lancere et minimalt produkt og så lancere opdateringer/forbedringer løbende - end at vente til man har et fuldt funktionsdygtigt og fejlfrit produkt.

Men oplevelsen af at mange produkter virker halvfærdige eller ikke testet ordentligt, er nok i lige så høj grad fordi det er blevet langt nemmere for gud og hvermand at udvikle apps, mv. og distribuere dem på nettet, og der i den store mangfoldighed og væld af nye virksomheder, der er kommet til, er en stor forskel på modenheden i håndtering af test.

1
21. april 2015 kl. 10:45

Hvad synes du om at lægge test ud til forbrugerne? Jeg synes der er sket et stort skred, fra at produkter var rimeligt testede, og uden behov for opdateringer så ofte, til at vi forbrugere er blevet testere, både på hardware og software, og får halvfærdige produkter i hånden. Er det noget I også oplever som testere?