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

Oplæg på Testing Tuesday den 7. juni

Embed Size (px)

Citation preview

...og undgå skader!

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

Hvem er vi?

Morten Bjerg Gregersen Projektkonsulent

[email protected]

Marianne Gadegaard Testleder

[email protected]

Agenda

Vores verden

Kvalitetssikring og automatisering

Gevinster

Fremtid

Vores verden

Inspiration

Teams

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

11

Arkitektur og kvalitetssikring

Arkitektur

Backend/mainframe

Middleware Privat

Middleware Erhverv

Kvalitetssikring

Testanalyse - Overførsel 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

Overførsel samme bank

Overførsel anden bank

Standard Med NemID

Straks Med NemID

Helligdag

Scenarier Mellem egne Uden

NemID

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 Kan læses og forstås af 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 (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 https://www.youtube.com/watch?v=LAbCNohRwa4

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

(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

Designkontrol – fortsat

Automatisering af designkontrol

UI-test-rapport

UI-test-rapport – fortsat

Mock-server Privat

Mock-server Erhverv

Faste data

Backend/mainframe

Middleware Erhverv

Middleware Privat

Forskelle mellem versioner

4.3.0 5.0.0

Udfordringer

Startede med særskilte steps

Mange ens steps i de 2 baser

Alt for meget vedligehold

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

72 40

25 25

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 (og siden TestExpo 2016)

Fokus på automatiseret regressionstest

Automatisk kørsel af tests

Fremtid for automatisering

Nutid og fremtid for Bankdata

Selvorganiserede teams Ejerskab og ansvar

Faste dedikerede teams

Et agilt mindset Nye roller

Øget medarbejdertilfredshed

Tak for i dag

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