Oxygen är ett nytt verktyg för Robot Framework som samlar all testrapportering för bättre överblick och mer användbara kvalitetsmått.
Tatu Kairi
Principal Consultant
Tatu enjoys piña coladas, getting caught in the rain, is not into yoga and has half a brain.
Oxygen är ett nytt verktyg med öppen källkod som Eficode har skapat för att samla alla separata testrapporter i en och samma rapport. Oxygen erbjuder olika sätt att kombinera rapporter med hjälp av Robot Frameworks rapportformat och utbyggbarhet. Det ger bättre överblick och möjliggör vidare analys av kvalitetsmått. Låt mig visa hur det fungerar.
Från meningslös data till relevant information
Att använda flera verktyg för att testa mjukvara är ett bra sätt att höja kvaliteten och därmed känna sig säkrare på det du gör. Men varje verktyg har sin egen typ av resultatrapport, vilket innebär att vi behöver titta på flera ställen för att förstå helheten. Rapporterna är strukturerade på olika sätt, vilket kräver kontextväxling och sänker produktiviteten. Värst av allt är att utvecklare måste göra osäkra tolkningar för att sammanställa resultaten till ett releasebeslut.
Oxygen är ett verktyg som kombinerar separata testrapporter med hjälp av Robot Framework, ramverket för generell automatisering med öppen källkod. De sammanställda resultaten ger bättre kvalitetsmått och sparar utvecklarnas tid. Det kan enkelt integreras i ditt arbetsflöde och även i automatiserade pipelines.
Att välja rätt verktyg för uppgiften
En av DevOps grundprinciper är att välja rätt verktyg för uppgiften. Inom testautomatisering är några av de vanligaste verktygen:
Ett tekniskt testverktyg på låg nivå som visar att mjukvaran fungerar som programmeraren avsett
Ett heltäckande end-to-end-testverktyg på hög nivå som visar att verksamhetskraven uppfylls och fungerar funktionellt
Ett prestandatestverktyg som ger oss förtroende för att mjukvaran är tillräckligt effektiv
Ett säkerhetstestverktyg som kontrollerar att det inte finns några uppenbara säkerhetsproblem.
Beroende på verksamhetens sammanhang kan listan över specialiserade testverktyg som ett projekt behöver vara oändlig. Våra kunder behöver ofta, utöver ovanstående, verktyg för att testa följande:
Kritiska API-integrationer
Infrastruktur vid användning av Infrastructure-as-Code (IaC)
Tillgänglighetsstandarder som WCAG
Spårbarhet för regelefterlevnad inom tung industri
Att skapa mening i helheten
Att tolka de olika rapporterna som dessa verktyg skapar leder till kunskapssilos inom ett projekt. Endast ett fåtal personer kan avgöra projektets verkliga status, vilket leder till den ökända bus factor.
All data från dessa rapporter sammanfattas vanligtvis genom att visas som mätvärden i en dashboard. I praktiken leder det antingen till omfattande underhållsarbete för att hålla mätvärdena igång, eller till att valet av verktyg begränsas utifrån vad som redan har integrerats med dashboardlösningen.
Det är svårt att motivera underhållsarbete för ledningen när resurserna redan är begränsade. Att begränsa verktygsalternativen ger inte heller teamen rätt förutsättningar att använda de verktyg de behöver, vilket kan leda till ineffektivt och meningslöst arbete.
Om ett litet urval av testverktyg väljs på fel grunder kan det till och med försämra träffsäkerheten i våra kvalitetsmått. Exempelvis ger vissa vanligt använda verktyg för enhetstestning inte utvecklaren möjlighet att ange syftet med ett testfall. Då grupperas alla testfall som enhetstester, trots att vissa av dem kan vara komponent-, integrations- eller systemtester.
Vi presenterar Oxygen för Robot Framework
Eficode deltar i det europeiska forskningsprogrammet Testomat Project, som finansieras av Business Finland. Baserat på programmets resultat har Eficode skapat ett nytt verktyg för Robot Framework som erbjuder ett enkelt sätt att samla olika testrapporter i en.
Med Oxygen kan du skriva acceptanstester som motsvarar varje verktyg du vill köra. Oxygen omvandlar sedan automatiskt deras rapporter till testfall i Robot Framework och integrerar därmed allt. För varje testfall som det andra verktyget har kört finns ett motsvarande testfall i Robot Frameworks logg och rapport, med relevant information bevarad, till exempel testfallets status.
Låt oss titta på hur de ser ut. Nedan har vi fyra testfall i Robot Framework. De två första kör JUnit-testfall via Maven, det tredje kör prestandatester med Gatling och det sista kör en säkerhetsskanner med ZAP. Som du ser i de två första kan vi skilja mellan testkörningar som gjorts med samma verktyg. På så sätt kan du ge mer kontext kring deras syfte.
Exempel från Oxygens nyckelordsdokumentation
Om du behöver köra olika testverktyg i separata CI/CD-pipelines eller i olika miljöer kan Oxygen tillhandahålla ett kommandoradsgränssnitt som enkelt integreras i valfri CI/CD-pipeline. Du kan omvandla en enskild testrapport från ett annat verktyg till en Robot Framework output.xml-fil så här:
$ python -m oxygen oxygen.junit my_junit_results.xml
Du kan sedan kombinera den resulterande filen med andra testresultat med Robot Frameworks inbyggda verktyg rebot.
Ett utbyggbart verktyg för olika behov
I skrivande stund har Oxygen inbyggt stöd för tre testverktyg: JUnit, Gatling och ZAP. Ett centralt designmål för Oxygen är dock att vem som helst ska kunna bygga ut det. Genom att ta vara på open source-andan kan utvecklare integrera andra format för testrapportering – till nytta för alla.
Oxygen utökar funktionaliteten i Robot Framework, och på samma sätt kan du utöka Oxygen för att möta dina behov av rapportering. Du kan bygga ut Oxygen genom att skriva en handler: en enkel Python-klass som tillhandahåller 1) ett Robot Framework-nyckelord för att köra det andra verktyget och 2) en metod som tolkar rapporten och returnerar önskad information som en enkel nästlad dictionary.
Exemplet på en handler nedan tillhandahåller Robot Framework-nyckelordet Run My Tests, som skriver testresultat till en fil i JSON-format. Metoden parse_results() läser filen och skapar en dictionary-representation av resultaten som Oxygen förstår.
Exempel på handler från Oxygen repository.
Exemplet ovan är ett förenklat exempel som ska illustrera de två kärnkoncepten. Det första är en metod som OxygenLibrary tillhandahåller som ett nyckelord för att köra det externa testverktyget, och det andra är en metod som omvandlar den information du vill ha från det externa testverktygets rapport till Oxygens representation. Därefter vet Oxygen hur allt ska läggas in i Robot Frameworks logg och rapport. Det tillhandahåller även automatiskt ett utbyggbart eller överskrivbart kommandoradsgränssnitt för din handler.
Eficode håller på att skriva en djupgående guide, så håll utkik!
Oxygen möjliggör bättre kvalitetsmått
När du har samlat dina testrapporter i en enhetlig Robot Framework-rapport kan du enkelt läsa in data i en databas med verktyg som InfluxDB Plugin eller DbBot. Du kan sedan använda dem för att skapa visualiseringar med verktyg som Grafana. Därefter blir det enkelt att analysera data och skapa tydliga mätvärden.
Oxygen arbetar med Robot Framework-testfall, så taggar som läggs till i det ursprungliga testfallet blir också en del av resultaten. Det innebär att du kan kategorisera testfall även om det externa testverktyget saknar den funktionen (jag tittar på dig, XCTest). Du kan till exempel separera enhetstester från integrationstester. Eftersom taggar är en kraftfull funktion i Robot Framework kan de även användas med Oxygen: du kan samla statistik, skilja kritiska testfall från mindre viktiga testfall, definiera testkörningar och välja vad som ska köras i olika steg i CI/CD-pipelinen.
Gå gärna till Oxygen issue tracker för att föreslå nya funktioner eller rapportera buggar. Om du bygger en utökning för Oxygen hoppas vi att du publicerar den i Python Package Index och berättar det för oss, så att vi kan länka till dig.
- CI/CD
Subscribe to our newsletter
Related blogs