Kmom06: Automatiserad test

By . Latest revision .

Det handlar nu om att ta vara på de tester vi kör mot vår applikation och automatisera och visualisera dem så att vi har ännu större nytta av dem och det resultat de kan ge oss. När vi pratar tester så innebär det både enhetstester och den statiska kodvalidering som våra validatorer gör åt oss. Statisk kodvalidering innebär i vårt fall både kodstandarder och det som kallas “mess detectors” som upptäcker kod med förbättringspotential.

Vi skall jobba med begrepp som automatiserad testning, automatiserad bygg av projektet samt fundera över vad det är alla validatorer försöker berätta för oss. Detta kommer vi att göra genom att påbörja en kedja av Continous integration (CI) och koppla vårt repo mot byggtjänsterna Travis CI och Scrutinizer CI och låta dem bygga och testa vår kod, varje gång vi pushar en ny committ till GitHub/GitLab.

När vi är klara får vi en badge, en liten grön/röd status-bild av bygget, som berättar om kodbygget gick bra eller inte. Vi kan också få badges som ger oss information om hur vacker vår kod är, vilken upplevd kodkvalitet som vi har producerat.

När vi är klara så kommer vi framförallt att bättre förstå innebörden av vad följande tre badges kan innebära och vi kan även bedöma om de eventuellt berättar något om ordning och reda samt kodkvaliteten i det projekt som de representerar.

Build Status Build Status Code Coverage Scrutinizer Code Quality

Detta är instruktionen för kursmomentet och omfattar cirka 20 studietimmar. Fokus ligger på uppgifter som du skall lösa och redovisa. För att lösa uppgifterna behöver du normalt jobba igenom övningar och läsanvisningar för att skaffa dig rätt kunskap och förståelse av uppgiftens alla delar. Läs igenom hela kursmomentet innan du börjar jobba.

#Uppgifter & Övningar

(ca: 10-14 studietimmar)

Uppgifter skall utföras och redovisas, övningar är träning inför uppgifterna.

#Uppgifter

Följande uppgifter skall utföras och resultatet skall redovisas.

  1. Utför uppgiften “Integrera din applikation med en CI kedja”.

  2. Utför uppgiften “Analysera PHP kod ur kvalitetsaspekter

#Övningar

Följande övningar kan förbereda dig inför uppgiften.

  • I kursrepot under example/ci ligger ett kort exempel som ger en översikt till de steg som krävs för att integrera med byggtjänsterna Travis CI och Scrutinizer CI. Eventuellt vill du läsa igenom det innan du påbörjar den större övningen som ligger nedan.

  • Artikeln “Integrera din packagist modul med verktyg för automatisk test och validering” visar hur man kan integrera en PHP modul eller applikation mot ett par externa bygg och kvalitetstjänster, däribland Travis CI och Scrutinizer CI. Artikeln innehåller även videomaterial. Artikeln har ett par år på nacken men användes senaste hösten 2020 i undervisningen i kursen ramverk1. Du behöver inte utföra det som står i artikeln utan den är mer tänkt som exempel för att visa hur det fungerar så det räcker med att lsäa igenom artikeln och fokusera på Travis och Scrutinizer samt se på de videorna vid behov.

#Läs & Studera

(ca: 2-8 studietimmar)

#Föreläsning

Titta igenom följande föreläsningar.

#Software quality metrics and static code analysis

När det gäller snygg och ren kod försöker vi förstå om kodkvalitet kan mätas och visualiseras. Vilken typ av mätvärde, “metrics”, kan användas och vad säger de om programvaran. Hur ska vi arbeta med valideringsverktyg för att förbättra den upplevda kvaliteten på vår programvara.

Slides till föreläsningen “Software quality metrics and static code analysis”.

Software quality metrics and static code analysis (med Mikael).

#Litteratur

Läsanvisningar finns inom uppgiften, övningen och föreläsningen.

Förlita dig på det material som finns i dokumentationerna för respektive tjänst vi använder.

Om du känner att du behöver en introduktion till “varför vi sysslar med detta” så kan du läsa om följande två begrepp som till viss mån berör problemområdet inom mätning av kvalitet av programvara och allmänt om kodkvalitet.

#Resultat & Redovisning

(ca: 1-2 studietimmar)

Läs instruktionen om hur du skall redovisa. Observera att denna kursen skiljer sig från hur du normalt sett lämnar in din redovisningstext.

Se till att följande frågor besvaras i texten i din rapport:

  • I den ena uppgiften ombeds du göra en analys för kodkvalitet kring ett par PHP-moduler samt din egen kod, gör det i rapporten.

  • Hur är din egen syn på kodkvalitet? Kan man belysa den i någon viss mån med badges eller har du en annan syn?

  • Hur nöjd är du med kodkvaliteten i din egen kod? Gjorde du något under detta kmom för att förbättra den och hur högt lyckades du komma i kodtäckning och kodkvalitet?

  • Något annat som du anser är värt att nämna, “För övrigt anser jag att…”?

  • Vilken är din TIL för detta kmom?

#Resurser bra-att-ha

Här anges övriga resurser som kan användas för vidare studier i det som kursmomentet omfattar.

#Continous integration (CI)

Läsresurser för Continous integration.

Continuous integration

I trean i utbildningen Webbprogrammering läser man en kurs devops som handlar vidare om begreppen bakom CI.

#Travis CI

Läsresurser för Travis CI.

Badges från Travis, klicka på den för att komma till repots statussida.

Build Status

#Scrutinizer CI

Läsresurser för Scrutinizer CI.

Badges från Scrutinizer, klicka på dem för att komma till respektive repos statussida.

Build Status Code Coverage Scrutinizer Code Quality

#Software quality metrics

I föreläsningen om “Static code analysis - Software quality metrics of code” förekommer bland annat följande koncept som berör mätning av programvara relaterat till dess kvalitet.

#Revision history

  • 2021-05-04: (B, mos) Kompletterade med läsanvisningar.
  • 2021-04-30: (A, mos) Första utgåvan.

Document source.