( vilmos.nagy | 2023. 05. 31., sze – 19:02 )

Nekem azért favágás a teszt megírása, mert amikor ezt begépeltem, akkor a gépnek már minden szükséges információja megvan ahhoz, hogy befejezze a teszt megírását:

[Fact]
public void Returns_True_For_Odd_Numbers()
{

Hány ilyet írsz munkaidőben? Szerintem ha szar, nempontos az implementáció, de a generált unit tesztben benne marad a hiba, akkor a unit teszt többet árt, mint használ.

Ez a capitalize metódus hasonlóan h'ót egyszerű a fentihez képest, aztán mégiscsak rágenerálja a ChatGPT néha, hogy

    @Test
    public void testCapitalize() {
        // Test case 1: Normal input
        String input1 = "hello";
        String expected1 = "Hello";
        String result1 = StringUtil.capitalize(input1);
        assertEquals(expected1, result1);

        // Test case 2: Empty string
        String input2 = "";
        assertThrows(IndexOutOfBoundsException.class, () -> StringUtil.capitalize(input2));

        // ...
    }

Aztán ha úgy kerülök oda javítani, hogy hm, kifejezetten erre az esetre van test case, akkor elgondolkozom azon, hogy én vagyok-e a hülye. Pedig nem, a fenti egy szar implementáció, javítva is lett, és a generált teszt is esélyesen szar lenne rá. Ahogy elismerem, arra is van esély, hogy a ChatGPT a jó tesztet generálja le, és ne a hibára/felesleges edge-case-re találjon rá - de ahogy bonyolódik az üzleti logika, úgy egyre nagyobb eséllyel lesznek gépiesen ráírt tesztek. És ezeknek nincs hozzáadott értéke. Szerintem sokkal több ilyen, a második keycloak kódhoz hasonló dolgot írsz te is munkaidőben, mint páros szám eldöntő dolgot...

Ha az LLM helyett a junior kolléga ír 500 sort, azt jobban átnézed?

Attól függ. Ha a junior kolléga a production kódja mellé írta, akkor igen. Ha csak gépiesen oda van adva neki, hogy „itt a prod kód Senior Sándortól, legyen rá a coverage 100%, mert akkor boldog a PM”, akkor nem. Lesz szíves Senior Sándor megírni a kis tesztjeit.

szerk.: Ha a junior kolléga a production kódja mellé írta, akkor igen. -> ha a junior kolléga unit tesztjei 500 sor, akkor lehet, hogy túl nagy feladatott kapott elsőre.