Aeglased teenused kasutajaliidesele

Joel Edenberg

Kasutajaliidese teste kirjutades jooksutatakse tihti teste lokaalses arvutis töötava serveri vastu. Selline lähenemine võib aga tekitada hiljem ootamatult probleeme. Nimelt toimib lokaalne teenus ilmselt isegi liiga hästi ja kõik päringud saavad vastuse väga kiiresti. Kui aga tulevikus tuleb näiteks mõte panna kasutajaliidese testid jooksma parralleelselt, siis võivad tekkida kiirusega seotud probleemid.

Hiljuti üritasin hakata parralleelselt jooksutama Cypressi kasutajaliidese teste. Kui testid käivitada korraga 8. lõimes, siis see suudab isegi Ryzen 9950X protsessori täielikult ülekoormata. Tulemuseks on see, et serveri päringud, mis varasemalt võisid võtta kuni 10ms, võivad nüüd vastata rohkem kui 500ms pärast. Kui kasutajaliidese teste kirjutades pole arvesse võetud aeglust, on võimailik, et nii mõnedki kontrollid toimivad nüüd vales järjekorras või lihtsalt ei oota vajalike päringute vastuseid. See omakorda tähendab, et testid muutuvad ebastabiilseks - enamasti toimivad, kuid mõnikord ootamatult ebaõnnestuvad. Seda effekti võib ilmselt kogeda ka lihtsalt katsetuskeskkonnas, kus kõik ei pruugi olla nii kiire, kui lokaalses arvutis. Üks lahendus oleks serveriteenuste kontrollitud aeglustamine.

Serveri päringute aeglustamine

Mõistlik oleks lisada seadistus, mis võimaldab kasutajaliidese testide jooksutamise ajal aeglustada päringute vastuseid. Eriti hea oleks aeglustuse suurus valida juhuslikult ettemääratud vahemikust ja muutuks nii iga päringuga. See imiteeriks aeglast ja ülekoormatud serverit. Aeglustatud keskkonnas teste kirjutades on palju lihtsam kohe avastada jõudlusprobleeme. Näiteks võib mõnele vaatele olla vaja ajutisi andmelaadimise indikaatoreid, kui sisu puudumine oleks kasutajale ootamatu. Samuti on teste kirjutades palju lihtsam mõelda, et mida test peaks aegajalt ootama, enne kui jätkab kontrollidega. Nii muutuvad testid palju stabiilsemaks ja tulemused ettearvatavamaks.

See muidugi ei tähenda, et kasutajaliidese teste peaks alati jooksutama aeglustatud teenuste peal. Kindlasti suurendaks see testide läbimise aega, ning seda kuntslikult ise suurendada ei ole ilmselt hea mõte. Küll aga on selline aeglustamine hea strateegia, mida testide arendamisel kasutada või siis kasvõi aegajalt jooksutada. Nii võib avastada nii mõnegi ebastabiilse testi, mis on oma ettearvamatusega peavalu põhjustanud.