Kitengo 5 / 12

Utatuzi na utatuzi wa matatizo

Faida:

  • Uwezo wa kuelezea kwa usahihi mdudu kwa AI na ujumbe wa makosa, ufuatiliaji wa safu, na mfano mdogo zaidi wa kuzaliana.
  • Uwezo wa kuendesha mtiririko wa utatuzi wa kimfumo na AI kupata sababu ya msingi kwa kufikiria na kuipunguza hatua kwa hatua.
  • Uwezo wa kuthibitisha kuwa urekebishaji wa AI uliopendekezwa kweli ulisuluhisha shida kwa kuzaliana na upimaji wa rejista.

Utatuzi ni kazi ya kujua ni kwa nini programu inatenda tofauti na inavyotarajiwa na kuirekebisha, na hutumia muda mwingi wa wahandisi. Utatuzi mzuri hautegemei mchezo wa kubahatisha, lakini kwa kupungua kwa utaratibu: fafanua dalili, hypothesize, jaribu hypothesis, pata sababu ya mizizi. AI ni mshirika mwenye nguvu sana katika mzunguko huu; Lakini tu ikiwa utampa habari sahihi. Kusema "msimbo haifanyi kazi, irekebishe" inalazimisha AI kukisia na kutoa mapendekezo kamili. Ipe ujumbe kamili wa hitilafu, ufuatiliaji wa rafu, na sampuli ndogo zaidi ya kuzaliana, na kwa pamoja utapata chanzo kikuu.

Katika kitengo hiki tutaona jinsi ya kuelezea hitilafu kwa AI kwa ufasaha, kupunguza dhahania hatua kwa hatua, na kuthibitisha kupitia upimaji wa rejista kwamba marekebisho yanayopendekezwa hutatua tatizo. Kumbuka: "kurekebisha" mdudu na "kukandamiza dalili ya mdudu" ni vitu viwili tofauti; Marekebisho yaliyofanywa bila kupata sababu kuu huhamisha kosa mahali pengine.

Dhana: Ufuatiliaji wa rafu: Tupio linaloonyesha ni vipengele vipi viliitwa kwa mpangilio gani wakati wa hitilafu. Repro ndogo: Nambari rahisi zaidi, fupi zaidi / ingizo ambalo husababisha hitilafu. Chanzo kikuu: Chanzo halisi cha tatizo, si dalili. Jaribio la urekebishaji: Jaribio ambalo huhakikisha kuwa hitilafu sawa haijirudii.

Kuelezea Mdudu kwa AI

Uwezekano wa AI kupata chanzo kikuu ni sawia moja kwa moja na ubora wa maelezo unayotoa. Maelezo mazuri ya hitilafu ni pamoja na: ulichojaribu kufanya, ulichotarajia, kilichotokea, maandishi ya hitilafu na ufuatiliaji wa rafu, msimbo unaohusika, mazingira (lugha/toleo/OS), na sampuli ndogo zaidi iliyozalisha hitilafu.

  1. Fafanua dalili. Katika muundo "Inatarajiwa X, halisi Y".
  2. Bandika maandishi kamili ya hitilafu na ufuatiliaji wa rafu. Usiifupishe, idhibiti, lakini usivunje muundo.
  3. Toa uzazi mdogo zaidi. Ingizo na msimbo wa chini kabisa unaosababisha hitilafu.
  4. Bainisha mazingira. Toleo la lugha, toleo la maktaba, mazingira ya wakati wa kukimbia.

Kidokezo kinachofaa cha maelezo ya hitilafu: "Ninatatua hitilafu. Maelezo:- Ninachojaribu kufanya: [X]- Tabia inayotarajiwa: [Y]- Tabia halisi: [Z]- Ujumbe kamili wa hitilafu na ufuatiliaji wa rafu: [bandika]- Mazingira: [lugha/toleo, maktaba/toleo]- Kima cha chini cha msimbo unaohusika: [msimbo] Usinipe mpangilio wa moja kwa moja wa orodha kwanza. niambie ni cheki gani cha kuthibitisha kwa kila moja."

Mtiririko Mwembamba kwa Dhahania

Utatuzi wa kimfumo ni sanaa ya kuondoa uwezekano mmoja baada ya mwingine. Tumia AI kutoa dhahania na kubuni jaribio ili kujaribu kila nadharia; Kisha endesha jaribio na urudishe matokeo. Mzunguko huu ni wa haraka zaidi kuliko tabia ya kufanya mabadiliko ya nasibu na kuacha, inayoitwa "utatuaji wa bunduki".

Binary search (section) msaidizi wa haraka: "Hitilafu hii haikuwepo jana, iko leo. Ninataka kujua ni ipi kati ya mabadiliko 20 ya mwisho ilileta hitilafu na bisect. Nipe mpango wa hatua kwa hatua: nipime hatua gani, ni nusu gani napaswa kwenda kulingana na matokeo. Pia niambie nini hasa cha kuangalia katika kila hatua."

Kidokezo cha mkakati wa uwekaji wa kumbukumbu: "Siwezi kupata hitilafu kwa sababu siwezi kuona thamani za kati katika chaguo la kukokotoa. Niambie ni katika sehemu gani ninahitaji kuongeza mistari ya kumbukumbu inayochapisha vigeuzo. Ongeza maelezo ya 'nitajifunza nini kutoka kwa kumbukumbu hii' kwa kila kumbukumbu. Pia bainisha maonyo yatakayonizuia kuingia data ya siri."

Kidokezo: Ikiwa huwezi kutatua hitilafu, mara nyingi tatizo huwa mahali fulani ambapo ulidhania vibaya. Uliza AI "ni dhana gani yangu inaweza kuwa mbaya?" Kuuliza kutavunja upofu wako. Makosa magumu zaidi hujificha mahali unaposema "Nina hakika hii inafanya kazi sawa".

Uhamasishaji dhaifu / Uhamasishaji Wenye Nguvu

DHAIFU:"Nambari yangu inatoa hitilafu, irekebishe: [mistari 200 ya msimbo]"(Tokeo: AI haijui ni kosa gani, ni nini kinachotarajiwa; inatoa mapendekezo ya jumla kulingana na kazi ya kubahatisha, mengi yao hayana maana.)STRONG:"Ninapata NullPointerException. Inatarajiwa: orodha ya watumiaji inapaswa kurejeshwa. Halisi: Inalipuka wakati wa kupiga simu kwa getUsers:1pack. Java. Rudia kiwango cha chini: Hufanyika wakati orodha ya watumiaji haina tupu, lakini si wakati imejaa mistari 15 Husika: [code] Eleza sababu kuu na kwa nini orodha tupu imeanzishwa, kisha pendekeza kurekebisha.

Kidokezo chenye nguvu kinaweka kosa katika muktadha: katika hali ambayo hutokea (orodha tupu), katika hali ambayo haifanyiki (orodha kamili). Kidokezo hiki kimoja ("hutokea kikiwa tupu") karibu kinaelekeza moja kwa moja kwenye chanzo kikuu. Kwa kuwa habari hii haipatikani kwa haraka haraka, AI hufanya ubashiri wa kipofu.

Kuthibitisha Urekebishaji

Marekebisho ni suluhisho la kweli ikiwa inafanya mambo matatu:

kudhibiti

Swali

Jinsi ya kuthibitisha

Je, kosa limekwenda?

Je, ingizo sawa linafanya kazi sasa?

Endesha repro ndogo tena

Je, hakuna makosa mapya?

Kuna kitu kingine chochote kimevunjika?

Endesha safu nzima ya majaribio

Si itajirudia?

Je, kosa kama hilo litatokea tena?

Ongeza jaribio la urejeshi kwa hali hii

Marekebisho yaliyofanywa bila kupata sababu ya mizizi mara nyingi hukandamiza dalili. Kwa mfano, kuangazia hitilafu batili na "ruka ikiwa batili" hufanya sababu halisi, "kwa nini data inakuja batili?" asiyeonekana, na kosa hutokea tena mahali pengine.

Kesi Ndogo

Kesi 1 - Mtego wa kukandamiza dalili. Timu hunyamazisha hitilafu isiyofaa ya mara kwa mara kwa kujaribu kujaribu; Hitilafu hupotea lakini baada ya wiki 2 data inaonekana kukosa. Sababu halisi ni kwamba huduma inarudi batili kwa kuisha. Unapouliza AI "kwa nini inapotea?", sababu ya mizizi inajitokeza; Marekebisho halisi huchukua saa 1 lakini ni ya kudumu.

Kesi ya 2 - Nguvu ndogo ya repro. Msanidi programu hawezi kurekebisha hitilafu inayosema "huanguka kila baada ya muda fulani." Inapunguza hitilafu kwa ingizo ndogo zaidi na pendekezo la AI: shida hutokea tu kwa majina ya faili yaliyo na herufi za Kituruki (kosa la usimbaji). Wakati mistari 300 ya kutokuwa na uhakika inapunguzwa hadi mistari 5 ya repro ya uhakika, suluhisho inakuwa dhahiri.

Kesi ya 3 - Mtihani wa kuzuia kurudi nyuma. AI hurekebisha hitilafu ya kuhesabu tarehe. Mhandisi hajaridhika na hili; inaongeza jaribio la rejista kwa hali isiyo sahihi (mwisho wa mwezi, Januari 31 + mwezi 1). Mabadiliko mengine yanapogusa eneo lile lile miezi 4 baadaye, jaribio huwa jekundu na mdudu hunaswa kabla ya kufikia uzalishaji.

Makosa ya kawaida

  • Ina maana "haifanyi kazi, rekebisha". Bila maandishi ya makosa, matarajio na repro, nadhani za AI.
  • Sio kutoa ufuatiliaji wa rafu. Ufuatiliaji wa stack mara nyingi unaonyesha moja kwa moja sababu ya mizizi.
  • Endelea kufanya mabadiliko bila mpangilio. Majaribio bila kuanzisha hypothesis kupoteza wakati.
  • Kukandamiza dalili na kukosa sababu kuu. Hitilafu huzaliwa upya mahali pengine.
  • Sio kupata urekebishaji na upimaji wa rejista. Hitilafu sawa inarudi kimya katika siku zijazo.

Kwa muhtasari

Utatuzi unaofaa ni kupunguza kimfumo, sio kubahatisha. Kuipa AI maandishi kamili ya makosa, ufuatiliaji wa rafu, uzazi mdogo na habari ya mazingira huongeza sana uwezekano wa kupata sababu kuu. Tumia AI kutoa dhahania na kubuni jaribio ili kujaribu kila nadharia; Unaendesha jaribio. Fikiria kurekebisha "imefanywa" tu unapoona kuwa mdudu umeenda, hakuna mende mpya zinazoletwa, na inalindwa na upimaji wa rejista.

Jukumu la maombi

Fikiria kosa halisi au bandia. Kwanza punguza kosa kwa uzazi mdogo (ambayo pembejeo hutokea, ambayo haifanyi). Kwa kutumia kichocheo cha hitilafu kinachofaa, uliza AI kwa nadharia 3 za sababu na hatua ya uthibitishaji kwa kila moja. Tafuta chanzo kwa kujaribu dhahania moja baada ya nyingine, irekebishe, kisha andika na endesha jaribio la rejista kwa hali hii ili kuonyesha kuwa hitilafu imeenda na mtihani hutoa ulinzi.

orodha ya ukaguzi

  • [ ] Nilifafanua dalili kama "inatarajiwa dhidi ya kufikiwa".
  • [ ] Nilitoa maandishi kamili ya makosa na ufuatiliaji wa rafu kwa AI.
  • [ ] Nilipunguza hitilafu hadi utayarishaji mdogo zaidi.
  • [ ] Kwa kujaribu dhahania moja baada ya nyingine, nilipata chanzo kikuu.
  • [ ] Badala ya kukandamiza dalili, nilirekebisha kisababishi kikuu.
  • [ ] Niliongeza na kuendesha jaribio la urekebishaji kwa kosa sawa.