Правильно используемый AI превосходен в перечислении тестов — он придумывает граничные случаи и быстро пишет шаблонный код. Но вы должны проверить, что утверждения имеют смысл, потому что AI охотно пишет тесты, которые проходят, не доказывая ничего.
Правильно используемый AI превосходен в перечислении тестов — он придумывает граничные случаи и быстро пишет шаблонный код. Но вы должны проверить, что утверждения имеют смысл, потому что AI охотно пишет тесты, которые проходят, не доказывая ничего.
// Function under test, with its contract:
// applyDiscount(price, percent) -> price reduced by percent.
// Contract: percent must be 0..100; throws RangeError otherwise. price >= 0.
function applyDiscount(price, percent) {
if (percent < 0 || percent > 100) throw new RangeError('percent out of range');
return price - (price * percent) / 100;
}
// AI-suggested test cases (Jest) — note the edge and error paths, not just happy path:
test('applies a normal discount', () => {
expect(applyDiscount(100, 20)).toBe(80); // happy path
});
test('0% leaves price unchanged', () => {
expect(applyDiscount(100, 0)).toBe(100); // boundary: lower edge
});
test('100% makes it free', () => {
expect(applyDiscount(100, 100)).toBe(0); // boundary: upper edge
});
test('rejects percent above 100', () => {
expect(() => applyDiscount(100, 150)).toThrow(RangeError); // error path
});
AI предложил граничные случаи (0 и 100) и путь ошибки, который вы могли забыть. Ваша задача — подтвердить, что toBe(80) является правильным ожидаемым значением, а не просто тем, что возвращает функция.
Сложная часть тестирования — это не печатание блоков test(...) — это продумывание случаев, которые вы иначе упустили, и AI действительно хорош в этом. Но он не знает, что должен делать ваш код, если вы ему не скажете, поэтому без надзора он имеет тенденцию писать тесты, которые зеркалируют реализацию (они проходят, но прошли бы, даже если бы функция была неправильной). Рассматривая AI как генератор граничных случаев, пока вы владеете утверждениями, вы получаете широкое покрытие и реальную корректность — скорость от AI, суждение от вас.