Kategorier
Værktøj Viden om test

Testgrundlag

Når man som jeg har arbejdet med test, så bliver man med tiden klogere på, hvad der skal til for at kunne gøre et godt stykke arbejde med at få testet software, inden det sættes i produktion.

Helt grundlæggende er det vigtigt at forstå at test ikke er et mål i sig selv, men det er en støtteproces til udvikling af software (udviklingsprocessen). Det gælder uanset hvilken udviklingsmodel man har valgt i sin virksomhed, lige fra traditionel vandfaldstilgang og frem til f.eks. SAFe (Scaled Agile Framework) eller LeSS (Large Scale Scrum).

En af de væsentlige input til test er det som vi testere kalder Testgrundlag eller Testbasis.

Testgrundlaget er dokumentation af eller viden om produktet.

I det efterfølgende handler det primært om hvilken dokumentation der er en del af testgrundlaget. Når det handler om viden, der ikke er dokumenteret, kaldes det for orakler – det tager jeg i et andet indlæg.

Indholdet i et testgrundlag kan opdeles i følgende grupper.

Krav

Krav beskriver de ønskede funktionelle eller ikke-funktionelle komponenter eller systemadfærd.

  • forretningskrav,
  • funktionelle krav,
  • systemkrav,
  • epics,
  • user stories,
  • use cases

eller lignende arbejdsprodukter.

Design

Design specificerer komponent eller systemstruktur.

  • diagrammer eller
  • dokumenter,

der beskriver system- eller softwarearkitektur,

  • designspecifikationer,
  • kaldegrafer,
  • modeldiagrammer,
  • grænseflade-specifikationer

eller lignende arbejdsprodukter.

Implementering

Implementering af komponenten eller systemet selv, herunder kode, database metadata og forespørgsler og grænseflader.

Risikoanalyserapporter

Risikoanalyser der kan vurdere funktionelle, ikke-funktionelle og strukturelle aspekter af komponenten eller systemet.

Kvalitetsmål

F.eks. ISO 250xx eller lignende, virksomheds-standarder, branchestandarder, regulatoriske krav

Dækningskriterier

Testgrundlaget (for alle de niveauer eller typer af test, der overvejes) har målbare dækningskriterier specificeret.

Dækningskriteriet kan fungere effektivt som key performance indikatorer (KPI’er) til at styre de aktiviteter, der viser resultaterne af softwaretestens målsætninger.

Eksempel: en mobil app har en liste af krav samt en liste over understøttede enheder. Dette medfører to dækningskriterier: Krav og understøttede enheder.

Når der ikke er et testgrundlag eller et mangelfuldt testgrundlag

Når man som tester får en opgave med af få testet et stykke software, hvor der mangler f.eks. krav, beskrivelser, forretningsflows og lignende, så står man allerede to skridt bagud i forhold til at få løst sin opgave.

Der er ingen vej uden om at få fremskaffet tilstrækkelig information om softwaren og den forretning, hvor softwaren skal passe ind.

Det betyder at testeren går i detektiv-mode og prøver at opsnuse så meget information som muligt fra alle de mulige kilder, der er tilgængelige.

Min oplevelse er at den type af information, der er sværest tilgængelig, er den viden der sidder i hovedet på nøglepersoner (kaldet orakler af testere). Det næstsværeste er at have et referencesystem (også kaldet orakel) til rådighed (et system der skal erstattes med noget nyt).

For meget ofte har har nøglepersoner ikke tilstrækkelig tid til at levere informationen – sætningen “du kan bare spørge hvis du vil vide noget” kan tage modet fra selv den bedste tester. Lidt det samme med referencesystemer, hvor der sjældent er noget dokumentation og de personer der oprindeligt har fremstillet systemet er ikke længere til rådighed. Gys.

Så jeg har et meget firkantet udsagn, indrømmer jeg, men alligevel:

“Ingen testgrundlag – ingen test”.

 

Kategorier
Værktøj Viden om test

Definition of Done

Hvis du er tester eller testmanager i softwareudviklingsprojekter, så har du helt sikkert ligesom jeg stiftet bekendskab med begrebet “Definition of Done” og kender til værdien af, at bruge denne definition aktivt i projekt- eller teamarbejde.

Desværre oplever jeg stadig ledere, som siger “koden er færdig, så I kan bare teste løs”. Så gælder det om at være diplomatisk i sit svar til pågældende, for selvfølgelig er koden ikke færdig, når testen ikke er gennemført med et accepteret resultat. Eller hvad? I virkeligheden kender lederen måske ikke til Definition of Done for lige netop den del af produktet eller også er der slet ikke defineret noget.

Så her er min forklaring på begrebet “Definition of Done”:

  • ”Definition of Done” forkortes som ”DoD”.
  • DoD er en tjekliste over værdiskabende aktiviteter, der kræves for at producere software.
  • DoD er den primære rapporteringsmekanisme for teammedlemmer.
  • DoD er en kontrollerbar tjekliste.
  • DoD er ikke en statisk størrelse.
  • DoD er ikke produktkrav.

DoD er formet af virkeligheden eller den kontekst, hvor den indgår, f.eks.:

  • DoD for en feature (User Story eller Product Backlog Item eller lignende)
  • DoD for en iteration (sprint i Scrum sprog) (En samling af features udviklet indenfor en iteration)
  • DoD for en release (potentielt mulig at sætte releasen i produktion)

Når jeg skal afgøre, hvor i udviklingsforløbet at en aktivitet til DoD hører til, stiller jeg følgende spørgsmål:

  1. Kan vi udføre denne aktivitet for hver feature? Hvis ikke, så
  2. Kan vi udføre denne aktivitet for hver iteration? Hvis ikke, så
  3. Vi skal udføre denne aktivitet før vores release!

Lad os kigge på nogle eksempler på en User Story med Acceptkriterier og Definition of Done:

User Story:

Som bruger ønsker jeg at kunne resette mit password, så jeg kan komme ind på min konto, når jeg har glemt mit password.

Acceptkriterier:

Når en bruger fejler sit log-in gives der mulighed for at opdatere password.
Når password resettes med en ukendt e-mail-adresse, skal der ikke sendes en e-mail og der skal gives besked om at e-mail-adressen er ukendt.
Når password resettes skal det nye password bekræftes.

Definition of Done:

  1. Unittest gennemført
  2. Koden er refaktoreret
  3. Koden er kommenteret
  4. Unittesten er automatiseret med en kodedækning på min 70%
  5. Feature’en er testet af teamet i samarbejde med PO
  6. Dokumenteret (just enough)
  7. Dokumentationen er reviewed
  8. Ikke-funktionelle test er gennemført
  9. Regressionstest gennemført som afsluttende test

Blot for at slå det helt fast: I dette eksempel er den pågældende User Story først helt færdig, når alle aktiviteter på DoD er gennemført!

I eksemplet har jeg brugt en User Story, men jeg kunne også have betragtet et sprint eller en release, hvilket vil indeholde andre aktiviteter, som i den sammenhæng skaber værdi at gennemføre.

Det er vigtigt at have Definition of Ready på plads inden man overhovedet begynder på arbejdet. Jeg ved godt, at det her er i omvendt rækkefølge, Definition of Ready er først, og jeg vil ikke gå i detaljer med ovenstående eksempel. Jeg vil blot dele den tjekliste, jeg ofte anvender, når jeg arbejder med Definition of Ready:

Definition of Ready:

  1. Indeholder alle tre felter (hvem, hvad og hvorfor)
  2. Forstås af udviklingsteamet
  3. Har et målbart udbytte
  4. Beskriver en funktion som ikke indeholder en løsning
  5. Opfylder INVEST-kriteriet (Independent, Negotiable,
  6. Valuable to Customer, Estimatable, Small, Testable)
  7. Har acceptkriterier som teamet forstår
  8. Definerer brugeren som en rolle
  9. Identificerer ethvert support-dokument som er relevant
Kategorier
Værktøj Viden om test

Testing Mnemonics

“A mnemonic device is a mind memory and/or learning aid. Mnemonics rely on associations between easy-to-remember constructs which can be related back to the data that is to be remembered.”, Wikipedia.

The following is a list of software testing related mnemonics. This is something I have collected from different testing resources around the testing community. I try on a regular basis to keep them updated.

Kategorier
Værktøj Viden om test

Test Management tool

Når jeg arbejder med test i projekter er gode værktøjer vigtige for hvor effektivt jeg selv kan arbejde, men specielt også for hele test teamets success med at opsamle den dyrebare information der findes under test processen.

Mit favorit test management værktøj for tiden er Testrail fra Gurock.com. Efter min mening er det et fornuftigt kompromis mellem tilgængelighed, integrationsmuligheder, funktionalitet og pris.

Kategorier
Værktøj Viden om test

Skab værdi med test

Test af software skal kunne betale sig

Min overordnede tilgang er at omkostningerne til testaktiviteter under udvikling af ens software applikation skal stå i forhold til de risici for tab der kan være, hvis applikationen svigter under drift.

Det er her det gælder om at finde det rette “sweet spot”: Hvor meget vil man investere i forebyggelse af fejl og svigt inden applikationen sættes i drift kontra hvilke omkostninger man kan tåle ved svigt, når forretningen er blevet afhængig af applikationens funktionalitet.

Forklaring på “Sweet spot”-begrebet

A = B+C: (”Sweet spot”) Omkostninger ved kvalitet; Summen af udgifter til forebyggelse/opdagelse af fejl og udgifter ved svigt.

Omkostninger ved kvalitet versus kvalitetsniveau

B: Udgifter til forebyggelse/opdagelse af fejl;

  • Kvalitetsstyring
  • Reviews
  • Statisk test
  • Dynamisk test
  • Teststyring

C: Udgifter ved svigt;

  • Analyse af forstyrrelser
  • Rettelse af fejl
  • Gentest og regressionstest
  • Finansielle tab (f.eks. tab af markedsandel, bøder, produktionstab, m.m.)
  • Image tab

Testmetoder

Test skal sammen med kunden forberedes og gennemføres på baggrund af løbende risikovurderinger helt fra forretningsniveau, hvor produktet med tiden forventes at fungere, og ned til de enkelte funktioner der er indlejret i og udgør det samlede produkt.

Test skal udføres i hele produktets levetid, fra vugge til grav, i en veltilpasset målestok, med et defineret formål og efter fornuftige processer.

Nogle organisationer har en generel testmetode, som i et vist omfang er fleksibel mht. indhold, men kan være strengt kontrolleret af dikterede processer. Det kan have sin relevans at teste sit produkt efter en sådan metode, hvis man ønsker at sende en raket til Mars med mennesker ombord eller hvis man har et farmaceutisk præparat til brug på mennesker. Der kan i stedet for menneskeliv være store værdier på spil, som man vil undgå at tabe, f.eks. i en bank eller en pensionsfond.

I disse tilfælde kan en generel testmetode efter en kendt model, måske endda reguleret ved lov, være en hensigtsmæssig fremgangsmåde for at imødegå uventede overraskelser.

I andre organisationer kan test efter en tilpasset eller skabt-til-formålet testmetode være tilstrækkeligt.

Formålet med at teste

Hvert produkt har sin helt egen karakter der defineres af en række egenskaber. Det medfører samtidigt at den test man ønsker at udsætte produktet for er nødt til at være tilpasset til formålet.

Det vigtigste formål med test er at man skal indsamle informationer nok til at kunne evaluere produktet og samtidigt nok til at lære produktet tilstrækkeligt godt at kende.

Derfor skal der ikke testes for lidt for så kan der komme for mange overraskelser senere. Der skal heller ikke testes for meget, da omkostningerne kan blive højere uden at man lærer mere om produktet og tiden indtil produktet kan tages i anvendelse kan blive længere end planlagt.

Værdien det giver at have en testmanager i hele projektet

Testmanagerens indsats sikrer en kvalificeret og struktureret håndtering af testaktiviteterne. Testmanageren etablerer en løbende fokusering på de kvalitetsmæssige egenskaber af produktet i projektet.

Testmanageren leverer informationer til ledelsen der gør det muligt at træffe de bedste beslutning i den givne situation ud fra en kvalitativ og objektiv status på produktets tilstand.

Testmanageren styrer testforløbene fra projektets start til aflevering af det endelige produkt og bidrager til at ledelsen kan fokusere på at styre projektet sikkert i det ønskede mål.

Case: transitionsprojekt

Jeg var projektdeltager med titel af Test Manager på et transitionsprojekt for en kunde hvis formål var en total flytning af eksisterende it-systemer og kunde- og virksomhedsdata til en ny software- og hardware platform hos en ny hosting partner. Projektet havde en forventet levetid på 18 måneder og et budget på 18 mio DKK.

Projektet endte med at bruge i runde tal ca. 1 mio DKK i hele projektets levetid på at forberede og gennemføre test løbende på delleverancer. Samtidigt havde projektet hensat ca. 2 mio DKK til reserver for det tilfælde at delleverancerne var fejlbehæftede, mangelfulde, forsinkede eller lignende.

Ud af 24 delleverancer blev der afleveret 24 til tiden. Der var ingen fejl eller mangler som forhindrede ibrugtagning af kunden og kunden oplevede efter ibrugtagningen få og mindre problemer, som kunne løses indenfor samme dag.

Projektet blev ikke pålagt dagbøder eller andre reklamationer. Kunden havde ingen produktionstab eller datatab.

Det var en god forretning at teste i projektet.