Om (ontwikkel)teams zo vroeg mogelijk van feedback te voorzien met betrekking tot performance voer ik regelmatig performance testen uit. Zo ook voor de verschillende projecten die ik bedien binnen mijn huidige opdracht. Dankzij de regelmatige testen bouw je meer historische data op waardoor je trends kan gaan ontdekken. Bovendien worden hierdoor ook (enigszins) de effecten van andere wijzigingen inzichtelijk (anders dan een nieuwe release van de applicatie). Denk hierbij bijvoorbeeld aan OS updates op de applicatie server of wijzigingen aan het netwerk of aan backend systemen.
In deze blog geef ik kort en bondig neer in welke opzet en met welke tooling ik dat in deze opdracht doe. Ik zou het leuk vinden te horen wat jij daarvan vindt en of en zo ja welke ervaring jij hebt met performancetesten in de pipeline.
Bij mijn opdracht gebruik ik de volgende tooling:
SVN (Subversion) – versiebeheer software
Bamboo – continuous integration software (pipeline)
Oracle ATS – performance test tooling
Splunk – software voor zoeken, monitoren en analyseren van data, gegenereerd door servers.
SVN
In deze context wordt SVN gebruikt om het powershell script te beheren die door de Bamboo plannen gebruikt wordt. Het gaat hier dan om een script die de test aftrapt in Oracle ATS.
Bamboo
In Bamboo heb ik per project een plan aangemaakt. Als er van te voren testdata aangemaakt moet worden heb ik 2 stages, anders 1. De eerste stage is dan natuurlijk voor het voorbereiden van testdata en de tweede is voor de uitvoer van de performance test. De stages bevatten zelf weer jobs die binnen die stage uitgevoerd worden. Ik focus me nu alleen op de uitvoer stage.
Binnen de uitvoer stage hebben we 2 jobs; Source Code Checkout en een PowerShell Task.
De Source Code Checkout haalt uit SVN het powershell script waarmee we de test in Oracle ATS willen starten. De PowerShell Task gebruikt vervolgens dat script en geeft Arguments mee. Dit zijn gebruikersnaam/wachtwoord combinaties voor OLT (Oracle Load Testing; de Controller van Oracle ATS) en van de server waarop OLT draait en enkele project specifieke waardes zoals applicatie naam en naam van scenario file (.scn).
Om bovenstaande in te kunnen stellen, moet je bij de plan configuratie nog wel de SVN repository toevoegen onder Repositories. Ik heb bij Triggers een Scheduled trigger toegevoegd waarbij ik in kan stellen wanneer dit plan gerund moet worden (bijv. elke vrijdag om 20:00 uur).
Oracle ATS
Dit is de performance test tooling die bij mijn opdracht gebruikt wordt. Via OpenScript kan je scripts maken. Via Oracle Load Testing (OLT) kan je scenario’s maken en performance testen uitvoeren. Je kan deze ook via command line aftrappen. Op deze manier worden de testen ook gestart via de pipeline in Bamboo. Het commando ziet er als volgt uit:
C:/OracleATS/jdk/bin/java -jar C:/OracleATS/lib/OLTCommandLine.jar
-run
-OLTServer=localhost:8088
-user=oats
-password=<oats password>
-scenarioFile=<path .scn file op OLT server>
-session=<unieke session name>
De resultaten van de performance test komen in een Oracle database terecht. Door middel van een scriptje gemaakt door een DBA’er wordt deze content weggeschreven in een log.
Splunk
De logging die gegenereerd wordt met de performance test resultaten wordt via een Splunk Forwarder opgepakt en wordt dus beschikbaar in Splunk.
In Splunk hebben we per project een scriptje dat elk uur draait om te kijken of er voor dat specifieke project een testrun is geweest met een eindtijd. Als dat het geval is, worden de gegevens waarmee die run te identificeren is toegevoegd aan een lookup waarin alle runs staan van dat project. Hierbij is vooral het sessie id belangrijk.
In een dashboard worden dan in een dropdown selectie velden de verschillende runs getoond uit die lookup. Hierbij kunnen dan 2 runs geselecteerd worden die met elkaar vergeleken kunnen worden. De data wordt dan opgehaald op basis van de sessie id’s die horen bij de geselecteerde runs.
Dat was hem weer. Zoals gezegd ben ik benieuwd hoe jullie dit doen. Is de opzet vergelijkbaar of helemaal anders? Ik hoor het graag!
Comments