in3240

0.0(0)
studied byStudied by 15 people
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/169

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

170 Terms

1
New cards

Hvorfor er testing nødvendig?

Software systems er en viktig del og en essensiell del av livet.

Hvis et system ikke fungerer slik det skal kan det lede til:

  • frustrasjon
  • tap av penger
  • tap av business reputation
  • skader / død

VI MÅ FOREBGYGGE DE FEILENE VI KAN, og det kan vi gjøre med testing

2
New cards

Defects/defekter vs Failures/feil

Defekter:
Problemer i koden som potensielt kan skape en failure/feil.
=bugs, issues, errors.

Failures/feil:
Problemer som oppstår når SW ikke oppfører seg som forventet. Failures kan skje pga defeker/bugs men kan også oppstå på grunn av feil bruk eller eksterne faktorer.

3
New cards

Grunner til software defekter

Menneskelige faktorer:

  • Tretthet
  • Mangel på trening
  • Mangel på forståelse
  • Mangel på interesse
  • Tidspress
  • Kompleks kode
  • Mange system interaksjoner
  • Forandret teknologier

Andre miljø faktorer

Alle disse faktorene produserer defekter i koden. Defekter kan resultere i svikt av/feil i SW systemet.

4
New cards

Rollen til testing i SW

I alle stadier av produkt life cycle:

  • planlegging
  • development
  • vedlikehold
  • operations

Brukes for:

  • fange defekter tidlig
    = redusere risiskoen av at problemer oppstår under operations
    = reduserer repair kost, kosten for å reparere vokser eksponensielt for hvert steg i syklusen
  • sjekker om SW møter kravene (legal, standard)
  • lære om systemet
5
New cards

Testing og kvalitet

Testing måler kvaliteten til SW basert på defekter funnet

  • funksjonelle aspekter
  • ikke-funksjonelle aspekter (reliability, usability, portability)

Testing skaper tillit til kvaliteten til SW-en

  • hvis den er testen ordentlig og et minimum av defekter har blitt funnet

Testing gir oss lærdom til fremtidige prosjekter

  • Forstå kjerne årsakene av defekter = normal prosesser kan forbedres i framtiden
6
New cards

Hvor mye testing?

Basert på:
Level av risk (teknisk risk, business risk. Risk = sannsynlighet + konsekvensene)
Prosjekt begrensninger (tid, budsjett)

Det er umulig å teste alt og finne alle defekter!
Viktig å prioritere riktig, og teste de riktig tingene for å gi tilstrekkelig informasjon til videre avgjørelser.

7
New cards

Hva er testing?

Prosessen av testing alle SW life-cycle aktiviteter:
Både statisk og dynamisk testing
i sammenheng med planlegging, forberedelse og evaluering
av software produktene og relaterte produkter for å avgjøre om kravene er tilfredstilt, demonstrere at de passer til formålet sitt og fange opp defekter

8
New cards

Ulike fokus under testing

Avhengig av målene for testprosessen kan testingen fokuseres på:

  • å bekrefte at SW-systemet oppfyller kravene
  • forårsake så mange feil som mulig == finne feil/forebygge feil
  • kontrollere at det ikke har blitt introdusert defekter under endringer
  • vurdere kvaliteten på SW == skape tillit til kvalitetsnivået.
9
New cards

The seven test principles

P1: Testing shows presence of defects / Testing viser tilstedeværelsen av defekter
P2: Exhaustive testing is impossible / Fullstendig testing er umulig
P3: Early testing / Tidlig testing
P4: Defect clustering / defekt klynge
P5: Pesticide paradox / Pesticid paradokset
P6: Testing is context dependent / Testing er kontekstavhengig
P7: Absence-of-errors fallacy / Feilslutning om fravær av feil

10
New cards

Test principle 1

P1: Testing shows presence of defects/ Testing viser tilstedeværelsen av defekter

Testing kan vise forekomst av defekter, MEN kan ikke vise at defekter ikke er der.

Testing kan redusere sannsynligheten for defekter, men er ikke bevis for at programmet er defektfritt.

Hvordan bruke dette prinsippet:
Være bevisst over at systemet fortsatt kan ha defekter gjør at vi er mer ydmyke = lage feilrapportering system for brukere, være klar for å rette opp i feil som kommer underveis

11
New cards

Test principle 2

P2: Exhaustive testing is impossible / Fullstendig testing er umulig

Testing av alt er ikke mulig/ikke realistisk (unntatt i noen spesifikke saker). I store programmer skjer det kombinatorisk eksplosjon, antall kombinasjoner som kan oppstå vokser eksponentielt slik at det ikke lenger er mulig å teste for hvert eneste tilfelle.

Hvordan bruker dette prinsipper:
Være bevisst på dette, dermed må vi prioritere basert på risiko og andre faktorer. I tillegg kan vi velge testcases som kan gi oss ganske god og omfattende testing.

12
New cards

Test principle 3

P3: Early testing / Tidlig testing

Testing aktiviteter bør starte så tidlig som mulig i SW eller system utvikling life cycle og burde være fokusert på definerte mål

Hvordan bruke dette prinsippet?
Starte å teste tidlig, og ha god testing underveis hele tiden. Tidlig innsats er gull verdt

13
New cards

Test principle 4

P4: Defect clustering / Defekter klumper seg sammen

Et lite nummer av moduler inneholder mesteparten av defektene oppdaget under testing før utgivelse.
Hvorfor? samme omstendigheter (samme utvikler, samme fase under tidspress) + følgedefekter, defekter genererer nye defekter

Hvordan bruke dette?
Hvis man finner en defekt et sted bør man teste dette området enda mer for å finne andre defekter. Konsentrer der man har spor å følge enn å søke i hele programmet

14
New cards

Test principle 5

P5: Pesticide paradox / Ugressmiddel paradokset

Hvis den samme testen er repetert mange ganger, vil det samme settet med test cases slutte å finne nye bugs.
For eksempel første middel dreper de første bugsa men nå er det nye som tåler dette middelet, dermed vil ikke det ha samme effekt lenger og man må bytte metode.

Hvordan bruke dette prinsippet?
Vi kan lures til å tro at det ikke lenger er defekter der, men det er bare testen vår som ikke lenger finner defekter dermed må vi:
revurdere test caser ofte, og nye og forskjellige tester må skrives for å undersøke samme sted

15
New cards

Test principle 6

P6: Testing is context dependent / Testing er kontekstavhengig

Hvor mye man tester, hvordan man tester, krav til testing er alt avhengig av konteksten SW utvikles (hvor stor risiko det har, hvem skal bruke produktet, hva er produktet, hvor strenge krav er det til feltet)

Hvordan bruke dette prinsippet?
Vite hva man utvikler og konteksten, teste deretter.
For eksempel en sikkerhets-kritisk software vil ha strengere teste regler enn et skoleprosjekt der målet er å lære å programmere.

16
New cards

Test principle 7

P7: Absence-of-errors fallacy / Feilslutning om fravær av feil

Å finne og fikse defekter hjelper ikke hvis software systemet ikke tilfredsstiller behovene og forventningene til brukerne

Hvordan bruke dette?
Finne ut om det vi lager faktisk vil bli brukt og nyttig. Er ikke vits å levere et feilfritt system som ingen trenger eller vil ha. Acceptance testing! Usability testing!

17
New cards

Testing aktiviteter

  • Planlegging (plan the testing)
  • Kontroll (control that we are following the plan / plan is working)
  • Analyse ( choose what should be tested, the scope)
  • Design ( design of test. what is the input and output of the test)
  • Implementasjon ( implement the test design)
  • Utførelse (do the tests)
  • Ferdigstillelse (sjekke resultater, evaluere exit criteria, rapportere)
18
New cards

Test prosess: Planlegging og kontroll

Lage en plan: hva, hvordan, når og hvem?

  • scope, mål og risk analyse (avgrense hva vi skal fokusere på, bruke mål og risk analyse for å prioritere)
  • test nivåer og typer som vil bli brukt (unittesting, integrasjontesting, systemtesting, brukertesting)
  • dokumentasjon som vil bli produsert (hvor formelt er det)
  • alloker ressurser for forskjellige test aktiviteter
  • lage tidsplan for implementasjon, utførelse og evaluering

Kontroll og tilpass planleggingen for å reflektere ny info og nye utfordringer under prosjektet

19
New cards

Test prosess: Analyse og design

Review test basis:

  • krav
  • produkt arkitektur
  • produkt design
  • grensesnitt
  • risk analyse rapport

Analyse: generelle test mål er gjort om til test conditions(forhold), noe som kan testes.
Et test forhold: sjekke innlogging informasjon på en pc, dette må deles inn i mange ulike tester igjen fordi denne aktiviteten inneholder mye

Design:

  • test caser (et test forhold kan lede til mange test caser)
  • test miljø (ha riktig miljø for å utføre testen)
  • test data (mange typer input typ)
  • create tracebility (en forbindelse fra kravene til de aktuelle testene og tilbake)
20
New cards

Test prosess: Implementasjon og utførelse

Implementasjon:

  • gruppere tester inn i scripts
  • prioritere scripts
  • forberede test oracles (forventet svar! eller vite hva som er feil innenfor en ramme)
  • skrive automatiske test scenarioer

Eksekvering:

  • Kjøre testene og sammenligne med oracles
  • Report hendelser
  • Repeter test aktivitetene for hver korrekt feil
  • Logge utfallet av test eksekveringen
21
New cards

Test prosess: Ferdigstilling

Evaluere:

  • Vurder test eksekveringen imot definerte mål
    sjekk om det trengs flere tester eller om exit criteria burde forandres.

Rapportere:
Skriv et sammendrag om testen og resultatene for stakeholders

Test closure aktiviteter:
Gjøre test delene tilgjengelig for senere bruk

22
New cards

En god tester kvaliteter

  • Nysgjerrighet
  • Profesjonell pessimisme
  • Oppmerksom på detaljer
  • Gode kommunikasjonsevner
  • Erfaring med å gjette bugs
  • Å kommunisere mangler og bugs på en konstruktiv måte: fakta fokuserte rapporter og gjennomgang av resultater
23
New cards

Independence/Uavhengighet i testing

En viss grad av uavhengighet er ofte mer effektivt når det kommer til å finne defekter og feil
FORDI det er vanskelig å se sine egne bugs (hjernen ser det den forventer å se + motivasjonen for at alt er riktig er høy)
MEN en utvikler kan veldig effektivt finne bugs i sin egen kode (fordi de kjenner koden bedre og hvordan den er satt sammen, hvis man ser defektene så tar det mindre tid)

Nivåer av uavhengighet
1- Tester laget av samme person som skrev koden
2- Tester laget av en annen person på samme team
3- Tester laget av et separat teste team
4- Tester laget av en utside organisasjon (outsource)

Nivået av uavhengighet i testing er basert på målet med testingen.

24
New cards

Testing basert på SW development modeller

Basert på hvilken SW development modell det er vil life syklusen ha ulike utviklings aktiviteter som vil avgjøre hvordan testingen er organisert.

Sekvensielle modellen, iterative-inkrementel (agile) modellen

25
New cards

Verification

Bevise/teste/verifisere at det vi har laget stemmer i forhold til kravene/spesifikasjonene.

26
New cards

Validation

Finne ut av/validere om at det man har laget er en løsning / har den funksjonen den trenger for et gitt formål.

Noen ganger kan produktet være helt riktig i forhold til kravene som er satt, men fortsatt ikke egentlig egne seg for det formålet som var tiltenkt.

27
New cards

Testing i sekvensiell modell

I en waterfall model vil testing skje på et bestemt tidspunkt i prosessen. Dette er ofte sent i prosessen, noe som gjør at defekter er mye mer kostbart å rette opp i og kanskje i noen tilfeller ikke mulig i det hele tatt. Samtidig er det noen ganger nødvendig å ha kontrollen man får ved å bruke fossefall metoden.

Kan bruke V-modellen for bedre testing på hvert steg

28
New cards

Testing i iterative-inkrementel modeller

Iterativ-inkrementel utvikling er prosessen av å etablere krav, designe, bygge og teste et system ved å ha en serie av korte utviklings sykler som resulterer i inkrementer.

Testing er ofte mindre formell, som er bra fordi det blir mindre overhead osv.
MEN Vanlig problemer:

  • mer regression testing (testing delen øker for hver fase fordi vi må teste hele systemet hver gang, se at endringene vi har introdusert ikke har skapt nye problemer)
  • defekter utenfor skopet av iterasjonen/inkrementet kan glemmes
  • mindre grunding testing

Mange ulike iterative og inkrementelle modeller:
Rational Unified Process, Scrum, Kanban, Spiral

Kan bruke V-modellen innen for hver sykel

29
New cards

V-model

need, wish, policy, law ->

  1. user requirements -> (prep acceptance test)
  2. system requirements -> (prep system test)
  3. global design, arkitektur -> (prep integration test)
  4. detailed design ->
  5. IMPLEMENTATION ->
  6. component test execution ->
  7. integration test execution ->
  8. system test execution ->
  9. acceptance test execution ->
    operational system

Testing må begynne så tidlig som mulig, integrert og planlagt i hver eneste fase.
validation = reviewing user requirements and user acceptance testing
verification = review system requirements, alle de andre testene

30
New cards

Karakteristikker av god testing

  • Alle utviklings aktivitetene/fasene har en korresponderende teste aktivitet
  • Hvert test nivå har et test mål spesifisert til det nivået
    -Analyse og designet av en test for et gitt test nivå bør begynne under den korresponderende utviklings aktiviteten
    -Testere burde være involvert i gransking/analyse av dokumentene/kravspesifikasjonene så tidlig som mulig i utviklingen for å forhindre at defekter forplanter seg videre.
31
New cards

Test nivåer

Unit-testing (moduler, program, objekt som kan testes separat)
Integrasjons-testing (grensesnitt mellom komponenter, interaksjon med andre systemer, OS, HW)
System-testing (Oppførsel av hele systemet, definert av prosjektets skop)
Acceptance-testing (Teste tillit til systemet blant brukere)

For hvert test nivå må man tenke på:

  • Ulike generiske mål
  • Test basis (produkter brukt for å finne test cases)
  • Test objekter (hva som skal bli testet)
  • Vanlig defekter og feil
  • Spesifikke tilnærminger
32
New cards

Unit testing: objective/mål

Teste en liten modul/komponent av systemet, den må være helt separat testbar (rekkefølgen testene kjøres i skal ikke spille en rolle). Testing av funksjonalitet, eller spesifikke ikke-funksjonelle karakteristikker (kvalitetskrav: memory leaks, robustness, structural).

33
New cards

Unit testing: test basis

Spesifikasjonen av komponenten, SW design, data modellen, koden i seg selv.

34
New cards

Unit testing: tilnærminger

Hvordan?

  • Skrive koden for å teste koden
  • Stubs, drivers og simulators kan bli brukt
  • Unit testing inkluderer ofte utvikleren som skrev koden.
  • Defekter blir fikset så fort som de blir funnet
35
New cards

Stubs

Kode som erstatter en komponent som blir kalt av komponenten som blir testet, for å kunne simulere dens formål (hard kodet data for å erstatte data fra en database)

36
New cards

Drivers

Kode som erstatter en komponent som kaller komponenten som blir testet, på denne måten så kan man kjøre koden slik at komponenten som blir testet er isolert fra resten av programmet og ikke blir kalt av noe annet.

37
New cards

Integrasjons testing: objectives/mål

Tester grensesnittet mellom komponenter, tester interaksjoner mellom ulike deler av et system, grensesnitt mellom moduler som GUI, database, OS, filsystemet og HW.

Typer:
component integrasjon: teste interaksjonen mellom SW komponenter etter unit testing

system integrasjon: teste interaksjonene mellom ulike systemer etter system testingen

38
New cards

Integrasjons testing: test basis & test objects

Test basis:
SW og system design, System arkitektur og Workflow/ use case

Test objects:
builds of the system, database elements, system infrastruktur, grensesnitt mellom komponenter, system konfigurasjonen og dataen

39
New cards

Integrasjons testing: tilnærminger

  • Start integreringen med de komponentene som man tror vil skape mest problemer
  • Reduser risikoen av en sen defekt oppdagelse ved å gjøre testingen inkrementell
  • Både funksjonelle og strukturelle tilnærminger, altså både white box og black box
  • Ideelt bør testeren skjønne arkitekturen og kunne påvirke integrasjons planleggingen
  • Kan gjøres av utviklerene eller et eget team
40
New cards

System testing: objectives/mål

Teste oppførselen til hele systemet (definert av skopet til prosjektet).

41
New cards

System testing: test basis

  • System krav spesifikasjon, skrevet + modeller, funksjonell og ikke-funksjonell
  • Bedrift prosesser
  • Risk analyse
  • Use cases
  • Andre høy-nivå beskrivelser av systemets oppførsel, interaksjon med OS

Problemer: ukomplette eller udokumenterte krav

42
New cards

System testing: test objekter

  • Hele systemet
  • Bruker manualer
  • Operasjons manualer
  • System konfigurasjons informasjon
43
New cards

System testing: tilnærminger

  • Godt testmiljø: bør imitere/stemme overens med produksjon mijøet så mye som mulig.
  • Uavhengig testere: et uavhengig test team kan være best
  • Black box teknikk
  • White box teknikk
44
New cards

Acceptance testing: objectives, mål

Etablere tillit til systemet og ikke-funksjonelle karakteristikker av systemet.

45
New cards

Acceptance testing: test basis

  • Bruker krav spesifikasjon
  • Use case
  • System krav spesifikasjon
  • Bedrift prosess
  • Risk analyse
46
New cards

Acceptance testing: typer

User: om systemet funker for bruker
Operational(admin): teste backup, disaster recovery, bruker håndtering, vedlikehold gjøremål, periodiske sjekker av sårbarheter.
Contract/regulation: testing imot kontraktens aksept kriterier (government, legal, safety)
Alpha: testing gjort hos utviklerens organisasjon
Beta: testing gjort av folk på sin egen lokalisasjon
(Både alpha og beta er gjort av potensielle kunder)

47
New cards

Test typer

Functional: hva systemet gjør (suitability, interoperability, security, accuracy, compliance)
Non-functional: how the system works (performance, reliability, usability, efficiency, maintainability, portability)
Related to changes (confirmation testing, regression testing)
Structural (code coverage)

48
New cards

Funksjonell testing (mål + nivå + basis)

Mål: Teste hva et system bør gjøre og vurdere den eksterne oppførselen til softwaret.

Test nivå:
Alle test nivå.

Test basis:
Den forventete oppførsel beskrivelsen (funnet i krav spesifikasjon, bedrift prosessen, use case, funksjonalitet spesifikasjon)

49
New cards

Ikke-funksjonell testing (mål + nivå + basis)

Mål:
Måle karakteristikkene av et software som kan kvantifiseres på en varierende skala (respons tid på ytelse test)

Test nivå:
Alle test nivåer

50
New cards

Strukturell testing (mål + nivå + basis)

Mål:
Måle grundigheten av testingen i form av test coverage/dekning.

Test nivå:
Kan utføres på alle nivåer, men spesielt i unit testing og unit integrasjons testing.
Skjer gjerne etter andre tester.

Test basis:
Basert på strukturen i koden / arkitekturen til systemet

51
New cards

Change testing

Mål: verifisere at modifikasjonene gjort på SW eller miljøet ikke har skapt utilsiktede konsekvenser, og at systemet fortsatt møter kravene

Test nivå: alle test nivåer, relatert til alle de andre typene testing

Typer: Confirmation, Regression

52
New cards

Confirmation testing

Etter en defekt er funnet og fikset, teste SW igjen for å bekrefte at defekten er fjernet suksessfullt

53
New cards

Regression testing

Repetert testing av et allerede testet program, etter modifikasjon, for å finne defekter som kan ha blitt introdusert som en konsekvens av forandringen

Finne defekter i SW som tidligere funket. Regression test suites blir kjørt mange ganger. Sterk kandidat for automatisering.

54
New cards

Maintenance/Vedlikehold testing

Testing gjort på et eksisterende driftende system på grunn av modifikasjon, migrasjon eller utfasing av SW eller system.

Typer:
Modifikasjon (planlagte forbedrings forandringer, korrigering og emergency forandringer, forandring av miljø)
Migrasjon (tester av nytt miljø, tester av det forandrete SW)
Utfasing (testing av data migrasjon eller arkivering, hvis lang data retention perioder er nødvendig)

55
New cards

TDD (Test Driven Development)

En metode der test cases er definert, laget og automatisere før hoved koden som skal passere testen blir laget.

Brukt i XP (extreme programming)

56
New cards

TDD prosessen

Rød fase

  1. Skriv en test (som definerer en funksjon eller en forbedring du vil gjøre i koden)
    2.Kjør alle tester og se at testen failer (bekrefte at bare din test blir feil, og dermed se at den funker)

Grønn fase

  1. Skriv koden som skal passere testen
  2. Sjekke om koden passerer testen + forandre den til den gjør det

Refactor fase

  1. Refactor/Omarbeid koden så den er enklere å lese
  2. Kjør testen og se den passere
57
New cards

Hvorfor bruke TDD?

Støtte til omarbeiding/refactoring:
Gjør endringer med selvtillit

Design fordeler:
Isolerte units bør ha lav kobling (hver modul bør være så uavhengig som mulig) og høy kohesjon (relatert kode / kode som utfører lignende oppg bør være samlet i samme modul)

Design verification:
Koden gjør det du forventer/tror den gjør

Inkrementell jobbing:
Dele dine forandringer ofte, opprettholde en flow

== Følelse av frihet og produktivitet

58
New cards

TDD negative sider

TDD er ikke alltid den beste tilnærmingen, men har situasjoner/problemer der den kan fungere godt.

Negative sider:
Krever mye å lære TDD, å teste mye kan øke tids og ressurs forbruk, fokuserer for mye på tester enn selve programvaren

MEN hvis man kan det godt og bruker det i riktig situasjoner så kan det være veldig verdt det

59
New cards

TDD Skill

Designe test caser
Designe testbar kode
Drive utvikling med tester
Refactor/Omskrive på en sikker måte

60
New cards

Self-testing kode

Selv-testende kode er når du kan kjører en serie automatiserte tester mot kode basen og har tillit til at hvis testen passerer så er koden fri for betydelige defekter

61
New cards

Kjennetegn på en god unit test

Readability:

  • Optimer for den personen som må forstå feilen
  • Gode test navn som forklarer hva testen er
  • 3 deler: Arrange, Act, Assert (Tommelregel: bare en assert per test)
  • Samle tester som gjør det samme inn i en felles funksjon

Speed
En unit test bør være rask, er ikke en unit test hvis den rører filsystemet, nettverk, databasen, spesiell HW

Robustness
Isolasjon:
Feil oppstår ikke i kaskade, rekkefølgen på test utførelsen er irrelevant og samme test utføres gjentatte ganger
Feilene er ikke intermitterende:
Er konsistente og reproduserbare

62
New cards

Test automatisering

Bruken og utviklingen av spesiell SW (separat fra SW som skal testes) for å kunne kontrollere kjøringen av tester og sammenligningen faktisk output med forventet output, automatisk istedenfor manuelt

63
New cards

Test automatisering: Fordeler/ hvorfor bruke det

Redusert testtid: testene kjører mye raskere

Økt testdekning: Kan utføre de samme testene om og om igjen, dermed øke test dekningen. Regression testing. Testing på flere nettlesere og enheter.

Redusert kostnad: krever mindre ressurser å kjøre. Genererer og validerer test data.

Mer pålitelig tester: utføres alltid på samme måte dermed mer nøyaktige svar

Raskere feilretting: Oppdager feil raskere, rask feedback på feil

64
New cards

Test automatisering: Brukstilfeller

Når skal man ikke bruke de:

  • systemer som forandrer seg ofte og drastisk (da må også testene forandres ofte og drastisk, ikke vits å ha de automatisert)
  • systemer som er på vei ut (testene vil bare brukes en liten stund, heller ikke nødvendig)
  • små eller kort prosjekter (samme grunn som over)

Krever en viss overhead når man setter opp automatiserte tester, så jo lenger de blir brukt uendret jo større fordel/utbytte gir de

65
New cards

Test automatisering: Nivåer

((Manual))
GUI
Integration
Unit

Oppover pil: Tillit i hele systemet
Nedover pil: Tillit i en enkelt komponent

66
New cards

Test automatisering: hvem?

Utvikler

  • Lite eller ingen test kompetanse
  • Utviklings ekspert
  • Kan sette opp rammeverk
  • Test automation vil være en del av utviklingen

Test-automatiserings ingeniør

  • Sterk test kunnskap
  • Sterk utviklings kunnskap
  • Kan sette opp rammeverk
  • Ofte den eneste eieren til automatiserings innsatsen

Tester

  • Test ekspert
  • Ingen / lite utviklings kunnskap
  • Vanskelig å sette opp rammeverk
  • Sterkere samarbeid med utviklere og eierskap til tester
67
New cards

Test automatisering: prosessen

Integrert del av SDLC, kontinuerlig prosess, raskere utgivelser med automatiserte tester.

  1. Analysere skopet og forventinger
  2. Definere tilnærmingen
  3. Velge verktøy
  4. Designe arkitekturen
  5. Lage automatiserings rammeverk
  6. Lage tester, rapportering, integrasjon
  7. Vedlikehold
68
New cards

Testing frameworks

Et sett med verktøy, biblioteker og konvensjoner som brukes til å skrive og automatisere tester for programvareapplikasjoner.
Standardisert måte å opprette og utføre tester på, sikrere at programvaren oppfyller ønsket kvalitet og funksjonalitet.

Mange ulike rammeverk for ulike programmerings språk:
JUnit, Protractor, Serenity BDD, Cucumber, NightWatch..

Hvordan velge?
Ingen one fits all løsning.
Paid eller open source? Skal det ha kontinuerlig support? Er community aktivt? Hva har teamet erfaring med?

69
New cards

Cypress

Et JavaScript-basert rammeverk for ende-til-ende testing.
Front-end testing verktøy bygget for det moderne web.
Gratis og open-source.

Funksjonalitet:

  • Time travel (se hvordan koden oppførte seg på alle tidspunkter i utviklingen)
  • Automatic waiting (automatisk venter for at elementer loader og blir synlig før den interagerer med dem)
  • Stubs and clocks
  • Screenshot and videos
  • Cross browser testing (kjøre testene i flere browsers samtidig)
70
New cards

Cypress vs Selenium

Executes in browser vs Prosess utenfor browser
Open source vs open source
Automatic waiting vs manuell legge til wait/sleep
All-in-one pakke vs kombinert med andre
Innebygd test runner med rapportering vs bygge rapport selv

71
New cards

Statisk testing

Manuell undersøkelse og automatisert analyse av koden eller dokumentasjonen uten kjøringen av SW under testen

Mål:

  • Identifisere defekter
  • Finner grunner til defekter istedenfor defektene selv

Et eksempel på statisk testing kan være kompilatoren. Den analyserer koden uten å faktisk kjøre den.

72
New cards

Dynamisk testing

Finne defekter i koden ved å kjøre SW under en test.

Mål:

  • Identifisere defekter

Behøver source kode for å bli gjort

73
New cards

Statisk analyse: typiske feil

  • Referering til en variabel med udefinert verdi
  • Inkonsistent grensesnitt mellom moduler og komponenter
  • Variabler som aldri blir brukt
  • Utilgjengelig (død) kode
  • Programmeringstandard brudd
  • Sikkerhets sårbarheter
  • Syntax brudd av kode og SW modeller
74
New cards

Statisk analyse: hvorfor?

  • Finner defekter tidlig før kjøring
  • Tidlig advarsel av mistenksomme aspekter av koden eller designe (kalkulering av metrikker, high complexity measure)
  • Identifisering av defekter som ikke lett blir oppdaget dynamisk
  • Finne dependencies/avhengigheter og inconsistencies i SW modellene
  • Forbedre vedlikeholdbarheten av koden og design
  • Forhindre defekter
75
New cards

Statisk analyse: Kode standard

Ved å analysere om koden følger en viss standard så kan det spare mye tid.

Kode standard:

  • programmerings regler (eks boundaries på en array)
  • navn konvensjoner (klasser med stor bokstav)
  • tilgangs konvensjoner (public/private)
  • layout spesifikasjon (innrykk)
76
New cards

Statisk analyse: Kode metrikker

  • Kommentar hyppighet
  • Dybde av nøsting
  • Kompleksitets metrikk
    Dette kan bli testet på ulike måter, basert på antall avgjørelser i programmet.
77
New cards

Statisk analyse: Kode struktur

  • Kontroll flow struktur
    Sekvensen instruksjonene er eksekvert
  • Data flow struktur
    følger stien til dataen ved tilgang og endring gjort på den i koden
  • Data struktur
    Organisasjonen av dataen selv
78
New cards

Reviews / Vurderinger

Manuell undersøkelse av koden eller dokumentasjonen for å identifisere defekter og foreslå forbedringer.

Dette gjøres tidlig i life cycelen og finne defekter her er mye billigere å fjerne enn i senere testing.

79
New cards

Reviews: objekter

  • kravspesifikasjoner
  • designspesifikasjoner
  • koden
  • test planer
  • bruker guides
  • web sider
80
New cards

Reviews: fordeler

  • tidlig defekt oppdagelse og korrigering
  • utviklings produktivitets forbedring
  • redusert utviklingstid
  • redusert testkostnader og tid
  • redusert levetidskostnader
  • færre defekter
  • forbedret kommunikasjon
81
New cards

Reviews: vanlig defekter funnet

-avvik fra standarder
-krav defekter

  • design defekter
  • utilstrekkelig vedlikeholdbarhet
  • feilaktige grensesnitt spesifikasjoner
  • inkonsekvenser, tvetydigheter, selvmotsigelser, utelatelser(omissions), unøyaktigheter og redundanser i kravene
82
New cards

Review prosess: Phases

  1. Planlegging
    (velg folk og roller, definer entry og exit kriterier, velg del av dokument å se på)

  2. Initiate review (kick off)
    (dele ut dokumenter, forklare objektivene/prosessen/dokumentene, sjekke og diskuter entry/exit)

  3. Individuell review
    (egen notater, severity proposal: critical, major, minor)

  4. Problem kommunikasjon og analyse
    (Review møte, logging og diskusjon, notere defekter og forslag til å fjerne de, avgjørelser basert på exit kriteriet)

  5. Fikse og rapportere
    (Fikse defekter, sjekke at defekter blir håndtert, metrics: num of defect..)

83
New cards

Review prosess: Roller

  • Forfatter (den som skrev / har ansvar for dokumentet)
  • Ledelse (avgjør at review skal skje, allokerer ressurser)
  • Review leder
    (ansvar for review, bestemmer roller)
  • Fasilitator
    (leder, planlegger review og møter)
  • Reviewers
    (individer med teknisk bakgrunn, identifiserer og beskriver funn)
  • transkribent
    (dokumenterer alle problemer under møter)
84
New cards

Review process: Typer (mål + form)

  1. Uformell
    Mål: Lite kost,
    Form: pair review
  2. Walkthrough
    Mål: lære, forståelse, finne defekter, feedback
    Form: ledet av forfatter, varierer i praksis
  3. Teknisk
    Mål: diskutere, ta avgjørelser, evaluere alternativer, finne defekter, løse tekniske problemer
    Form: veldig formell til veldig uformell. Ideelt ledet av fasilitator, dokumentert, før møte preparasjon, checklists
  4. Inspeksjon
    Mål: finne defekter
    Form: peer undersøkelse ledet av fasilitator. Formell prosess basert på regler/checklist med entry og exit kriterier. Definerte roller. Metrics. Inspeksjons rapport.
85
New cards

Review process: teknikker

  • Ad hoc review
  • Checklist review
  • Senario review
  • Rolle review
  • Perspektiv review
86
New cards

Review prosess: Faktorer for suksess

Organisasjon faktorer:

  • klart mål
  • velg riktig type review
  • oppdatert review materiale
  • limit scope størrelse
  • sørg for nok tid
  • ledelse støtte

Menneskebasert faktorer:

  • riktig folk (bruk testere)
  • alle gjør jobben grundig
  • defekt funn bør bli sett som positivt
  • godt ledet møter
  • tillit og god kommunikasjon
  • trening av deltakere
87
New cards

Test development prosess

Før testing må vi vite: hva prøver vi å teste, hvilket input, hvilke resultater, hvordan forbereder vi testen, hvordan kjører vi testen

For å gjøre testing planleggingen mer oversiktlig deler vi det inn i 3 faser:

  1. Test analyse
  2. Test design
  3. Test implementasjon
88
New cards

Test development prosess: Analyse

Analyse av dokumentasjon = bestem hva som skal testes (identifiser test conditions)

Identifiser så mange test conditions som mulig, velg en for å utvikle i mer detalj. Vi kan ikke teste alt, så vi må velge et subset av alle mulige tester med høyest sannsynlighet for å finne defekter.

89
New cards

Test conditions

En ting eller hendelse som kan bekreftes av en eller flere test caser

Eksempler:

  • en funksjon
  • en transaksjon
  • kvalitets karakteristikk
  • strukturelle elementer
90
New cards

Test development prosess: Design

Gjennom test design er test cases + test data opprettet og spesifisert.

For å gjøre sette må vi vite hva systemet bør/skal gjøre for å vite hva riktig oppførsel er (oracle) og hva forventet resultater er.

91
New cards

Test case

Set av pre-conditions, inputs, forventet resultat og post-conditions utviklet for å dekke noen test conditions.

92
New cards

Test development prosess: Implementasjon

Under en test implementasjon er test casene organisert inn i test prosedyrer/procedures.

Lager en test execution schedule:

  • rekkefølgen på execution av test procedyrer
  • når de vil bli eksekvert
  • av hvem de vil bli eksevert

Å skrive test prosedyrer er en god mulighet for å prioritere, best testing er gjort i tiden tilgjengelig

93
New cards

Test procedures

En test prosedyre outliner sekvensen av steg som trengs for å eksekvere en test case eller en gruppe av relaterte test cases.

Hvis test prosedyren er automatisert så spesiferer den i et test script

94
New cards

Black-box teknikk

Spesifikasjons-basert teknikk

Bruker modeller (formelle og informelle) for å spesifisere problemet som skal løses, i tillegg til SW og komponentene deres.
Finner test cases ved bruk av disse ulike modellene.

Typer:

  • Equivalence partitioning
  • Boundary value analysis
  • Use case testing
  • Decision tables
  • State transitions
95
New cards

Equivalence partitioning

Black-box teknikk.

  1. Del inn conditions i deler der alle elementene i hver del kan ses på som samme / har samme oppførsel
  2. Teste en condition fra hver del

Typisk problem:
Konto i bank får forskjellige renter basert på mengde i konto.
Dele inn mengden inn i ulike deler basert på rangen som gjør at de får ulike renter

Valid data og invalid data (values som bør bli rejected)

96
New cards

Boundary value analysis

Black-box teknikk
Analyse av kanten av hver equivalence partition fordi det er større sannsynlighet at resultatet er feil der.

Finne boundary values (max og min values for en del) og teste for disse

  • Brukes i alle testnivåer
97
New cards

Hvorfor equivalence partitioning og boundary value analysis sammen?

Boundary value analysis er en utvidelse av equivalence partitioning.

I tillegg er boundary value analysis bare de ekstreme verdiene, for å få tillit i systemet må vi også teste det under normale omstendigheter.

Tommelregel:

  • Velg max og min (boundary)
  • Og en value fra midten av delen
98
New cards

Decision table testing

A black-box teknikk
Et decision table er en årsak-virkning tabell, der inputs og actions utrykker med boolean verdier.

Identifisere effekten av kombinasjoner av forskjellig inputs

Istedenfor å ha alle actions på bunnen kan man bare skrive hvilken action som vil skje + slå sammen noen regler fordi en condition alltid leder til en action feks

99
New cards

State transition testing

Black-box teknikk for å finne defekter når et system beveger seg fra en state til en annen state ved hjelp av et state diagram

Når:
Et system der du får forskjellig output for samme input avhengig av hva som har skjedd før er et finite state system.

Hvorfor:

  • Transitions mellom states
  • Se hvilke inputs som gir state forandringer
  • Hva resultatet av disse kan være
100
New cards

Use case testing

En black-box teknikk der test cases er designet ut i fra scenarioene i use cases.

Et use case bør bruke hele systemet fra start til slutt, interaksjon mellom bruker og system fra bruker sin side.

  • pre-conditions
  • post-condtions
  • a mainstream (most likely) and alternative branches

Bruk:
acceptance test with user