Oplæg på TestExpo 2016 den 28. januar

54
...og undgå skader! Skær ned på de manuelle tests - Automatisér! #tedk16

Transcript of Oplæg på TestExpo 2016 den 28. januar

Page 1: Oplæg på TestExpo 2016 den 28. januar

...og undgå skader!

Skær ned på de manuelle tests - Automatisér!

#tedk16

Page 2: Oplæg på TestExpo 2016 den 28. januar

Hvem er vi?

Morten Bjerg Gregersen Projektkonsulent

[email protected]

Marianne Gadegaard Testleder

[email protected]

Page 3: Oplæg på TestExpo 2016 den 28. januar

Agenda

Vores verden

Kvalitetssikring og automatisering

Gevinster

Fremtid

Page 4: Oplæg på TestExpo 2016 den 28. januar

Vores verden

Page 5: Oplæg på TestExpo 2016 den 28. januar

Inspiration

Page 6: Oplæg på TestExpo 2016 den 28. januar

Teamet

Page 7: Oplæg på TestExpo 2016 den 28. januar

Medlemsbankerne

Page 8: Oplæg på TestExpo 2016 den 28. januar

Mobilbank Privat - til privatøkonomien

Page 9: Oplæg på TestExpo 2016 den 28. januar

Mobilbank Erhverv - til de mindre og mellemstore virksomheder

Page 10: Oplæg på TestExpo 2016 den 28. januar

Statistik (december 2015)

Mobilbank Privat

409.529 aktive brugere

5.119.051 sessioner

46.278.851 sidevisninger

9,20 sider pr. session

02:44 gnsn. sessionslængde

Mobilbank Erhverv

6.002 aktive brugere

99.164 sessioner

593.403 sidevisninger

5,87 sider pr. session

01:57 gnsn. sessionslængde

Page 11: Oplæg på TestExpo 2016 den 28. januar

Reviews fra brugerne

4,2

Page 12: Oplæg på TestExpo 2016 den 28. januar

12

Page 13: Oplæg på TestExpo 2016 den 28. januar

13

Page 14: Oplæg på TestExpo 2016 den 28. januar

14

Page 15: Oplæg på TestExpo 2016 den 28. januar

Arkitektur og kvalitetssikring

Page 16: Oplæg på TestExpo 2016 den 28. januar

Arkitektur

Backend/mainframe

Middleware Privat

Middleware Erhverv

Page 17: Oplæg på TestExpo 2016 den 28. januar

Kvalitetssikring

Page 18: Oplæg på TestExpo 2016 den 28. januar

Testanalyse - Overførsel

Overførsel samme bank

Overførsel anden bank

Standard

Med NemID

Straks

Med NemID

Helligdag

Scenarier

Mellem egne

Uden NemID

Page 19: Oplæg på TestExpo 2016 den 28. januar

Input 1. del

Beløb

Fra konto

Til konto

Input 2. del

Tekst til egen konto

Tekst til modtagers

konto

Dato

Hos modtager med det samme

Overførsel samme bank

Mellem egne

Fuldmagtskonti

Overførsel anden bank

Standard

Standard - Ingen adgang

Straks

Straks - Grænse

Straks - Ingen adgang

Straks - Ikke tilladt for kunden

Dagsmaksimum

Dagsmaks. er overskredet

Signering

Egne konti uden NemID

Andres konti med NemID

Med nøglekort

Med nøgleviser

Mobilkode forkert

NemID-nøgle forkert

Kvittering

Scenarier

Helligdag

Weekend

Konto pantsat

Konto spærret

Under 18 år uden tilladelse

Særlig indlån uden disp. ret

Modtager-bank er nede

Testanalyse - Overførsel

Page 20: Oplæg på TestExpo 2016 den 28. januar

Risikobaseret test

Page 21: Oplæg på TestExpo 2016 den 28. januar

Funktions-

tests

Designkontrol-tests

Manuelle testskemaer

185 92

159 0

Privat Erhverv

Page 22: Oplæg på TestExpo 2016 den 28. januar

Automatisering af tests

Page 23: Oplæg på TestExpo 2016 den 28. januar

Målsætninger

Platformuafhængigt i høj grad

Forståeligt for forretningen

Alle kan bidrage med testskemaer

User-story Accept-kriterier

Test-skemaer

Auto-matisering

Page 24: Oplæg på TestExpo 2016 den 28. januar

Valg af værktøj

Page 25: Oplæg på TestExpo 2016 den 28. januar

Struktur af test-kode

Screens

Ruby

Screens

Ruby

Steps

Ruby

Scenarier

Gherkin

Page 26: Oplæg på TestExpo 2016 den 28. januar

Scenarier (Gherkin)

Domæne-specifikt sprog

Skrives sammen med Product Owner

Egenskab: At leve godt

Scenarie: Kagespisning

Givet der er kage

Når jeg spiser kagen

Så bliver jeg glad

Page 27: Oplæg på TestExpo 2016 den 28. januar

Scenarier (Gherkin)

Egenskab: Overførsel - Clearing

Scenarie: Overførsel frem i tid (askeonsdag/dagen

før skærtorsdag)

Givet jeg ønsker at overføre 99 kr fra min

”Lønkonto” til 2000 1234560

Når jeg vælger at modtager skal have pengene

dagen før skærtorsdag

Så ser jeg at modtager får pengene tirsdag efter

2. påskedag

Og jeg kan ikke vælge at modtager skal have

pengene med det samme

Page 28: Oplæg på TestExpo 2016 den 28. januar

Når /^jeg vælger at modtager skal have pengene (med det samme|næste torsdag|næste

tirsdag|næste fredag|dagen før skærtorsdag)$/ do |day|

end

Når /^jeg vælger at modtager skal have pengene (med det samme|næste torsdag|næste

tirsdag|næste fredag|dagen før skærtorsdag)$/ do |day|

page = page(TransferScreen)

if day.eql?('med det samme')

touch(page.immediately_cell)

else

end

end

Når /^jeg vælger at modtager skal have pengene (med det samme|næste torsdag|næste

tirsdag|næste fredag|dagen før skærtorsdag)$/ do |day|

page = page(TransferScreen)

if day.eql?('med det samme')

touch(page.immediately_cell)

else

date = nil

if day.eql?('næste torsdag')

date = DateTime.now.next_thursday

elsif day.eql?('næste tirsdag')

date = DateTime.now.next_tuesday

elsif day.eql?('næste fredag')

date = DateTime.now.next_friday

elsif day.eql?('dagen før skærtorsdag')

date = Easter.next_maundy_thursday-1

end

end

end

Når /^jeg vælger at modtager skal have pengene (med det samme|næste torsdag|næste

tirsdag|næste fredag|dagen før skærtorsdag)$/ do |day|

page = page(TransferScreen)

if day.eql?('med det samme')

touch(page.immediately_cell)

else

date = nil

if day.eql?('næste torsdag')

date = DateTime.now.next_thursday

elsif day.eql?('næste tirsdag')

date = DateTime.now.next_tuesday

elsif day.eql?('næste fredag')

date = DateTime.now.next_friday

elsif day.eql?('dagen før skærtorsdag')

date = Easter.next_maundy_thursday-1

end

page = page.transition(tap: page.date_cell,

page: DateSelectionScreen)

end

end

Når /^jeg vælger at modtager skal have pengene (med det samme|næste torsdag|næste

tirsdag|næste fredag|dagen før skærtorsdag)$/ do |day|

page = page(TransferScreen)

if day.eql?('med det samme')

touch(page.immediately_cell)

else

date = nil

if day.eql?('næste torsdag')

date = DateTime.now.next_thursday

elsif day.eql?('næste tirsdag')

date = DateTime.now.next_tuesday

elsif day.eql?('næste fredag')

date = DateTime.now.next_friday

elsif day.eql?('dagen før skærtorsdag')

date = Easter.next_maundy_thursday-1

end

page = page.transition(tap: page.date_cell,

page: DateSelectionScreen)

page.select_date(date)

end

end

Steps (Ruby)

Page 29: Oplæg på TestExpo 2016 den 28. januar

Screens (Ruby)

class DateSelectionScreen < IBDBase

def title; 'Vælg dato' end

def select_date(date)

end

end

class DateSelectionScreen < IBDBase

def title; 'Vælg dato' end

def select_date(date)

date_string = date.strftime('%-d. %B %Y')

end

end

class DateSelectionScreen < IBDBase

def title; 'Vælg dato' end

def select_date(date)

date_string = date.strftime('%-d. %B %Y')

query = "label marked:'#{date_string}'"

end

end

class DateSelectionScreen < IBDBase

def title; 'Vælg dato' end

def select_date(date)

date_string = date.strftime('%-d. %B %Y')

query = "label marked:'#{date_string}'"

scroll_down(until_exists: query)

end

end

class DateSelectionScreen < IBDBase

def title; 'Vælg dato' end

def select_date(date)

date_string = date.strftime('%-d. %B %Y')

query = "label marked:'#{date_string}'"

scroll_down(until_exists: query)

transition(tap: query, page: TransferScreen)

end

end

class DateSelectionScreen < ABDBase

def title; 'Vælg dato' end

def select_date(date)

seconds_since_epoch = date.to_time.to_i

query('calendarView', :method_name => 'setDate',

:arguments => [seconds_since_epoch, true, true])

transition(tap: "button text:'#{title}'",

page: TransferScreen)

end

end

Page 30: Oplæg på TestExpo 2016 den 28. januar

Demo Click her

Page 31: Oplæg på TestExpo 2016 den 28. januar

Designkontrol

Page 32: Oplæg på TestExpo 2016 den 28. januar

Designkontrol

x =

Menu

Login

Kontooverblik

Godkend betalinger

Betalingsoversigt

Indstillinger

Kontobevægelser

Betalingsdetaljer

Søgning konto

Søgning betaling

Søgning godkend

...

Skærmbilleder

Alm. Brand Bank

Djurslands Bank

Jyske Bank

Nordjyske Bank

Ringkjøbing Landbobank

Sydbank

Kreditbanken

Sparekassen Sjælland

Nordfyns Bank

Skjern Bank

Nørresundby Bank

Østjydsk Bank

Pengeinstitutter

ca.

400 skærmbilleder

Page 33: Oplæg på TestExpo 2016 den 28. januar

Designkontrol

(400 x 4 x 3 ) + (400 x 6 x 5 ) =

: iPhone-skærmstørrelser

: iOS-versioner

: Android-skærmstørrelser

: Android-versioner

16.800 skærmbilleder

Page 34: Oplæg på TestExpo 2016 den 28. januar

Automatisering af designkontrol

Page 35: Oplæg på TestExpo 2016 den 28. januar

UI-test-rapport

Page 36: Oplæg på TestExpo 2016 den 28. januar

UI-test-rapport

Page 37: Oplæg på TestExpo 2016 den 28. januar

Mock-server Privat

Mock-server Erhverv

Faste data

Page 38: Oplæg på TestExpo 2016 den 28. januar

Forskelle mellem versioner

4.3.0 5.0.0

Page 39: Oplæg på TestExpo 2016 den 28. januar

Billeder til lancering

Page 40: Oplæg på TestExpo 2016 den 28. januar

Billeder til lancering

Page 41: Oplæg på TestExpo 2016 den 28. januar

Automatisering af billeder til lancering

Page 42: Oplæg på TestExpo 2016 den 28. januar

App Store og Google Play Butik

Page 43: Oplæg på TestExpo 2016 den 28. januar

Hjemmesider og marketing

Page 44: Oplæg på TestExpo 2016 den 28. januar

Gevinster

Page 45: Oplæg på TestExpo 2016 den 28. januar

Testskemaer automatiseret

Funktions-

tests

Designkontrol-tests

33 38

25 16

Privat Erhverv

Page 46: Oplæg på TestExpo 2016 den 28. januar

Frigivelsesproces

Før ca. 4 uger

Nu under en uge

Page 47: Oplæg på TestExpo 2016 den 28. januar

Hyppigere leverancer

Jan Feb Mar Apr Maj Jun Jul Aug Sep Okt Nov Dec

Jan Feb Mar Apr Maj Jun Jul Aug Sep Okt Nov Dec

4.0.0 4.0.1 4.0.2

4.0.3

4.1.0 4.1.1

4.2.0

4.2.1

4.2.3 4.2.4

4.3.0

5.0.0 4.2.2

4.0.0 4.0.1

4.1.0

4.1.1

4.1.2 4.1.3 4.1.4

4.2.0

5.0.0

2.3.0

2.3.0.1

1.0.0 1.0.1 1.0.2 1.0.0

iOS Android Windows Phone

2015

2014

Privat

Privat

Erhverv

3.3.0

3.3.1

2.2.0

2.2.1

2.1.0

5.1.0

5.1.0

Page 48: Oplæg på TestExpo 2016 den 28. januar

Attraktiv arbejdsplads

Page 49: Oplæg på TestExpo 2016 den 28. januar

Udfordringer

Mindset i teamet

Stabilisering af tests

Kun community-support på værktøj

Page 50: Oplæg på TestExpo 2016 den 28. januar

Fremtid

Page 51: Oplæg på TestExpo 2016 den 28. januar

Fokus på automatiseret regressionstest

Automatisk kørsel af tests

Fremtid for automatisering

Page 52: Oplæg på TestExpo 2016 den 28. januar

Fremtid for Bankdata

Selvorganiserede teams Ejerskab og ansvar

Faste dedikerede teams

Et agilt mindset Nye roller

Øget medarbejdertilfredshed

Page 53: Oplæg på TestExpo 2016 den 28. januar

Tak for i dag

#tedk16 https://www.flickr.com/photos/betsyweber https://www.flickr.com/photos/pictures-of-money https://www.flickr.com/photos/com_salud https://www.flickr.com/photos/pavlinajane

Page 54: Oplæg på TestExpo 2016 den 28. januar

Spørgsmål