Skær ned på de manuelle tests - Automatisér!...og undgå skader! #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 Middleware Privat Middleware Erhverv Backend/mainframe
Kvalitetssikring
Testanalyse - Overførsel Overførsel samme bank Overførsel anden bank Scenarier Mellem egne Uden NemID Standard Med NemID Helligdag Straks Med NemID
Testanalyse - Overførsel Input 1. del Input 2. del Overførsel samme bank Overførsel anden bank Dagsmaksimum Signering Scenarier Beløb Tekst til egen konto Mellem egne Standard Dagsmaks. er overskredet Egne konti uden NemID Helligdag Fra konto Tekst til modtagers konto Fuldmagtskonti Standard - Ingen adgang Andres konti med NemID Weekend Til konto Dato Straks Med nøglekort Konto pantsat Hos modtager med det samme Straks - Grænse Med nøgleviser Konto spærret Straks - Ingen adgang Mobilkode forkert Under 18 år uden tilladelse Straks - Ikke tilladt for kunden NemID-nøgle forkert Særlig indlån uden disp. ret Kvittering Modtager-bank er nede
Risikobaseret test
Manuelle testskemaer Funktions- tests 185 92 Privat Erhverv Designkontroltests 159 0
Automatisering af tests
Målsætninger Platformuafhængigt i høj grad Forståeligt for forretningen Alle kan bidrage med testskemaer User-story Acceptkriterier Testskemaer Automatisering
Valg af værktøj
Struktur af test-kode Gherkin Scenarier Ruby Steps Screens Screens Ruby Ruby
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
Steps (Ruby) 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
Screens (Ruby) 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
Click her Demo
Designkontrol
Designkontrol Skærmbilleder Menu Login Kontooverblik Kontobevægelser Søgning konto Godkend betalinger Søgning godkend Betalingsoversigt Søgning betaling Betalingsdetaljer Indstillinger... Pengeinstitutter Alm. Brand Bank Djurslands Bank Jyske Bank Kreditbanken Nordfyns Bank Nordjyske Bank x = Nørresundby Bank Ringkjøbing Landbobank Skjern Bank Sparekassen Sjælland Sydbank Østjydsk Bank ca. 400 skærmbilleder
Designkontrol (400 x 4 x 3 ) + (400 x 6 x 5 ) = 16.800 : iphone-skærmstørrelser : ios-versioner : Android-skærmstørrelser : Android-versioner skærmbilleder
Automatisering af designkontrol
UI-test-rapport
UI-test-rapport
Faste data Mock-server Privat Mock-server Erhverv
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 33 38 Privat Erhverv Designkontroltests 25 16
Frigivelsesproces Før ca. 4 uger Nu under en uge
Hyppigere leverancer 2.2.1 3.3.1 3.3.0 4.0.3 4.0.0 4.0.1 Privat 2.1.0 4.0.0 2.2.0 4.0.1 4.0.2 4.1.0 4.1.1 2014 Jan Feb Mar Apr Maj Jun Jul Aug Sep Okt Nov Dec 2.3.0 4.1.1 4.2.1 2.3.0.1 4.2.0 4.3.0 4.1.0 4.1.2 4.1.3 4.1.4 5.0.0 5.1.0 Privat 4.2.0 4.2.2 4.2.3 4.2.4 5.0.0 5.1.0 2015 Erhverv Jan Feb Mar Apr Maj Jun Jul Aug Sep Okt Nov Dec 1.0.0 1.0.1 1.0.2 1.0.0 ios Android Windows Phone
Attraktiv arbejdsplads
Udfordringer Mindset i teamet Stabilisering af tests Kun community-support på værktøj
Fremtid
Fremtid for automatisering Fokus på automatiseret regressionstest Automatisk kørsel af tests
Fremtid for Bankdata Faste dedikerede teams Selvorganiserede teams Ejerskab og ansvar Nye roller Et agilt mindset Ø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 #tedk16
Spørgsmål