От 5% до 96% покритие на тестове за ден — Благодарение на AI CoPilot

От 5% до 96% покритие на тестове за ден — Благодарение на AI CoPilot...

16 May 2025

5

мин четене

AI иновации

Adrian Sweeney

Когато започнах този проект и той все още беше малка кодова база, знаех, че unit тестването ще бъде важно, но като много разработчици, го отложих настрана след изграждането на първия набор от тестове в полза на изграждането на основната функционалност. Основната ми цел в ранните етапи беше да накарам middleware логиката да работи — сърцето на приложението — и да оживя Минималния Жизнеспособен Продукт (MVP). Това означаваше пропускане на голяма част от покритието с тестове в името на прогреса.

Веднага щом MVP заработи, насочих вниманието си обратно към тестването. Като погледнах проекта, оценях поне седмица или две писане на тестове, в зависимост от сложността на всеки компонент. Някои щяха да бъдат прости. Други — особено там, където бяха включени гранични случаи или сложна логика на разклонение — щяха да бъдат много по-отнемащи време.

В този момент се обърнах към AI. Използвах "CoPilot" за помощ при писането на код и помислих, че може да ми помогне и с тестовете.

Ранни промахи с AI

Първоначално помолих AI да "напише unit тестове" без никакъв реален контекст или ограничения. Резултатът? Бъркотия. Тестовете не работеха, правеха неправилни предположения за кода, и цялото начинание се превърна в цикъл от повреден тестов код и фрустриращи пренаписвания. AI генерира много код — но не от типа, който можех да използвам без сериозно рефакториране.

Даване на посока на AI

Прорывът дойде, когато промених подхода си. Вместо да се отнасям към AI като към магьосник, започнах да го използвам повече като младши разработчик. Давах му по един файл наведнъж, обяснявах намерението на кода и му казвах да се фокусира върху писането на прецизни, функционални тестове само за този файл.

Това промени всичко.

Внезапно тестовете станаха по-лесни за AI за реализация. Те бяха правилно ограничени, съобразени с действителната логика и не изискваха часове дебъгване. Моят AI премина файл по файл, като написа и стартира тестове.

Резултатите

За по-малко от ден покритието с тестове скочи от 5% до над 96%.

  • Инструкции: 96,72%
  • Клонове: 95,67%
  • Функции: 92,1%
  • Редове: 96,87%

Тестовете, които щяха да отнемат дни за писане, бяха завършени за часове, а душевното спокойствие, което идва с почти пълно покритие с тестове? Безценно.

Преминах от една Test Suite и 5 теста до:

  • 20 Test Suites
  • 136 Преминали теста

Какво научих

  • AI не е магия — но е невероятен асистент. Дайте му контекст, направлявайте го, и ще получите отлични резултати.
  • Фокусът има значение. Да искаш от AI да "тества всичко" води до хаос. Да го помолиш да тества този файл, тази функция, този случай — това работи.
  • Очаквайте дебъгване — но много по-малко от писането от нулата. AI понякога прави грешки, но общият процес е много по-бърз от самостоятелната работа.

Независимо дали стартирате нов проект или се опитвате да добавите тестове към по-стар, AI може да бъде огромна икономия на време — ако го използвате правилно.

Използвате ли AI за писане на тестове в проектите си? Какъв е вашият опит?

PrimeCRM

Назад към Центъра за Знания