Inleiding
Ooit moest ik een webapplicatie gebruiken voor het invoeren van een behoorlijke hoeveelheid km-registratie. De km-standen had ik al in een excelsheet, de data liet zich niet zomaar importeren in de webapplicatie. Het beloofde een saaie, tijdrovende en foutgevoelige klus te worden. Op dat moment had ik graag een tool gehad die de data uit het excelsheet leest en deze omzet in Selenium scripts waarmee ik de data met één druk op de knop kon invoeren. Als deze taak nu eens flexibel uitgevoerd zou kunnen worden?

Sepiola-Esnet

Wat doet Sepiola?
In test automatisering – in het bijzonder in Agile omgevingen – is er een terugkerende behoefte aan het genereren of onderhouden van grote hoeveelheden bestanden, samengesteld uit flexibele data en platte tekst. Denk hierbij o.a. aan soapUI mockservices, EDIFACT, ADN of HL7 bestanden, fitnesse-, selenium- en shell scripts. De taken zijn niet bijzonder complex maar wel tijdrovend en vereisen concentratie. ‘s Ochtends vroeg werkt dit prima. Maar na een langdurig overleg, wanneer er nog een paar minuten zijn voor het volgende overleg om vijf uur ‘s middags met een defecte airco gaat het niet lukken hetzelfde concentratie nivo te halen als aan het begin van de dag.

Met de tool Sepiola heb ik deze werkzaamheden te gestroomlijnd. De tool is open source.

Hoe?
Het excelsheet bevat een tabblad “Nonrepetitive” voor data die gelijk blijft over de bestanden. Het tabblad “Iterative” bevat de data die per bestand varieert. Dit zijn de data-sheets. Verder zijn er tabbladen “Lees mij” en “Support info”. Het excelsheet bevat een macro “Sepiola”. Deze leest de data uit de tabbladen en zoekt de bijbehorende sjablonen er bij.

Sjablonen
Bij het starten van de macro Sepiola zoekt deze eerst naar sjabloonbestanden in dezelfde map als die waar het excelsheet zich bevindt. Wanneer de macro Sepiola gestart wordt vanuit het Excelsheet:

Sepiola.xlsm

zoekt de tool naar:

sepiola_header.txt (optioneel)
sepiola_body.txt (verplicht)
sepiola_footer.txt (optioneel)

De namen van de sjablonen worden dynamisch uitgelezen, wijzig (of kopieer) de naam van het excelsheet in “km-reg.xlsm” en de tool zoekt naar sjablonen beginnend met “km-reg”. Header en footer zijn optioneel. Hierin wordt alleen de niet herhalende data vervangen. In de body (verplicht) worden zowel de niet herhalende als de herhalen de data vervangen.

Data
Sepiola leest in de eerste rijen van de datasheets de namen van de parameters. Sepiola leest zelf hoeveel parameters er zijn gedefinieerd. Hier volgt een uitleg voor km-registratie.

Het tabblad “Nonrepetitive data” bevat in de eerste rij de parameters “EmployeeName” en “EmployeeId”. In de tweede rij “de Vries” en “123”. De overige rijen worden genegeerd. Sepiola zal in de sjablonen zoeken naar labels <parameter>, in dit geval naar <EmployeeName> and <EmployeeId>  en deze met data vervangen.

Het tabblad “Iterative data” kan vele rijen data bevatten. Gebruik de eerste rij voor het vastleggen van parameters als “date”, “start_mileage”, “stop_mileage”, “destination”. In de body sjabloon (en uitsluitend daar) zoekt Sepiola naar de labels <parameter#>, <date#>, <start_mileage#>, <stop_mileage#> en <destination#>.

Wanneer het tabblad “Iterative data” drie rijen bevat, zal het – standaard – drie bestanden aanmaken, gelijk aan de naam van het excelsheet met een volgnummer. Bijvoorbeeld: “km-reg_1.txt”, “km-reg_2.txt” en “km-reg_3.txt”.

Excel
Het is nog altijd mogelijk alle functionaliteiten van Excel te gebruiken voor het onderhouden van testdata, zoals conditioneel formatteren van dubbele data (id-nrs) het accentueren van verschillen, properties gebruiken voor het formatteren van data of het controleren van gegevens met data uit andere excelsheets. Voorbeelden zijn bijgeleverd, maar aangezien dit geen Excel cursus is, laat ik het hier bij. Er zijn vele websites,boeken en cursussen die Excel beter uitleggen dan ik.

Support info
Het tabblad SupportInfo bevat tags afgeleid van de parameter names zodat deze d.m.v. copy en paste in de template kunnen worden toegevoegd i.p.v. dat deze handmatig getyped hoeven te worden – met de kans op typfouten.
Het tabblad Support info bevat ook een lijst van parameters die als commentaarblok in de uitvoerbestanden kunnen worden toegevoegd. Alhoewel dit niet tot het hart van Sepiola behoort, vond ik het nuttig voo het documenteren van complexe berichten t.b.v. soapUI.

Meer opties
Voeg de parameter [Filename] toe aan het tabblad “Iterative data” en Sepiola zal proberen deze te gebruiken als bestandsnaam voor de output i.p.v. de standaard Sepiola naamgeving met volgnummers.

Geavanceerde opties
Het is mogelijk om parameters te gebruiken om delen van de sjabloon uit te commentarieren. Voor gebruik in soapUI berichten heb ik parameters gebruikt als, met namen als startCommentX and stopCommentX die gevuld zijn met “<!–” en “–>” of leeg zijn gelaten.
Het is mogelijk om parameters te nesten, zoals bijv. voor een commentaarblok met een lijst met parameters.

Minimalistisch voorbeeld
De bestanden Do_File_Compare.xlsm en Do_File_Compare_body.txt vormen samen een minimalistisch voorbeeld wat het werkingsprincipe aantoont. Dit voorbeeld bevat slechts twee parameters in “Nonrepetitive data” en twee in “Repetitive data”.  Het voorbeeld bevat alleen een body sjabloon (Do_File_Compare.xlsm_body.txt) dat zich in dezelfde map dient te bevinden als het gelijknamige excelsheet. De macro sepiola is gekoppeld aan de toets combinatie [Ctrl]+[Shift]+[Q]. Dit voorbeeld genereert Sepiola 14 batchfiles in dezelfde map. Er verschijnt géén popup die aangeeft dat de verwerking gereed is.

Download Sepiola