Seravon testausjärjestelmä uudistuu

Osana verkkosivustojen ylläpitoa ja päivittämistä testaamme asiakkaiden sivustojen toimivuutta. Testauksen tukena on käytetty Seravon kehittämää wp-test-komentoa, joka on ollut asiakkaidemme käytössä ja josta tulemme lähiviikkoina julkaisemaan kokonaan uudistetun version seuraavan aikataulun mukaisesti:

  • Nyt: Kaikissa Seravon asiakkaiden ympäristöissä on koekäytössä uuden testausjärjestelmän komento wp-test-ng
  • 22.1. lähtien: uusissa Seravon toimittamissa WordPress-verkkosivustoissa ei ole enää scripts/run-tests-tiedostoa tai tests/rspec-kansiota ja uusille sivustoille suoritetaan vain uuden testusjärjestelmän testejä. Myös vanhoille olemassaoleville sivustoille suoritetaan vain uuden testausjärjestelmän testejä mikäli niistä on erikseen poistettu tiedosto scripts/run-tests.
  • 15.2.: Seravo julkistaa helmikuussa merkittäviä parannuksia palvelumme sisällössä sekä siinä, miten uudet sivustot perustetaan ja miten niiden ylläpito ja päivitykset toteutetaan. Testijärjestelmän uudistus on vain osa tätä kokonaisuutta.
  • 31.3.: Vanhan testausjärjestelmän käyttö loppuu kokonaan. Tähän päivämäärään mennessä pyrimme huolehtimaan tiedotuksen ja asiakaspalvelun kautta, ettei kenelläkään asiakkaalla olisi enää sivustokohtaisesti räätälöityjä rspec-testejä käytössä, vaan kaikki olisi muunnettu uuden testausjärjestelmän mukaiseen Codeception-muotoon.

Vanha RSpec-pohjainen testijärjestelmä poistuu

Seravon tekemä, vuodesta 2015 käytössä ollut wp-test -integraatiotestityökalu on perustunut PhantomJS-selaimeen ja Rubyn Rspec-testeihin. Viimeisen vuoden aikana työkalu tuli tiensä päähän, koska PhantomJS:n käyttämää Webkitiä ei ole ollut enää muutamaan vuoteen Google Chrome -selaimessa ja näin ollen PhantomJS:n testien tulokset ovat alkaneet eroamaan liikaa siitä, miten sivusto (ja erityisesti sen JavaScript) toimii normaalissa selaimessa oikeilla käyttäjillä.

Uusi versio wp-test -integraatiotestaustyökalusta perustuu headless Chrome -tekniikkaan eli aitoon Chrome-selaimeen, jota ajetaan palvelimella. Tämä tehdään toki siten, ettei yksikään oikea ihminen näe suoraan mitä ruudulle piirtyy, koska ruutua ei palvelinkoneessa ole. Tämä ratkaisu takaa sen, että testausjärjestelmä näkee jatkossa verkkosivustot mahdollisimman identtisellä tavalla verrattuna oikeaan käyttäjään oikealla Chrome-selaimella. Osa asiakkaistamme tietääkin jo wp-test-ng -työkalun, koska siitä on jo aiemmin tiedotettu muun muassa kehittäjäuutiskirjeessämme.

Samassa yhteydessä teimme muitakin varsin isoja muutoksia. Ensinnäkin verkkosivustojen /data/wordpress-kansion alla ei enää ole vakiona tests-kansiota. Kyseistä kansiota tarvitaan jatkossa vain sivustokohtaisten testien säilyttämiseen. Seravon keskitetysti tekemän testausjärjestelmän tiedostoja sen sijaan ei ole enää millään tavalla sekoitettu sellaiseen paikkaan, joka voi olla asiakkaalla versiohallinnassa seurannassa. Asiakkaan git-projektissa näkyy jatkossa siis vain sellaista testikoodia, joka on tehty erikseen vain kyseistä sivustoa varten (joko asiakkaan itsensä toimesta tai Seravon tekemänä).

Toinen iso asia on se, että sivustokohtaisten testien kirjoittamiseen ei enää käytetä Ruby-kieltä tai Rspec- ja Capybara-kirjastoja. Kokemuksemme oli, etteivät asiakkaamme juurikaan käyttäneet näitä. Uudessa järjestelmässä kaikki testit kirjoitetaan PHP-kielellä käyttäen Codeception-kirjastoa. Se sisältää muutamia Seravon tekemiä laajennuksia, jotta sitä on kätevämpi käyttää WordPressin kanssa. Uskomme sen olevan myös kokonaisuutena  helpompi ja houkuttelevampi omaksuttava verkkosivustojen kehittäjille. Codeception on avoimen lähdekoodin ohjelmisto, jota on käytössä verkkosivustojen ja koodin testaamiseen huomattavasti Capybaraa laajemmin. Sille löytyy paljon enemmän ohjeita ja vertaistukea verkosta, mitä verkkosivustojen kehittäjät varmasti myös arvostavat.

Uuden testausjärjestlemän käyttöönotto

Uusi testausjärjestelmä on ollut koekäytössä jo pitkään. Laaja koekäyttö on ollut tarpeellinen, sillä teoriassa testit voivat tuottaa eri tuloksia jokaisella testattavalla sivustolla, koska kullakin sivustolla on erilainen koodipohja. Samasta syystä se ei tule kaikkien käyttöön kertarysäyksellä, vaan yllä kuvatun aikataulun mukaisesti hallitulla tavalla.

Yksittäisen sivuston kehittäjä voi nopeuttaa käyttöönottoaikataulua  ajamalla seuraavan komennon omalla sivustollaan: rm /data/wordpress/scripts/run-tests. Tämän voi tehdä turvallisesti kaikilla sivustoilla, joissa ei ole itse tehtyjä rspec-testejä entuudestaan. Niin haluttaessa myös Linux-tuki.fi-sivuston julkisesta git-projektista voi ottaa mallia oman sivuston git-projektin muutoksia miettiessä.

Niille asiakkaillemme, jotka eivät ole kehittäjiä, haluamme vielä sanoa, että tämä parannus tulee ajan myötä kaikkien asiakkaiden käyttöön ilman, että tarvitsee tehdä mitään.

Lisää uudistuksia lähiaikoina

Sivustojen testaus liittyy läheisesti sivustojen päivittämiseen ja uudistettu testausjärjestelmä parantaa myös päivitystoimintamme tuloksia. Päivitystoimintaamme on tulossa lähiaikoina myös muita muutoksia. Tilaa ilmoitukset Seravon blogista ja Seravon uutiskirje, jos haluat kuulla uudistuksista ensimmäisenä!