Schematron-aineistotestaus – mitä ja miksi?

Schematronin avulla voidaan määrittää sääntöpohjaisia tarkistuksia XML-aineistoille. Se ei korvaa vaan täydentää aineistojen skeema- eli rakennetarkistusta. Schematron perustuu XPath-kieleen tarkistussääntöjen määrittelyn osalta. 

EU-verkkolaskudirektiivin myötä verkkolaskujen vastaanottajat ovat 1.4.2020 alkaen voineet edellyttää lähettäjiltä EU-normin mukaisia laskuja. Teknisellä tasolla nämä vaatimukset kuvataan Schematron-tiedostona. Mikäli verkkolasku ei läpäise Schematron-tarkistusta, se palaa bumerangina takaisin.

Skeematarkistus on huono laadun mittari

Perinteisesti aineiston lähettäjä on voinut testata lähettämänsä aineiston laadun skeematarkistuksen avulla. Mikäli aineisto on läpäissyt tarkistuksen, on aineiston katsottu olevan riittävän laadukas välitettäväksi eteenpäin.

Skeema ottaa kuitenkin ensisijaisesti kantaa vain aineiston rakenteeseen ja mahdollisesti sisällön pituus- ja koodirajoituksiin. Skeeman ilmaisuvoima on hyvin rajallinen ehdollisuuksien ja eheystarkistusten osalta. Nämä voidaan suurelta osin kattaa Schematronin avulla.

Schematron mahdollistaa sääntötarkistukset

Toisin kuin skeema, Schematron ei ota lainkaan kantaa aineiston rakenteeseen. Sen roolina on määrittää tietojen eheyteen liittyvät vaatimukset sääntötarkistusten avulla. Tyypillisiä eheystarkistuksia ovat erilaiset summatarkistukset, päivämäärien vertailu sekä ehdolliset pakollisuudet ja muotovaatimukset. Schematron ei siis korvaa skeematarkistusta (W3C XML Schema), vaan täydentää sitä.

Miksi Schematronia tarvitaan?

Yritys-, toimiala- ja maatason aineistovaatimukset on perinteisesti julkaistu uuvuttavan pitkinä soveltamisohjeina. Niitä toki tarvitaan, mutta kukin toteuttaja luo niistä oman tulkintansa. Vaikka kaikki ovat mielestään toimineet oikein, ratkaisut eivät silti toimi yhteen. Kuulostaako tutulta? Schematron mahdollistaa dokumentoitujen vaatimusten esittämisen teknisinä tarkistuksina, jotka asettavat minimivaatimukset kaikille standardin mukaisille toteutuksille.

Usein eheys- ja sisältövaatimukset tarkistetaan vasta luettaessa aineisto vastaanottavaan järjestelmään. Kun aineistossa havaitaan virheitä, päätyy se virhekäsittelyyn, jolloin joko tiedot täydennetään manuaalisesti tai lähettäjälle palautetaan virheilmoitus. On sanomattakin selvää, että tähän tuhlaantuu paljon aikaa ja resursseja. Lisäksi vastaanottavan järjestelmän tuottama virhepalaute on usein epämääräinen, kuten ”virhekoodi 6”. Tällöin jää epäselväksi mikä kohta aineistossa tulisi korjata, jotta virheeltä vältyttäisiin jatkossa.

Schematronin hyödyt

Schematronin avulla suurin osa eheys- ja sisältövaatimuksista voidaan julkaista muodossa, jota voidaan käyttää aineistojen testaamiseen jo lähettävässä päässä. Tällöin valtaosa virheellisistä tiedostoista ei koskaan päädy vastaanottajan järjestelmään.

Miksei sitten Schematronia ole juurikaan käytetty aiemmin XML-sanomien tarkistamiseen? Kyse on yleensä tietämättömyydestä, mutta toki selityksiäkin löytyy, kuten ”Schematronin avulla ei voida testata kaikkia aineistovaatimuksia, koska osa tarkistuksista liittyy taustajärjestelmän tietoihin”. So what? Jos lähes poikkeuksetta yli 80% vaatimuksista voidaan esittää Schematronin avulla, niin eikö olisikin mahtavaa, jos näin suuri osuus tarkistuksista voitaisiin suorittaa jo lähettävässä päässä? Suurin osa virhetilanteista ei tällöin kuluttaisi lainkaan vastaanottajan resursseja. Lähettäjäkin saisi virheistä välittömän palautteen ja voisi ryhtyä heti toimiin niiden korjaamiseksi.

Schematronin puutteet

Schematron-tarkistus tuottaa teknisen palautteen kuten skeematarkistus. Palautteena saa XML-muotoisen testausraportin, josta ilmenee suoritetut tarkistukset ja löydetyt virheet. Kukin virheilmoitus sisältää vaatimuksen selkokielisen kuvauksen, virheellisen elementin polkumäärityksen sekä tarkistussäännön teknisen toteutuksen eli litanian ”XPath-koodia”. Haasteena on, että muun muassa summatarkistusten osalta ei useinkaan saa selvyyttä, onko kyse sentin pyöristysvirheestä vai suuremmasta laskennallisesta ongelmasta. Tämä puute on ilmeinen esimerkiksi CEN434:n julkaisemissa EU-verkkolaskudirektiivin mukaisissa Schematron-tarkistuksissa. Schematron-virheilmoitus ei myöskään sisällä virheellisen elementin rivinumeroa, jolloin virheen paikantaminen on hakuammuntaa etenkin suurten aineistojen osalta.

Schematron-testaus soveltuu siis mainiosti automatisoituun testaukseen, kun halutaan varmistaa, että aineisto täyttää määrätyt vaatimukset. Virheiden paikantamiseen ja korjaamiseen se on kuitenkin sellaisenaan turhan tekninen ja karkea työkalu.

 

Truugo + Schematron - täydelliset yhdessä

Truugoon voidaan luoda testipenkki, joka kattaa Schematron-tarkistukset. Tällöin samat testit voidaan suorittaa sekä tuotantoympäristössä että itsepalveluna. Truugon avulla testaaja pystyy paikantamaan ja korjaamaan virheet nopeammin ja helpommin ilman erityistyökaluja ja -osaamista. Truugo tuottaa selkeän testausraportin, jonka kustakin virheilmoituksesta pääsee linkin kautta suoraan aineiston virheelliseen kohtaan. Monimutkaisimmatkin tarkistukset voidaan pilkkoa osiin, jolloin esimerkiksi summatarkistusten osalta nähdään välittömästi, minkä suuruusluokan ongelmasta on kyse.

Truugon avulla käyttöönottojen testaus helpottuu ja nopeutuu huomattavasti. Truugon API-rajapinnan avulla myös virheellisistä tuotantoaineistoista voidaan tuottaa välittömästi selkokielinen testausraportti ongelman ratkaisemiseksi.

Lue lisää Truugosta täältä!

Ota yhteyttä:

Juha Ikävalko,
Netum Integrations Oy
juha.ikavalko(at)netum.fi
040 590 4523