AI kwa Ajili ya Kutengeneza Majaribio: Inaposaidia na Inapopotosha
AI huandika majaribio kwa haraka. Pia huandika majaribio yanayoonekana ya kweli lakini yanathibitisha mambo yasiyo sahihi. Unaweza kuona ufunikaji (coverage) wako ukiongezeka, lakini kodi yako inabaki na hitilafu.
AI ni nzuri kwa kazi fulani. Itumie kwa:
- Changanua kutokana na mfano mzuri. Ukianza kuandika jaribio moja kamili, AI inaweza kuandika mengine kumi kwa mtindo wako uleule.
- Shughulikia uandishi wa kurudia-rudia. Itumie kwa kanda za setup, teardown, na wasaidizi wa factory (factory helpers).
- Tengeneza muundo wa awali (scaffolding). Inakufikisha kwenye kihariri (editor) haraka kuliko faili tupu.
Hatari huanza unapoacha AI iamue "mkataba" (contract).
Ukimpa AI function na kuomba majaribio, inasoma kodi na kujaribu kile ambacho kodi hiyo inafanya kwa sasa. Haijaribu kile ambacho kodi hiyo inapaswa kufanya. Hii inatengeneza mzunguko uliofungwa. AI inafanya dhana, inaandika kodi, na kisha inaandika majaribio yanayokubaliana na dhana hiyo hiyo.
Hitilafu (bugs) zinapofika kwenye uzalishaji (production), zinatokea kwa sababu seti ya majaribio (test suite) ilikuwa upande wa hitilafu hiyo.
Tahadhari na mitego hii mitatu:
Majaribio yanayolenga utekelezaji (Implementation-shaped tests) AI mara nyingi hujaribu njia za mantiki (logic paths) badala ya kanuni za biashara (business rules). Ukibadilisha maelezo madogo ya ndani, majaribio yanaharibika hata kama matokeo bado ni sahihi. Hii inafanya marekebisho ya kodi (refactoring) kuwa jinamizi.
Kesi za mwisho zisizo na kina (Shallow edge cases) AI ni nzuri katika kujaribu nulls, herufi tupu (empty strings), na sifuri. Hizi ni dhahiri. Haiwezi kupata "mipaka ya uwanja" (domain edges). Haijui hitilafu zako mahususi za saa (timezone), mambo ya ajabu ya hifadhidata yako, au kanuni zako za kipekee za biashara.
Mock zisizostahimili (Brittle mocks) AI inapenda ku-mock kila kitu. Hii inasababisha matatizo mawili:
- Mock si sahihi. Inaiga toleo la bandia la API ambalo halilingani na uhalisia.
- Mock inafunga utekelezaji. Inajaribu jinsi kodi yako inavyopiga simu kwa function nyingine badala ya kujaribu matokeo ya mwisho.
Jinsi ya kutumia AI kwa usahihi:
Weka "kusudi" (intent) mbali na uwezo wa AI.
- Andika mkataba kwanza. Andika sentensi moja kwa Kiingereza cha kawaida kwa kila jaribio. Mfano: "Expired codes must return the original amount."
- Mpe AI sentensi hizo. Iache iandike assertions, lakini wewe ndiye unayetoa maana.
- Mock kwenye mipaka (boundaries). Mock tu API za nje au hifadhidata. Tumia matoleo halisi ya moduli zako za ndani.
- Andika kesi moja ya mwisho ya uwanja (domain edge case) kwa mkono. Kila unapomaliza function, andika jambo moja linalokutia hofu. Litumie hilo kama prompt kwa AI.
AI ni chombo cha uzalishaji, si mbadala wa kufikiri. Itumie kuandika mwili wa jaribio, lakini usiwahi kuruhusu iamue jaribio linahusu nini.
Source: https://dev.to/nazar_boyko/ai-for-test-generation-where-it-helps-and-where-it-lies-jhm
Optional learning community: https://t.me/GyaanSetuAi
