Wszystkie wpisy

AI szkicuje raport z nightly - człowiek publikuje (październik 2024)
AI szkicuje raport z nightly - człowiek publikuje (październik 2024)

English

AI szkicuje raport z nightly - człowiek publikuje (październik 2024)

Październik 2024: GPT-4o mini składa draft z logów nightly. Quality gate zostaje przy teście, nie przy modelu. Bez o1 jako pinu.

QA

Akapit z nocy, nie nowy portal

Jest 15 października. Rano mam HTML Playwrighta i trzy joby nightly. Chcę akapit dla siebie i dla zespołu, nie dashboard “AI test intelligence”. Model pisze draft. Ja wklejam go na kanał, do ticketu, albo skreślam.

Moja teza na październik 2024 jest wąska. GPT-4o mini jest wystarczająco tani, żeby z XML albo z listy failed zrobić szkic: ile padło, jakie klastry, co sprawdziłbym rano. Quality gate i publikacja zostają przy mnie. W lipcu 2023 brałem jeden log i hipotezy do jednego padnięcia. Dziś biorę cały bieg. Tamten wpis to mikroskop. Ten jest mapą nocy.

Stan warsztatu. Runner to Playwright 1.48.0 z 8 października. Na logi pinuję gpt-4o-mini z 18 lipca; GPT-4o z 13 maja zostaje, gdy chcę szerszy kontekst. o1-preview mam od 12 września jako opcję. Nie jest pinem nightly: wolny, drogi, preview. Claude 3.5 Sonnet z 21 czerwca zostaje konkurentem w czacie. Nie pinuję tu upgrade’u ani computer use.

Czego tu nie będzie. Nie będzie “AI owns the quality gate”. Nie będzie auto-merge i automatycznego zamykania ticketów. Nie będzie dumpów nightly z PII. Nie będzie recenzji vendora. Będzie syntetyczny nightly: dwanaście faili, trzy podobne timeouty, jeden nowy assert na logowaniu.

Wejście, nie pamięć modelu

Wklejam artefakt, nie proszę modelu, żeby “pamiętał nasz pipeline”. Wejście to JUnit albo krótka lista nazw, plus jedno zdanie: czy to PR, czy scheduled. We wrześniu 2022 te dwa triggery znaczą coś innego. Model, który tego nie dostanie, zleje bramkę z nocą.

Redakcja sekretów jest ta sama co przy triage. Token, connection string, nazwisko z logu nie idą do promptu. Zostawiam nazwę testu, czas, komunikat asercji. W 2023 model pisał docs z ticketu, zanim powstał kod. Tu dostaje artefakt po biegu. To nie jest ten sam prompt.

Równoległość jobów z października 2021 zostaje w YAML. Nie proszę modelu, żeby zgadł, który matrix padł, jeśli nie ma tego w XML.

Prompt, od którego zacząłem ten tydzień, był celowo wąski:

To JUnit z nightly, nie z PR.
Policz faile. Zrób trzy klastry. Oddziel znany timeout od nowego faila.
Nie pisz, że to bug produktu. Nie wymyślaj jobów, których nie ma na liście.
Trzy akapity.

Co ma być w szkicu

Liczba. Nowość kontra flake, który już znam. Trzy klastry: timeout, dane, asercja. Jedno zdanie, czego nie wiem. Bez werdyktu “to bug produktu”. Bez “wszystko to środowisko”.

Szkic z syntetycznej nocy wyglądał tak: dwanaście czerwonych. Dziewięć nazw z checkout.spec pada na TimeoutError przy tym samym kroku. Dwa to toHaveText na banerze daty. Jeden nowy: login.spec i toHaveAccessibleName. To jest mapa, którą mogę czytać przy kawie. To nie jest merge.

W styczniu 2023 model szkicował przypadki, zanim suite istniała. Dziś szkicuje, gdy suite już padła. Nadal szkic.

Gdzie człowiek publikuje

Required check zostaje zielony albo czerwony z runnera. Raport AI nie jest gatem. Ja decyduję, czy akapit idzie na Slack, czy do ticketu, czy do kosza.

Publikacja wyników w CI zostaje mechanizmem, który miałem przy Cypressie i przy Azure DevOps: artefakt, karta, kanał. Model nie zastępuje publish. Dokłada akapit, gdy ja go wkleję.

W podsumowaniu 2023 recenzja człowieka była warunkiem AI w zespole. W październiku 2024 nic tu nie zmieniłem. Draft z mini nie jest ownerem jakości.

Cursor w tym warsztacie nie jest produktem raportów. Czasem wklejam summary do czatu w IDE. Nadal ja publikuję.

Gdy model kłamie

Trzy skreślenia z tego nightly.

Skreślenie pierwsze: zmyślony job. Szkic napisał, że padł api-contract. W XML nie ma takiego suite. Porównuję ze raw. Jeśli nazwy nie ma na liście, zdanie wylatuje.

Skreślenie drugie: Playwright pomylony z Selenium. Mini uogólnia “browser tests” i wstawia WebDriverWait. Runner jest 1.48.0. Komunikat z HTML-a Playwrighta zostaje źródłem, nie słownictwo modelu.

Skreślenie trzecie: “wszystko to flake środowiska”. Dziewięć timeoutów na checkout może być środowiskiem. Nowy fail na logowaniu nie jest. Model, który spłaszcza noc do jednego koszyka, jest gorszy niż surowy JUnit. W lipcu 2023 ta sama pokusa była przy jednym teście. Przy dwunastu jest groźniejsza.

o1-preview nie pinuję. Preview, limity, koszt na nightly. Jeśli kiedyś wejdzie, wejdzie jako drugi szkic, nie jako bramka.

Podsumowanie

W październiku 2024 tani draft z 4o mini jest recenzją, jak recenzja PR. Gate zostaje przy teście, nie przy czacie.

Trzy zdania na rok. Mini składa mapę nocy z XML, którego sam nie wymyślił. Ja skreślam zmyślony job i publikuję albo nie. Required check nie czyta akapitu.

Czego z tego nie wynika. Nie wynika, że kasuję triage z 2023. Nie wynika, że 1.48.1 już u mnie siedzi. Nie wynika, że model zamyka ticket.

Warunek dojrzałości: dwa nightly pod rząd szkic zgadza się z JUnit co do liczby i nie woła “to środowisko” na nowym asercie.