Workshop: Maak je eigen testomgeving

JUG043 Maastricht organiseert een workshop over hoe jij je eigen testomgeving maakt om Joomla! te helpen

Jij als Joomler kunt de Joomla! Community helpen met testen voor de updates (pacthes). Maar hoe moet je dan testen en hoe maak je een goede testomgeving? 

De Joomla! Community kan julie hulp gebruiken om bugs en andere problemen in Joomla! op te lossen. Indien iemand een probleem constateerd en dit vervolgens aangemeld via de Github pagina van Joomla!, dan wordt er naar een oplossing gezocht. Vervolgens gaan vrijwilligers uit de Joomla! Community er een patch voor maken om het probleem op te lossen. Jij kunt meewerken en daarmee de ontwikkeling van Joomla! helpen. 

Joomla Nightly Builds

In dit artikel leg ik uit hoe je de Joomla! Community kunt helpen met testen en hoe je een testomgeving bouwt en welke opties er zijn.

Inleiding

In alle software zijn er fouten die opgelost moeten worden, is dit ook het geval is in Open Source software zoals Joomla!. De broncode van Joomla! is centraal beschikbaar gesteld op het internet, waardoor het voor iedereen toegankelijk. Iedereen die een bug of een probleem met Joomla ziet kan dit te melden.

Gerapporteerde bugs en problemen worden opgelost en moeten uiteindelijk getest worden. Via deze pagina leg ik uit hoe jij kunt bijdragen aan het Joomla! project door voorgestelde oplossingen te testen. Je hoeft geen kennis van coderen te hebben, je hebt een Joomla!installatie nodig om op te testen.

Een Quick-Reference-Guide voor het testen is beschikbaar op: Testen van Joomla! patches Quick-Reference-Guide

 Wat heb je nodig? 
  • Een testomgeving met bijvoorbeeld WAMP / XAMPP (lokaal) of een subdomein als testomgeving.
  • Een account voor Github.
  • Joomla! nightly build.

Alle aspecten komen in onderstaande hoofdstukken aan bod. 

 

Navigatie naar de verschillende hoofdstukken

Via onderstaande links kun je direct naar een bepaald hoofdstuk navigeren.

 

Aanmelden van een probleem

Om een bug te melden op de Joomla! bug trackers moet er een tracker item gemaakt worden. Nadat het tracker item is gemaakt zullen de ontwikkelaars onderzoeken of de melding klopt en de nodige handelingen verrichten. Hieronder staan tevens de stappen om een testomgeving in te richten en om de patches te testen.

Bugs melden

Je zult je moeten registreren op GitHub; de Joomla! issue tracker gebruikt GitHub accounts als verificatie.

Toegang tot de Joomla! issue tracker

Klik op deze link en op de Joomla! Issue Tracker

Controleer of het probleem dat u wilt melden al is gemeld.

Een serie filters geven de tracker items weer, door op de "zoekmiddelen" te klikken worden de filters geopend. Door met de muis over de titel te bewegen kan de inhoud bekeken worden. Wanneer het probleem dat je ondervindt nog niet is gemeld kun je op de knop Nieuw issue klikken in de hoofdnavigatie.

Er wordt een nieuw venster weergegeven, hoe meer informatie je daar geeft, hoe beter het is voor de ontwikkelaars

Vul zoveel mogelijk gegevens in. Je kunt tips voor ieder veld inschakelen door te schakelen tussen Pro en Help voor de Toon modus aan de rechter kant van het venster.

  • Prioriteit: Gebruik de standaard "Gemiddeld" tenzij je voldoende bekend bent met de code om een andere keuze te maken.
  • Versie: Vul hier de versie(s) in waarop het probleem van toepassing is
  • Categorieën: Dit is lastiger. Gebruik "Administration" wanneer je het niet weet.
  • Titel: Een korte samenvatting van het probleem.
  • Omschrijving: Details van het probleem. Zie het gedeelte hieronder voor meer informatie.
  • Uploaden: Het is toegestaan om afbeeldingen te uploaden bij het melden van een probleem. Informatie over de upload vereisten wordt vermeld op het formulier.

Geef een samenvatting

Beschrijf in een paar woorden de problemen die je ondervindt. Het is over het algemeen een goed idee gebruik te maken van bestaande tracker items als voorbeeld, zeker wanneer dit de eerste keer is dat je een probleem meldt.

Voorbeelden:

  • Website: Waarschuwing zus en zo.
  • Beheergedeelte: Kan het artikel niet opslaan wanneer <naamvandeplugin> is gepubliceerd.

Opmerking: zorg voor een duidelijke beschrijving van het probleem in de samenvatting, dit is namelijk het eerste wat ontwikkelaars zien wanneer zij de tracker doorzoeken op problemen die opgelost moeten worden.

Geef informatie over het probleem

Om zoveel mogelijk informatie te geven is het veld voor de beschrijving door middel van een template ingedeeld in vijf subsecties:

  • Stappen om het probleem te reproduceren: Gedetailleerde stappen die beschrijven hoe iemand anders het probleem kan reproduceren.
  • Verwacht resultaat: Wat je verwacht na het uitvoeren van bovenstaande stappen.
  • Werkelijke resultaat: Wat er werkelijk gebeurt bij het uitvoeren van bovenstaande stappen
  • Systeem informatie: Informatie over de omgeving waarin jouw systeem is geconfigureerd. Dit kan onder meer zijn: de browser die je gebruikt, de PHP versie op jouw server, of het type database van jouw site. Voor optimale resultaat, kun je deze gegevens kopiëren uit de systeeminformatie wanneer je bent aangemeld in het beheergedeelte van de website.
  • Extra opmerkingen: Elke informatie die niet in de bovenstaande velden is gegeven maar kan bijdragen aan het oplossen van het probleem.

De algemene opmaak zou iets moeten zijn als:

  1. "Dit is precies wat ik gedaan heb."
  2. "Dit is wat er gebeurd is."
  3. "Dit is wat ik denk dat er had moeten gebeuren."
  4. "Overige informatie, mogelijke oplossing, voorgestelde code aanpassing."

Hoe meer informatie, hoe beter. Het is ook belangrijk om het probleem te kunnen reproduceren met gebruik van een Joomla! website met testvoorbeelddata, of met gemakkelijke, duidelijke instructies voor het opzetten ervan. Vergeet niet dat anderen geen toegang hebben tot de database van jouw (lokale) website, je moet dus in staat zijn om iemand uit te leggen hoe het probleem gezien kan worden met de data die beschikbaar is -- de voorbeeld website.

Voorbeeld A
Wat ik heb gedaan
Ik begon met de voorbeeld website. Alles was normaal. Ik heb de "naamvanplugin" ingeschakeld. Ik probeer een artikel in het beheergedeelte op te slaan.
Wat er gebeurd
Ik krijg een leeg scherm en het artikel is niet opgeslagen.
Wat er zou moeten gebeuren
Artikel zou correct opgeslagen moeten worden.
Overige informatie
Deze plugins zijn tegelijk ingeschakeld. SEF is ingeschakeld (of uitgeschakeld). Mijn website staat in een submap. Verder merk ik op dat ... etc. Volgens mij zijn die en die bestanden de oorzaak (wanneer u weet waarover u praat).
Voorbeeld B
Wat ik heb gedaan
Ga naar het beheergedeelte. Klik op "menu-naam" Menu.
Wat er gebeurde
Pagina die geopend werd is leeg.
Wat er had moeten gebeuren
Menu had normaal geopend moeten worden.
Overige informatie
Alle andere menu's werken normaal. etc.

Echt voorbeeld

  • Wat ik heb gedaan
  1. Begonnen met de voorbeeld website.
  2. Een ongepubliceerd artikel toegevoegd via het beheergedeelte, in sectie=FAQ, categorie=algemeen.
  3. Zet, bij de opties voor het artikel Toon titel op "Nee" en Printen, PDF en e-mail iconen op "Verberg".
  4. Sla het artikel op en ga naar de website. Log-in op de website als administrator en ga naar het Example Pages -> Category Blog menu-item.
  • Wat er gebeurde: Het nieuw toegevoegde artikel wordt weergegeven maar er is geen bewerk-icoon voor de website gebruiker om op te klikken.
  • Wat er had moeten gebeuren: Het bewerk-icoon zou weergegeven moeten worden waardoor de website gebruiker het artikel bewerken kan.
  • Overige informatie: Dit doet zich alleen voor met de rhuk_milkyway template. Door deze code [voorgestelde code] te wijzigen in bestand [naam en hiërarchie van het bestand], regel #(s), lijkt het probleem voor mij opgelost te zijn.

Een pull request direct via Joomla!'s GitHub repository indienen

Wanneer je een oplossing wilt indienen door de code in Joomla! zelf aan te bieden kun je dat doen door middel van een "pull request" naar Joomla!'s code repository op GitHub.com, die je hier vindt: https://github.com/joomla/joomla-cms

Dit proces vereist enige kennis van Source Control Management systemen en Git in het bijzonder. Indien je weet wat het Git SCM is en hoe het werkt, is het proces eenvoudig:

  • Aanmelden voor een gratis GitHub.com account
  • Fork de Joomla! repo 

Schakel over naar de "staging" branch wanneer je een oplossing wilt voorstellen voor de huidige Joomla! 3.x release of naar de "3.x-dev" branch wanneer je een oplossing wilt voorstellen voor de volgende Joomla! 3.x (of 4.x) versie.

  • De gerelateerde bestanden in Joomla! in de juiste branch toevoegen/bewerken en klik op de knop "review & compare" - meer informatie hierover op https://help.github.com/articles/using-pull-requests - om het proces van het indienen van de "pull request" te starten.

Extra tips and trucs

Goed geschreven bug rapporten zijn ongelooflijk nuttig. Er is echter sprake van een zekere mate van overhead bij het werk met ieder bug tracking systeem, jouw hulp bij het zo nuttig mogelijk houden van ons ticketsysteem wordt dus gewaardeerd. In het bijzonder:

  • Lees altijd de FAQ om te controleren of jouw probleem een bekende vraag betreft.
  • Doorzoek altijd de tracker om te controleren of uw probleem al is gemeld.
  • Vraag eerst op forums voor het melden van bugs Joomla 3.x wanneer je niet zeker weet of datgene wat je ondervindt een bug is.
  • Schrijf volledige, reproduceerbare, specifieke bug rapporten. Geef zoveel mogelijk informatie, compleet met code, test cases, etc. Een voorbeeld die de bug illustreert in een kleine test case is het beste. 

Gebruik de tracker niet voor het vragen van ondersteuning. Gebruik daarvoor de Joomla! forums, of het #joomla IRC channel op freenode.

Maak geen gebruik van de trackers om grootschalige functionaliteitswensen te uiten. We willen grote veranderingen in Joomla!'s core graag bediscussiëren op de ontwikkelaarsforums voor eraan te gaan werken.

Heropen problemen die zijn gemarkeerd als "geen bug" niet. Deze markering betekent dat besloten is dat we dit specifieke probleem niet willen of zullen oplossen. Vraag, indien je niet zeker weet waarom, het op de ontwikkelaarsforums.

Gebruik de tracker niet voor ellenlange discussies, omdat ze waarschijnlijk verloren gaan. Verplaats, indien een bepaald trackeritem controversieel is, de discussie naar de ontwikkelaarsforums.

Het melden van veilgheidsproblemen

Meld veiligheidsproblemen aan security [at] joomla [punt] org. Dit is een besloten lijst waar alleen ontwikkelaars die al lange tijd bijdragen en betrouwbaar zijn toegang toe hebben.

Wanneer de kwetsbaarheid bevestigd wordt in Joomla! zelf, zullen de volgende acties ondernomen worden:

  • De melder wordt op de hoogte gebracht van de ontvangst van het rapport en dat er gewerkt wordt aan een oplossing. Er wordt een ruwe tijdschatting gegeven en de melder wordt gevraagd het probleem niet openbaar te maken voordat het door het project wordt aangekondigd.
  • Alle andere ontwikkelingen worden zo lang als nodig stopgezet voor het ontwikkelen van een oplossing, met inbegrip van patches tegen de huidige en de twee voorgaande versies.
  • Bepaal een datum waarop het veiligheidsprobleem en de oplossing worden aangekondigd. Om een wedloop tussen degenen die de patch toepassen en die proberen misbruik te maken van het lek te voorkomen, worden veiligheidsproblemen niet onmiddellijk aangekondigd.
  • Kondig publiek het veiligheidsprobleem en de oplossing op de vooraf vastgestelde datum aan. Dit zal waarschijnlijk een nieuwe vrijgave van Joomla! betekenen maar in sommige gevallen kan het eenvoudig een patch van de huidige versies zijn.

 

 

Testomgeving inrichten

Eerst moet de basiscode opgehaald worden uit de Joomla GitHub repository. Er zijn verschillende manieren om de Joomla mastercode te downloaden, maar we bespreken hier alleen de download optie.

Map aanmaken

Eerst moeten we een map aanmaken op de lokale webserver OF op een hosting-account dat toegankelijk is via de browser. Maak de map bugtesten aan en ga naar deze map via Verkenner of Finder.

Download Joomla!

Ga naar de Joomla GitHub locatie en klik op Clone or download klik dan op Download ZIP.

download joomla build

Hiermee download je een kopie van de Joomla mastercode in een ZIP-bestand. Pak het bestand uit op een tijdelijke locatie, een map genaamd joomla-cms-staging verschijnt. Binnen deze map staat de Joomla mastercode. Ga naar de joomla-cms-staging map en kopieer de complete inhoud naar de map bugtesten die u in de vorige stap heeft aangemaakt.

Je kunt nu Joomla! installeren door naar http://localhost/bugtesten te gaan als je een lokale webserver gebruikt. Ga, als je gebruik maakt van een webhoster, naar de juiste URL voor de webhoster. Je doorloopt dan het normale installatieproces van Joomla!. Kies als voorbeelddata: Test English (GB) sample data

Dit is belangrijk zodat iedereen dezelfde gegevens gebruikt om te testen!

De installatie map hoeft niet verwijderd te worden, waardoor je alles, indien gewenst, makkelijk opnieuw kunt installeren.

 

 

Uitvoeren van testen

In dit hoofdstuk leg ik jullie uit hoe je kunt testen.

Download de Patchtester

Om je te helpen met het proces van het testen van patches, is een extensie genaamd "Patch Tester" ontwikkeld. De Patchtester kan gedownload worden van de Patchtester pagina en kan daarna geïnstalleerd worden via Extensiebeheer in Joomla.

Om de Patchtester te kunnen gebruiken is een GitHub account vereist, de reden hiervoor is dat er een limiet is op het aantal anonieme aanvragen die via de Patchtester worden gedaan. Je kunt je aanmelden voor een GitHub account op deze pagina.

Instellen Patchtester

De details van het GitHub account kunnen bij de instellingen van de Patchtester worden ingevuld. Ga, nadat de Patchtester geïnstalleerd is, naar Componenten -> Joomla! Patch Tester en klik op Opties rechtsboven. De Opties pagina verschijnt en er zijn drie tabbladen. Op het eerste tabblad genaamd GitHub Repository kunt u kiezen welke repository u wilt gebruiken. Standaard is dit het Joomla! CMS.

Patchtester repo nl

Op het tweede tabblad genaamd GitHub Authentication kun je jouw GitHub gebruikersnaam en wachtwoord of token invoeren, als je gebruik maakt van een token.

Patchtester details nl

Opmerking: Indien je Two-Factor Authentication voor je GitHub account hebt geactiveerd, moet je een persoonlijke toegangsteken aanmaken op https://github.com/settings/applications en dit opgeven in het GitHub teken veld.

Klik, na het invoeren van jouw account details, op Opslaan & sluiten. Klik, terug in de Patchtester op Gegevens ophalen in de linker bovenhoek.

Je bent nu klaar om te beginnen met testen.

Vind een probleem in de issue-tracker dat je wilt testen of gebruik de Ik doe een gok knop. Controleer eerst of je het probleem kunt reproduceren. Indien je het probleem kunt reproduceren, dan kun je de patch installeren.

Het installeren van een patch 

Vind in de Patchtester de items waar je aan werkt door middel van de (gedeeltelijke) titel of het ID. De titel van een tracker-item ziet er altijd zo uit:

[#4308] - Fixed event dispatching inconsistencies leading to incomplete API

Naast de # staat het ID en achter het - teken staat de titel.

Klik, nadat de patch gevonden is, op de blauwe knop Apply Patch. Controleer of de bug is opgelost en controleer ook of er geen nieuwe bugs zijn ontstaan.

Registreren van testresultaten

Voeg, na het testen, alstublieft jouw testresultaten toe aan het overzicht (gebruik de knop Test dit). Nu hoeft je alleen maar een reactie toe te voegen indien je extra informatie hebt of indien jouw test niet succesvol is. De Tracker voegt nu automatisch een reactie toe dat je getest hebt.

Er moet ook opgemerkt worden dat het beter is als je patches kunt testen in een meertalige omgeving (met minstens 3 content-talen gepubliceerd) aangezien er problemen zijn die alleen optreden in zo'n omgeving.

New testthis button nl

Terugdraaien patch

Nadat een patch is getest, is deze niet meer nodig en kan deze verwijderd worden uit jouw test-installatie, hierdoor test jij altijd op een schoon systeem (je kunt patches in relatie tot elkaar testen om zeker te weten dat ze elkaar niet in de weg zitten). Ga terug naar de Patchtester en klik op de groene knop Revert Patch. Dit verwijdert de patch en kun je het volgende probleem testen.

Patches testen met Git

De Patch Tester kan niet gebruikt worden om alle patches te testen. Soms moeten we een andere methode gebruiken. De Patch Tester vervangt het complete bestand en past dus niet alleen de wijzigingen uit het pull request toe. Het kan dus zijn dat u geen individueel (geïsoleerd) issue test.

Om een patch echt te testen met uitsluitend de wijzigingen die in de patch gemaakt zijn, moeten we Git gebruiken. De reden daarvoor is dat Git een patch kan toepassen met alleen de wijzigingen in die patch. Git doet dit met een diff-bestand.

Voorwaarden om de methode hieronder te gebruiken zijn:

  • Joomla is geïnstalleerd met behulp van Git
  • cURL is geïnstalleerd

De diff verkrijgen

Een diff verkrijgen uit een pull request is vrij eenvoudig. Laten we zeggen dat dit de URL is van het pull request

Om de diff te verkrijgen, hoeft u alleen maar .diff toe te voegen na de URL, die er dan als volgt uitziet

De diff testen

Voor u de diff toepast, kun je voor de zekerheid checken of de diff wel toegepast kan worden. Ga naar de root van je Joomla installatie en voer het volgende commando uit:

De diff toepassen

Als de diff getest is en er geen fouten zijn, kan de diff worden toegepast door het uitvoeren van het volgende commando:

Als de diff is toegepast, kun je de tests uitvoeren en de testresultaten opslaan zoals hierboven uitgelegd. Indien nodig kun je meerdere diffs in één keer uitvoeren, zolang ze elkaar niet overlappen. Dit kan nodig zijn als er meerdere pull requests moeten worden gecombineerd om de test uit te voeren.

De diff terugdraaien

Wanneer je klaar bent met testen, kun je het systeem terugbrengen in de oude staat door de diff terug te draaien, met het volgende commando:

Om er zeker van te zijn dat alles netjes is, kun je het volgende commando uitvoeren:

git status

Je zou deze melding moeten zien:
nothing to commit, working directory clean

Als het systeem niet opgeruimd is, kun je een melding als deze te zien krijgen:

300px Gitwithchanges
 
There are changed files in the working directory

Wanneer je gewijzigde bestanden ziet, maar zelf geen wijzigingen hebt aangebracht, kun je het systeem resetten met

git reset --hard HEAD

Nu zou alles opgeruimd moeten zijn.

Als je enthousiast bent geworden om te testen, probeer het dan eens. Het kost wat inspanning om alles op te zetten, maar als dat eenmaal gedaan is, is het leuk en makkelijk! Daarnaast draag je nu actief bij aan de verbetering van Joomla!.

 

Handige links en video's

Bekijk de volgende 3 Engelstalige YouTube filmpjes voor meer informatie:

Part 1: Introduction, what is patch testing.


Part 2: How to setup a web server to test Joomla! issues.

 

Joomla! Issue tracker: https://issues.joomla.org/
Joomla! github:
https://github.com/joomla/joomla-cms
Joomla! Patch testing documentatie (Nederlands):
https://docs.joomla.org/Testing_Joomla!_patches/nl
Joomla! patch tester component:
https://github.com/joomla-extensions/patchtester/releases
Joomla! Volunteer Portal :
https://volunteers.joomla.org/
J
oomla! Bugs en problemen indienen: https://docs.joomla.org/Filing_bugs_and_issues/nl