Continuous Delivery 3.0

Tips & tricks Google Analytics: meer zinvolle data halen uit je account

Bijna iedere website is tegenwoordig gekoppeld aan een Google Analytics account.    Wanneer je het dashboard van Google Analytics opent, komen er een hoop statistieken te voorschijn. Maar op welke manier voegt deze omgeving vol met data nou echt iets toe aan het bedrijfsresultaat? In dit blogartikel worden daarom een aantal tips en tricks gegeven hoe je meer waardevolle data uit Analytics statistieken haalt.

 

analytics-1925495_960_720.png

Tip 1: gebruik filters

Het Google Analytics account beschikt over een hoop data van de gekoppelde website. Lang niet al deze data zijn relevant. Filters helpen bij het toevoegen van zinvolle data. Filters zorgen er namelijk voor dat in dataweergave irrelevante data worden verwijderd. Een filter kan toegevoegd worden door in het hoofdmenu van Google Analytics naar het tabblad ‘beheerder’ te gaan. Het is belangrijk om er rekening mee te houden dat de wijzigingen, die door het gebruik van filters worden aangebracht, niet zo maar terug te draaien zijn. Om te beginnen met filters is het belangrijk om eerst de onderstaande filters toe te passen:

  • Intern verkeer wegfilteren

  • Filteren op land

Door intern verkeer van de website weg te filteren, wordt voorkomen dat er een vertekend beeld ontstaat van het aantal relevante bezoekers op de website. Op deze manier worden bijvoorbeeld werknemers, die de website bezocht hebben, niet opgenomen in de statistieken. Door het uitsluiten van het IP-adres van het bedrijf kan dit gerealiseerd worden. Meer weten? klik dan hier.

Daarnaast is het belangrijk om te filteren op land. Dit voorkomt namelijk een hoop referral spam, dat vaak uit het buitenland afkomstig is. Op deze manier blijven alleen de waardevolle data-gegevens  over. Wanneer het bedrijf zich op verschillende landen richt, kun je natuurlijk ook op meerdere landen tegelijkertijd filteren.

 

Tip 2: creëer een segment

De website genereert een hoop verkeer, maar natuurlijk wil je weten hoeveel van deze bezoekers daadwerkelijk waardevol zijn voor de website? Deze inzichten kunnen verkregen worden door het webgedrag van de bezoekers in verschillende segmenten in te delen. Zo kan er een segment worden gecreëerd van het aantal bezoeker op de website, dat overgaat tot een conversie. Op deze manier kan achterhaald worden in hoeveel procent van het totaal aantal sessies op de website er een conversie heeft plaatsgevonden. Een conversie kan bijvoorbeeld zijn: de aankoop van een product, een bezoeker meldt zich aan voor de nieuwsbrief of een gebruiker download een whitepaper. Segmenten kunnen gecreëerd worden binnen de overzichtspagina ‘doelgroep, acquisitie & gedrag’.


35682917315_37863a7e19_b.jpg

 

Tip 3: vergelijk segmenten met elkaar

Om het Google Analytics account maximaal te benutten, kunnen er verschillende segmenten met elkaar vergeleken worden. Op deze manier kan bijvoorbeeld achterhaald worden of meer mannen of juist vrouwen de website bezoeken? Of welke apparaten jouw bezoekers gebruiken en tot welke leeftijdsgroepen zij behoren en noem maar op… Segmenten met elkaar vergelijken doe je op dezelfde overzichtspagina, waarop je ook een segment aanmaakt, namelijk ‘doelgroep, acquisitie & gedrag’.

 

Tip 4: maak een aangepast rapport

Wanneer je Google Analytics opent en op het dashboard terecht komt, komen er een aantal standaard rapporten tevoorschijn. Deze bestaan niet altijd uit de meest zinvolle informatie. Daarnaast wil je natuurlijk in één oogopslag de belangrijkste resultaten van de website inzien.  Google Analytics heeft daarom een functionaliteit gecreëerd waarin je zelf een aangepast rapport kunt maken. Zo kun je bijvoorbeeld meteen zien hoe vaak er een conversie heeft plaatsgevonden, doordat er bijvoorbeeld een offerte op de website is aangevraagd. Een aangepast rapport creëer je door linksboven op ‘aanpassing’ te klikken. Vervolgens ga je naar ‘aangepaste rapporten’ en klik je op ‘+nieuw aangepast rapport’.

 

Met de bovenstaande tips kun je nu hopelijk zelf aan de slag, om waardevollere data uit je eigen Google Analytics account te halen, die de bedrijfsresultaten zullen versterken. Nog vragen? Mail dan naar e.groot@search4solutions.nl

Google Analytics logo.png

Continuous Integration met GitLab

Door Freek Schoenmakers

Logo_gitlab.png

Bij softwareontwikkeling is samenwerking essentieel. Vaak werken een heleboel ontwikkelaars tegelijk aan hetzelfde softwareproject. Het is daarom van belang dat versiebeheer goed geregeld is. Hier biedt GitLab goede ondersteuning voor. Met GitLab kun je heel gemakkelijk versies beheren en verzoeken plaatsen om een nieuwe feature aan een release toe te voegen. Maar dat is niet het enige. Een andere – zeer nuttige – functie van GitLab zijn de zogenoemde pipeline tools. Hiermee wordt het build-, test-, deployment- en provisioningproces geautomatiseerd. Naast vele softwarebedrijven zoals Ticketmaster, Uber, ING en Alibaba maakt ook Universiteit Utrecht succesvol gebruik van GitLab.


Wat is het?

Pipeline tools ondersteunen softwareontwikkeling door het automatiseren van taken zoals testen. Een pipeline is een groep jobs die worden uitgevoerd in stages. De jobs worden parallel uitgevoerd; als ze allemaal succesvol uitgevoerd zijn gaat de pipeline verder naar de volgende stage. Deze jobs en stages kunnen van alles omvatten, maar heel standaard zijn de build en test stages.

Hieronder zie je een schematische weergave van een pipeline uit een softwareproject van Freek Schoenmakers, een van onze Young Professionals. Deze pipeline bestaat in totaal uit drie stages (build, test en deploy) en vier jobs.

Freek_pipeline_1.png

In de build stage wordt een oplossing gecompileerd en wordt het resultaat eventueel opgeslagen als artifact. Vervolgens worden in de test stage twee jobs uitgevoerd. In deze jobs wordt een serie geautomatiseerde tests losgelaten op de artifacts van de build stage. De testresultaten worden opgeslagen als artifact en als alle tests succesvol doorlopen zijn is de job voltooid. Je ziet in het schema een test codestyle. De projectgroep had afgesproken om volgens een vaste stijl te werken, zodat alle code op elkaar lijkt en daardoor goed leesbaar is. De oplossing uit de build stage werd getest op deze codestyle. Dat scheelt de code reviewers een hoop tijd!

Als laatst wordt in het voorbeeld de deploy stage doorlopen. Hierbij wordt een release-build van de oplossing gecompileerd en bewaard. Op die manier is het heel makkelijk om een oudere versie opnieuw te downloaden en te vergelijken. Dit kan bijvoorbeeld handig zijn bij een vergadering met een opdrachtgever. Merk op dat hier in de deploy stage alleen een release-build gemaakt is. Voor dit project was niet meer nodig. Echter, in professionele omgevingen zou de deploy stage bijvoorbeeld de nieuwe versie naar een server kunnen uploaden en zo automatisch de server bijwerken.

“Pipelines bieden veel flexibiliteit en mogelijkheden rondom projectontwikkeling en automatiseren taken die anders veel tijd zouden kosten.”

Je kunt zelf met een kort script precies definiëren hoe de pipeline verloopt. Welke stappen moeten er worden doorlopen vóór het starten van de pipeline, welke stages bevat deze, uit welke jobs bestaat iedere stage, wat houdt elke job precies in, et cetera. Dit biedt veel flexibiliteit en mogelijkheden rondom projectontwikkeling en automatiseert taken die anders veel tijd zouden kosten.

Freek_pipeline_2a.png

In GitLab kun je overigens verschillende statistieken zien over de pipelines, zoals hiernaast en hieronder weergegeven. De statistieken die je hier ziet hebben betrekking op het softwareproject dat net beschreven is.

Freek_pipeline_2b.png

verschillen met GitHub

Niet alle services hebben deze pipeline tools op dezelfde manier geïntegreerd. Zo heeft GitHub externe services nodig, bijvoorbeeld Travis CI. Hierdoor ontstaat het risico om  een ‘radertje in de machine’ te worden. GitLab daarentegen zet de pipeline tools centraler neer, waardoor deze de bron vormen van alle activiteiten.

verschillen met Azure DevOps

Echter, ook bij GitLab is er nog altijd ruimte voor verbetering. Zo kan het gebruiksvriendelijker. Op dit moment maak je een configuratiebestand aan en vervolgens pikt GitLab dit bestand automatisch op. Ter vergelijking: Azure DevOps heeft hier een mooie grafische interface voor. Hier kun je gemakkelijk jobs en stages toevoegen en nieuwe pipelines configureren zonder direct in script bestanden te rommelen.

Een ander voordeel van Azure DevOps is dat het doorlopen van het deployment-proces beter is ingebouwd. Door deze integratie kunnen de resultaten van een pipeline gemakkelijk gedeployed worden zonder tussenkomst van een externe service. Dit is ook mogelijk in GitLab, maar daar zijn extra services voor nodig waardoor het minder eenvoudig is dan bij Azure. Zo is er bijvoorbeeld integratie mogelijk met Prometheus voor performance monitoring en Kubernetes voor clustermanagement.

Al met al zijn er veel voordelen van Continuous Integration en ik hoop je te hebben geïnspireerd om te profiteren van de services die GitLab hiervoor biedt.

A/B testing

Door Ewan Klomp

directionalsign_83858.png

Veel mensen denken dat A/B testing enkel iets is voor grote bedrijven, met heel veel gebruikers zoals Facebook of Amazon. Maar niets is minder waar. Met de komst van tooling zoals Google Optimize is het mogelijk om ook bij kleine bedrijven A/B tests effectief uit te voeren. A/B testing met weinig moeite en zeer beperkte kosten. Op deze manier ontstaat een nog betere en completere teststraat. Ook kan de Product Owner nog beter inzicht krijgen in het softwaregebruik.

Wat is A/B Testing ook al weer?

Om nog even het geheugen op te frissen: bij een A/B test krijgen gebruikers applicatieversie A of applicatieversie B. Op basis van tevoren bepaalde metrics wordt uiteindelijk één van de versies als definitieve versie gekozen voor alle gebruikers.

Door A/B tests kan een softwareproducent betere beslissingen nemen op het gebied van User Interfaces, door bijvoorbeeld te kijken naar welke versie correleert met de grootste conversie.

Google Optimize als A/B test tool, biedt een goede integratie met Google Analytics.

Google Optimize

In dit artikel gaan we dieper in op Google Optimize. Optimize biedt een goede integratie met Google Analytics. Daarnaast heeft het een gratis versie waardoor je snel alle opties kunt onderzoeken. Uiteraard zijn er meer tools waarmee A/B tests uitgevoerd kunnen worden, zoals the A/B testplatform van VWO of het experimentenplatform van Optimizely. Welke het best bij jouw organisatie past is afhankelijk van je teststrategie.

google-optimize-logo-480x480-1-140x140@2x.png

Implementatie A/B Testing

Een A/B test opstellen is in feite een experiment uitvoeren. Je begint met een hypothese, verandert een element en bekijkt de statistieken (lees resultaten) van de vooraf bepaalde metrics.

Google Optimize heeft een editor waarmee je webelementen gemakkelijk kunt bewerken. Je meet met deze webelementen de metrics vanuit je Google Analytics doelen. Een andere nuttige functionaliteit van Google Optimize is dat je je direct op op bepaalde gebruikers kunt richten, op basis van bijvoorbeeld gedrag of locatie.

A/B Testing en Continuous Delivery 3.0

Met A/B testing leg je ook een directe link met het Continuous Intelligence en Continuous Planning gedeelte van Continuous Delivery 3.0. Op deze wijze krijg je nog meer informatie van gebruikers, op basis van de verzamelde metrics. Hier kan de Product Owner de backlog prioritering op aanpassen

AB_testing.png

Het figuur toont hoe de resultaten van A/B testing het Continuous Intelligence proces en Continuous Planning proces voeden

Bijvoorbeeld: als de conversie met de nieuwe versie niet is verhoogd, kan je een work item aanmaken waarin je onderzoekt hoe je de conversie wel kunt verhogen.

Via de bovenstaande aanpak kun je laagdrempelig kennismaken met de mogelijkheden om je product en je ontwikkelprocessen te verbeteren met A/B Testing, Continuous Intelligence en Continuous Planning. Ik hoop je geïnspireerd te hebben om A/B testen te implementeren in jouw teststraat!

Continuous Delivery 3.0 Maturity Model

Door: Ewan Klomp & Jan Vlietland

In 2016 hebben we het Continuous Delivery 3.0 Platform ontwikkeld. In dit artikel introduceren we het bijbehorende Continuous Delivery 3.0 model.

Tijdens de implementatie van het platform bij softwarebedrijven hebben we een patroon opgemerkt in de implementatiestappen. Bijvoorbeeld een unit testset wordt doorgaans eerder gemaakt dan de acceptatie testset.

Deze afhankelijkheden hebben geleid tot het onderstaande Continuous Delivery 3.0 Maturity Model.

ContinuousDelivery30 Maturity Model v1.0.png

Verticaal staan de 5 Continuous Delivery 3.0 gebieden, zijnde Intelligence, Planning, Integration, Testing en Deployment. Horizontaal staan de 5 stappen naar volwassenheid.

 

Introductie Ewan Klomp - DevOps Engineer / Continuous Delivery

20180815_195621.jpg

Hallo, mijn naam is Ewan Klomp en ben bij Search4Solutions werkzaam als Continuous Delivery Expert.

Als eerste Young Professional heb ik het programma en de groep zien groeien in professionaliteit en kennisdeling. We zijn begonnen met een kleine club informaticastudenten die een passie voor software development hebben. Inmiddels zijn we uitgegroeid tot een grote club young professionals die met passie aan onze projecten werken.

Zelf heb ik mij kunnen specialiseren op het gebied van Continuous Delivery, door intern een traineeship te volgen. Daarna met de opgedane kennis in het bedrijfsleven te stappen, in projecten die mij deze kennis liet benutten. Deze projecten waren leuk en succesvol. Eveneens heb ik in die tijd mijn studie Informatiekunde met veel plezier afgerond. 

Nu maak ik als Young Professional de stap naar voltijd. Ik kijk er zeer naar uit om deze stap te mogen maken en ik ben benieuwd wat het mij gaat brengen.

In de tussentijd wil ik mijn opgedane kennis delen met de community die we hebben opgebouwd. In de komende tijd komen er op deze pagina daarom artikelen die u zou kunnen helpen met uw Continuous Testing processen. Vorige week is een artikel uitgekomen over cross platform UI Testing met Xamarin als voorproefje op deze reeks.

In de volgende delen zal u meer kunnen lezen over AT testen, performance testen en A/B testing. Wilt u eerder meer weten? Neem dan contact met ons op.

Cross-platform UI testing met Xamarin

Door: Ewan Klomp

Nadat Microsoft begin 2016 Xamarin overnam, heeft Microsoft grote stappen gezet om cross-platform applicaties met goede performance in C# te bouwen. De snelheid is nog niet helemaal als Native code. Maar door de mogelijke code sharing tussen de twee platformen (iOS en Android) is het een degelijke optie. Zeker wanneer er geen zware computationele berekeningen nodig zijn. Dit artikel gaat dieper in op hoe je User Interface tests uit één project, op beide platformen draait.

Simpele werkwijze

De user interface test van Xamarin werken met een interface. De user interface test library heet Xamarin.UITest en de interface de IApp interface. Xamarin kan met dezelfde interface beide platformen bedienen. Door de IApp interface is het klikken van een object op iOS en Android heel simpel, met dezelfde app.Tap(string) method call.

Creëren van test cases

De methoden die de IApp interface heeft zorgen dat er diverse, geavanceerde test cases gecreëerd kunnen worden. De mogelijkheden zijn vergelijkbaar met die van grotere test platformen zoals Selenium. Ook kan je met Xamarin objecten makkelijk vinden door middel van naam of XPath. Vervolgens kun je ze klikken of er tekst bij invoeren. Natuurlijk bevat Xamarin specifieke methoden voor gestures zoals drag/drop, pinching, en swiping om een gebruiker zo goed mogelijk na te bootsen.

 HIerboven zie je een snippet van een Test case, geschikt voor zowel IOS als Android

HIerboven zie je een snippet van een Test case, geschikt voor zowel IOS als Android

Hoe het werkt

Als je dus binnen je test een object aan wil klikken genaamd ´buttonHome´, voer je de functie app.Tap(buttonHome) uit. Dit zoekt dan het object met id ´buttonHome´ op in de huidige views die open staan. Om er voor te zorgen dat de juiste view de juiste ID heeft moet de ID op de juiste plek in de layout files toevoegen: .xib voor iOS en .xaml voor Android.

  • Op iOS geef je een id op deze manier mee aan een element in de .xib file:
    <accessibility key="accessibilityConfiguration" identifier="buttonHome"/>

  • Bij Android in de .xaml op deze manier:
    android:id="@+id/buttonHome"

Let hier op

In principe is het mogelijk om een test te schrijven die draait op Android en IOS. Het probleem zit soms in het verschil van gedrag tussen de platformen op het gebied van views. Hier moet dan binnen 1 testcase een verschillende implementatie voor geschreven worden. Verder is het van belang dat elk element van een testcase waarmee je werkt zijn eigen unieke ID heeft en hetzelfde zijn op beide platformen. Bij een juiste implementatie is het enige verschil de initialisatie van de applicaties voor het testen. Let er op dat je de ID’s van de objecten gelijk houdt op beide platformen. Hierdoor kunnen juiste objecten op de juiste plek gevonden worden.

En nu jij

Hopelijk heb ik je enthousiast gemaakt en ga je zelf met Xamarin aan de slag. Als je hier meer over wilt weten kun je me bereiken via ons contactformulier:

Je applicatie hosten in containers

Het verplaatsen van de hosting van een eigen rekencentrum naar een cloud-omgeving kan veel besparing opleveren. Bedrijven verplaatsen daarom hun hosting op grote schaal naar de cloud.

Veel organisaties denken daarbij dat virtual machines dan de beste oplossing is. Jammer want ze missen dan de kans om software te hosten in containers. Hosten in containers heeft vele voordelen. In dit artikel leggen we uit wat containers zijn en wat de voor- en nadelen zijn van containers.

Wat zijn containers?

Een container biedt de mogelijkheid om het Operating Systeem te sharen over meerdere containers. Ze zijn daardoor veel goedkoper qua hosting dan virtual machines. 

Het Operating Systeem onder de container bevat alle benodigde libraries die een applicatie nodig heeft om te functioneren. De containers zelf zijn daardoor zeer compact en zijn binnen een paar seconden te creeren. Dit maakt ze niet alleen goedkoper, maar ook veel flexibeler.

Containerization is geen nieuw begrip. Het idee om de OS laag te virtualiseren bestaat al sinds begin deze eeuw. 

Het container framework ‘Docker’ heeft het begrip containers praktisch gepopulariseerd. Veel innovatieve bedrijven hebben Docker snel geadopteerd. 

 
VM_vs_Container_stack.png
 

De nadelen van containers.

Evenals de virtual machine niet de universele vervanger is van de fysieke server, is de container dit niet van de virtual machine. Beide technologieën hebben hun krachten. Containers floreren in een omgeving met microservices. Ze schalen mooi, doordat ze zeer snel te creeren zijn afhankelijk van het benodigde dataverkeer.

Containers zijn echter wel gevoeliger voor virussen doordat ze het onderliggende Operating Systeem delen. Ook kunnen ze diep reiken in het OS om überhaupt te functioneren. VM-instanties bieden deze controle en veiligheid wel. 

Overweeg containers

Bij veel bedrijven staat veiligheid op nummer één en kennis omtrent containers is vaak niet paraat, virtual machines zijn daarom een veilige keuze.

Jammer, want de toekomst van containers is veelbelovend en het zal niet lang duren voordat de meerderheid deze techniek adopteert, zoals dit nu gebeurt met VM-instanties in de cloud.