Oplæg på TestExpo 2016 den 28. januar

Post on 20-Feb-2017

30 views 1 download

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

...og undgå skader!

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

#tedk16

Hvem er vi?

Morten Bjerg Gregersen Projektkonsulent

mgr@bankdata.dk

Marianne Gadegaard Testleder

mag@bankdata.dk

Agenda

Vores verden

Kvalitetssikring og automatisering

Gevinster

Fremtid

Vores verden

Inspiration

Teamet

Medlemsbankerne

Mobilbank Privat - til privatøkonomien

Mobilbank Erhverv - til de mindre og mellemstore virksomheder

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

Reviews fra brugerne

4,2

12

13

14

Arkitektur og kvalitetssikring

Arkitektur

Backend/mainframe

Middleware Privat

Middleware Erhverv

Kvalitetssikring

Testanalyse - Overførsel

Overførsel samme bank

Overførsel anden bank

Standard

Med NemID

Straks

Med NemID

Helligdag

Scenarier

Mellem egne

Uden NemID

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

Risikobaseret test

Funktions-

tests

Designkontrol-tests

Manuelle testskemaer

185 92

159 0

Privat Erhverv

Automatisering af tests

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

Valg af værktøj

Struktur af test-kode

Screens

Ruby

Screens

Ruby

Steps

Ruby

Scenarier

Gherkin

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

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

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)

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

Demo Click her

Designkontrol

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

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

Automatisering af designkontrol

UI-test-rapport

UI-test-rapport

Mock-server Privat

Mock-server Erhverv

Faste data

Forskelle mellem versioner

4.3.0 5.0.0

Billeder til lancering

Billeder til lancering

Automatisering af billeder til lancering

App Store og Google Play Butik

Hjemmesider og marketing

Gevinster

Testskemaer automatiseret

Funktions-

tests

Designkontrol-tests

33 38

25 16

Privat Erhverv

Frigivelsesproces

Før ca. 4 uger

Nu under en uge

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

Attraktiv arbejdsplads

Udfordringer

Mindset i teamet

Stabilisering af tests

Kun community-support på værktøj

Fremtid

Fokus på automatiseret regressionstest

Automatisk kørsel af tests

Fremtid for automatisering

Fremtid for Bankdata

Selvorganiserede teams Ejerskab og ansvar

Faste dedikerede teams

Et agilt mindset Nye roller

Øget medarbejdertilfredshed

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

Spørgsmål