FluentAutomation. Et automatiserings-rammeverk for regresjonstesting (og mye annet! )

Like dokumenter
CSS. Aud Marie Hauge ekspert i brukskvalitet og universell utforming i Epinova AS

EN Skriving for kommunikasjon og tenkning

Electron is bad and you should feel bad. Eivind Arvesen

Forprosjekt. Accenture Rune Waage,

1. Forord 2. Leserveiledning

Guide for bruk av virtuelle møterom

Hvordan føre reiseregninger i Unit4 Business World Forfatter:

LEVER OFTERE TEST SMARTERE

Forprosjekt gruppe 13

KROPPEN LEDER STRØM. Sett en finger på hvert av kontaktpunktene på modellen. Da får du et lydsignal.

Trigonometric Substitution

5 E Lesson: Solving Monohybrid Punnett Squares with Coding

FIRST LEGO League. Härnösand 2012

TDT4117 Information Retrieval - Autumn 2014

Ingen søvnløse netter

Slope-Intercept Formula

Compello Fakturagodkjenning Versjon 10 Software as a service. Tilgang til ny modulen Regnskapsføring

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet.

Compello Fakturagodkjenning Versjon 10.5 As a Service. Tilgang til Compello Desktop - Regnskapsføring og Dokument import

HTML5. Skjemaer på nettsider. Skjemaer med. Informasjonsteknologi 1 og 2. Gløer Olav Langslet Sandvika VGS

Godsmagi. Ny teknologi gir nye løsninger for godstransport

Guide for bruk av virtuelle møterom

Examination paper for (BI 2015) (Molekylærbiologi, laboratoriekurs)

Hvordan oppdatere Java.

Forprosjektrapport. Høgskolen i Oslo Våren Dr.Klikk. Gruppe 25. Håkon Drange s Lars Hetland s127681

Utvikle en prototype for en digital versjon av helsekort for gravide. Programvareleverandør av ehelse-løsninger for helsevesenet

UNIVERSITETET I OSLO

Den som gjør godt, er av Gud (Multilingual Edition)

- Java kan lastes ned gratis For installasjon, se punktet Hvordan laster jeg ned og installerer Java på min maskin?.

Prototyping. TDT4180, vår Yngve Dahl IDI, NTNU NTNU

Presentasjon. Kristian Hewlett- Packard

Compello Invoice Approval

Erfaring med funksjonell testing i en integrert ALM prosess

System integration testing. Forelesning Systems Testing UiB Høst 2011, Ina M. Espås,

Bruk av robot i Helse Vest sitt administrasjonsarbeid

Lyd og video på nettsider

Brukerguide Atea Anywhere VMR Atea Anywhere

Google Chrome. Microsoft Edge. Mozilla Firefox. Internet Explorer. Opera. Safari

UNIVERSITY OF OSLO DEPARTMENT OF ECONOMICS

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

Mobil Feltdagbok. Hvordan effektivisere en oppsynsmanns datafangst i felten med smarttelefon som har GPS stedfesting

«Ein sjølvstendig og nyskapande kommunesektor»

- analyse og implementasjon

Last ned Raske sting - Nina Granlund Sæther. Last ned. Last ned e-bok ny norsk Raske sting Gratis boken Pdf, ibook, Kindle, Txt, Doc, Mobi

Brukerveiledning for Aptopappa. Brukerveiledning for ny funksjonalitet i Aptopappa

Databases 1. Extended Relational Algebra

(MVC - Model, View, Control)

Windlass Control Panel

Status fra utviklingsavdelingen. Rune Synnevåg, Uni Pluss AS

Agenda. Tiden som har gått Tiden som kommer Noen tips til deg

Brukerdokumentasjon. Webservices og webklient for kodeverk/ kodeverdi verifisering

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

EGENDEFINERTE FUNKSJONER I SAS OG LITT OM OPEN SOURCE INTEGRASJON SAS FANS I STAVANGER , MARIT FISKAAEN (SAS INSTITUTE)

DIGITAL SKOLEEKSAMEN FOR STUDENTER VED POLITIHØGSKOLEN

IT-puls Trondheim november ROBOTISERT PROSESS- AUTOMATISERING. Digital modenhet. Gina Husebø, EVRY. #ITpuls

Web Accessibility Toolbar. Struktur. Funksjonene. Headinger. Mer om tilgjengelighet og Flash.

Viktig. Rettet i koden. Obligatorisk oppgave 2 Litt flere detaljer om semantikksjekk og kodegenerering. Semantikksjekk

Forprosjektrapport Gruppe 30

pnvdb Documentation Release Jan Tore Kyrdalen

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

Kravspesifikasjon. Høgskolen i Oslo, våren 2011 Sted og dato: Oslo, 9. februar Gruppemedlemmer

Dynamic Programming Longest Common Subsequence. Class 27

Betinget eksekvering og logiske tester i shell

DIGITAL SKOLEEKSAMEN FOR STUDENTER VED POLITIHØGSKOLEN

TB-615 / TB-617 Wireless slim keyboard. EN User guide SE Användarhandledning FI Käyttöohje DK Brugervejledning NO Bruksanvisning

API: Application programming interface, eller programmeringsgrensesnitt

BIBSYS Brukermøte 2011 Live Rasmussen og Andreas Christensen. Alt på et brett? -om pensum på ipad og lesebrett

Forprosjektrapport Bacheloroppgave 2017

Brukerveiledning for nedlastning og installasjon av Office Av Roar Nubdal, fagprøve IKT-servicefag, juni 2014

Forprosjekt Hovedprosjekt ved Høgskolen i Oslo Våren 2008

BankID 2.0. Rune Synnevåg, Uni Pluss AS

Problem med innlogging til Sauekontrollen Web?

Ny teknologi gir nye godstransportløsninger

Programmering. Carsten Wulff

4.5 Kravspesifikasjon

Forsvunnet katt webside

Utstyr for avstandsmåling. Dommersamling 14. mars 2015 Stein Jodal

THE MONTH THE DISCIPLINE OF PRESSING

P L A N I A 8 S Y S T E M K R A V PLANIA 8 SYSTEM KRAV. Plania 8 Systemkrav.docx av 8

Presentasjon av hovedprosjekt ved HIST Nettbutikk

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Innholdsfortegnelse. 1. Testing Feiltesting av koden Funksjonstesting: Kilder.10

Brukertesting i et nøtteskall

JigZaw - Verktøy. Teststategi utviklet av. Erik Drolshammer Bård Lind. Verifiser Forventet Funksjonalitet

SalApp og Stortingets konferansesystem. Oslo, 4. sep 2014 Per Gunnar Øen Jensen

Mange nye og kule tips til utvikling av dine E-Site websider!

UNIVERSITETET I OSLO

Oblig 5 Webutvikling. Av Thomas Gitlevaag

Endelig ikke-røyker for Kvinner! (Norwegian Edition)

Moving Objects. We need to move our objects in 3D space.

Administrasjon av postnummersystemet i Norge Post code administration in Norway. Frode Wold, Norway Post Nordic Address Forum, Iceland 5-6.

AVSLUTTENDE EKSAMEN I/FINAL EXAM. TDT4237 Programvaresikkerhet/Software Security. Mandag/Monday Kl

Kartleggingsskjema / Survey

Cerebrum Komponentarkitektur

GraphQL. Hva, hvorfor, hvordan

Vekeplan 4. Trinn. Måndag Tysdag Onsdag Torsdag Fredag AB CD AB CD AB CD AB CD AB CD. Norsk Matte Symjing Ute Norsk Matte M&H Norsk

Prosjektet Digital kontaktinformasjon og fullmakter for virksomheter Digital contact information and mandates for entities

of color printers at university); helps in learning GIS.

Call function of two parameters

Brukerveiledning for identifisering med BankID

Transkript:

FluentAutomation Et automatiserings-rammeverk for regresjonstesting (og mye annet! )

Om meg Thomas Fjelde Krog, thomas.fjelde.krog@bouvet.no Bor på Jørpeland Ansatt i Bouvet siden mars 2012 Utvikler i prosjektet TaxiFinans Faglig støtte: Arne Kristian Jansen, arne.jansen@bouvet.no, samme prosjekt 2

Om TaxiFinans Regnskapsapplikasjon for taxisentraler Turtransaksjoner fakturaer/utbetalinger regnskapsjournaler Nyutvikling av gammel løsning ca. 4-5 utviklere pågått siden høsten 2011 Vi tester & regresjonstester stort sett selv ASP.NET MVC 4 EF 5, Code First Migrations NServiceBus 4 Bootstrap Git TeamCity Octopus Deploy 3

Om FluentAutomation Wrapper rundt Selenium WebDriver (seleniumhq.org) eller WatiN (watin.org) Fluent syntaks Støtter de fleste nettlesere: IE (32/64), Chrome, Firefox, Safari, Android (eksperimentell), ipad (eksperimentell), iphone (eksperimentell), PhantomJS (eksperimentell) Kjører «synlig» eller «usynlig», støtter screenshot Kan kjøres remote; kan skriptes Ganske konfigurerbar Finnes på NuGet: install-package FluentAutomation.SeleniumWebDriver install-package FluentAutomation.WatiN Testing bare én av mange funksjonsområder, kan generelt brukes til å utføre alle slags repetitive ting i en nettleser Anbefalt lesestoff: søk på FluentAutomation Doc 4

Om Selenium Sender kommandoer til nettleseren om handlinger som skal utføres Bruker nettleserens native kommandoer (API). Oppsummering hentet fra seleniumhq.org/docs: Selenium-WebDriver makes direct calls to the browser using each browser s native support for automation. How these direct calls are made, and the features they support depends on the browser you are using. Information on each browser driver is provided later in this chapter. For those familiar with Selenium-RC, this is quite different from what you are used to. Selenium-RC worked the same way for each supported browser. It injected javascript functions into the browser when the browser was loaded and then used its javascript to drive the AUT within the browser. WebDriver does not use this technique. Again, it drives the browser directly using the browser s built in support for automation. Støtte for utvikling i flere språk, bl.a. Java og C# Anbefalt lesestoff: seleniumhq.org 5

Om FluentAutomation API Gir tilgang til hele DOM'en Lettforståelige og ensartede signaturer: tar typisk inn selector (streng), «ElementProxy» og/eller sidekoordinater Støtter både CSS- og jquery-selector-syntaks «PageObject» Egne metoder for assertion, som enten logger assertion-feil eller kaster exception direkte Kan asserte på veldig mye, f.eks. eksistens av elementer, CSSklasser, attributter eller tekst, eller på en egendefinert funksjon som igjen bruker kan bruke API et og som returnerer true/false Mange av metodene har en implisitt «vent/prøv på nytt»-funksjon innebygd Automatiseringen går nemlig meget raskt, kan fort skape utfordringer 6

Hvorfor valgte vi FluentAutomation og ikke Selenium direkte? Enkelt rammeverk mindre og mer lettlest kode for standard handlinger (Bakside: Mister vi noe av Seleniums funksjonalitet på veien til fluent syntaks?) 7

Hvordan bruker vi FluentAutomation i prosjektet? Hittil beskjeden testsuite (20ish tester) som kjører automatisk ved hvert bygg Tester noen utvalgte features vi anser som viktige, + noen vanlige «happy path»-scenarier I tillegg noen nyttige automatiseringer som bistår manuell testing / ytelsestesting Strukturert Fluent-koden veldig, slik at selve testmetodene blir svært enkle å lese/skrive, nesten på pseudokodenivå Initierer et nytt taxifirma for hver test, for å unngå at tester går i beina på hverandre og evt. brukere Valgt å initiere databasen med grunndata via «bakdøra», ikke via CRUD Sender inn taxiturer på vanlig måte via køene 8

FluentAutomation våre erfaringer Støter stadig på utfordringer men finner som regel en vei rundt bruk av 3.parts JS/HTML-rammeverk øker risikoen for utfordringer De første testene er relativt kostbare å skrive, men går lettere etter hvert (vel å merke med intelligent, DRY kode) Stor verdi i å automatisere regresjonstest-suiten, kan betale seg allerede etter et par releaser Veldig sårbare for selv små endringer i GUI Når man tester det man selv utvikler: blir mye mer bevisst på å skrive en god og testbar (!) DOM Blir bevisst på å konstruere et «lukket testlaboratorium» Gøy! Særlig når det fungerer! 9

Vår foreløpige konklusjon Automatiserte tester gir stor verdi i lengden, men koster litt å vedlikeholde. Egner seg derfor best for mer langsiktige prosjekter uten radikale endringer for hver iterasjon. Løpende vurdere hvilke deler av systemet som er gode kandidater for automatisert testing 10

Demo / spørsmål Eksempel på tenkt regresjonstest av en arbitrær ekstern webside kanbanflow.org testen er utviklet av meg for anledningen (Prosjektet kan lastes ned; se etter KanbanFlowAutomations.zip ved siden av denne presentasjonen.) Slik ser det ut når vi kjører TaxiFinans sin regresjonstest-suite Spørsmål? (helst ikke ;-) 11