Nuo 5% iki 96% testų aprėpties per dieną — Dėka AI CoPilot

Nuo 5% iki 96% testų aprėpties per dieną — Dėka AI CoPilot...

16 May 2025

5

min skaitymo

AI inovacijos

Adrian Sweeney

Kai pradėjau šį projektą ir jis vis dar buvo maža kodo bazė, žinojau, kad vienetų testavimas bus svarbus, bet kaip daugelis kūrėjų, aš jį atidėjau į šalį po pirmojo testų rinkinio sukūrimo pagrindinės funkcionalumo kūrimo labui. Mano pagrindinis tikslas ankstyvuose etapuose buvo priversti middleware logiką veikti — programos širdį — ir atgaivinti Minimų Gyvybingą Produktą (MVP). Tai reiškė didelio testų aprėpties dalies praleidimą progreso vardan.

Kai tik MVP suveikė, vėl nukreipiau dėmesį į testavimą. Žiūrėdamas į projektą, įvertinau bent savaitę ar dvi testų rašymo, priklausomai nuo kiekvieno komponento sudėtingumo. Kai kurie būtų paprasti. Kiti — ypač ten, kur buvo kraštutiniai atvejai ar sudėtinga šakojimo logika — būtų daug labiau reikalaujantys laiko.

Šiuo momentu atsigręžiau į DI. Naudojau "CoPilot" pagalbai rašant kodą ir galvojau, kad jis taip pat galėtų padėti su testais.

Ankstyvieji nesėkmės su DI

Iš pradžių paprašiau DI "parašyti vienetų testus" be jokio tikro konteksto ar apribojimų. Rezultatas? Chaosas. Testai neveikė, jie darė neteisingas prielaidas apie kodą, ir visas pastangas virto sugedusio testų kodo ir frustracijos keliančių perrašymų ciklu. DI sugeneravo daug kodo — bet ne tokio tipo, kurį galėčiau naudoti be rimto refaktoringo.

DI krypties suteikimas

Proveržis atėjo, kai pakeičiau savo požiūrį. Vietoje DI traktavimo kaip burtininko, pradėjau jį naudoti labiau kaip jaunesnįjį kūrėją. Daviau jam po vieną failą per kartą, paaiškindavau kodo tikslą ir sakydavau susikoncentruoti į tikslių, funkcionalių testų rašymą tik tam failui.

Tai viską pakeitė.

Staiga testai tapo lengvesni DI įgyvendinti. Jie buvo tinkamai apriboti, suderintos su tikra logika ir nereikalavo valandų derinimo. Mano DI perėjo failą po failo, rašydamas ir vykdydamas testus.

Rezultatai

Per mažiau nei dieną testų aprėptis šoktelėjo nuo 5% iki virš 96%.

  • Teiginiai: 96,72%
  • Šakos: 95,67%
  • Funkcijos: 92,1%
  • Eilutės: 96,87%

Testai, kurie būtų užtrukę dienas parašyti, buvo užbaigti per valandas, o proto ramybė, kuri ateina su beveik pilnu testų aprėpimu? Neįkainojama.

Perėjau nuo vieno testų rinkinio ir 5 testų iki:

  • 20 testų rinkinių
  • 136 praeito testų

Ko išmokau

  • DI nėra magija — bet tai neįtikėtinas asistentas. Duokite jam kontekstą, vadovaukite jam, ir gausite puikių rezultatų.
  • Fokusas yra svarbus. Prašyti DI "testuoti viską" veda į chaosą. Prašyti jo testuoti šį failą, šią funkciją, šį atvejį — tai veikia.
  • Tikėkitės derinimo — bet daug mažiau nei rašymo nuo nulio. DI kartais daro klaidas, bet bendras procesas yra daug greitesnis nei darbas vienam.

Nepriklausomai nuo to, ar paleidžiate naują projektą, ar bandote pridėti testų prie senesnio, DI gali būti didžiulis laiko taupymas — jei naudojate jį teisingai.

Ar naudojate DI testų rašymui savo projektuose? Koks yra jūsų patyrimas?

PrimeCRM

Atgal į Žinių Centrą