ክፍል 5 / 12

የሙከራ እና የጥራት ማረጋገጫ

ትርፍ፡

  • ከ AI ጋር የንጥል ሙከራዎችን, የጠርዝ ጉዳዮችን እና የሽፋን ክፍተት ትንተና የማምረት ችሎታ
  • በዝርዝሩ ላይ በመመስረት የፈተና የሚጠበቁትን የማተም ችሎታ, የኮዱ ወቅታዊ ባህሪ አይደለም
  • ምርመራው ስህተቶችን በመርፌ በትክክል ይከላከል እንደሆነ የመፈተሽ ችሎታ

የመፃፍ ፈተናዎች አብዛኛዎቹ ገንቢዎች ከሚያስቀምጧቸው በጣም ዋጋ ከሚሰጡ ተግባራት ውስጥ አንዱ ነው። ጥሩ የሙከራ ስብስብ ኮዱ እንደተጠበቀው እንደሚሰራ እና ለወደፊት ለውጦች የህይወት መስመር ማረጋገጫ ነው። ችግሩ የአጻጻፍ ሙከራዎች ተደጋጋሚ እና ጊዜ የሚወስድ ነው - በትክክል AI የሚያበራበት የሥራ ዓይነት። ነገር ግን አንድ መያዝ አለ፡ AI ብዙውን ጊዜ የኮዱን ነባር ባህሪ ይፈትሻል እንጂ መሆን ያለበት ባህሪ አይደለም። ይህንን ልዩነት ማስተዳደር የዚህ ክፍል ይዘት ነው።

በዚህ ክፍል ውስጥ የዩኒት ሙከራን ይማራሉ። በፈተና ሽፋን ላይ ክፍተቶችን መዝጋት; እና ለምን በጭፍን የ AI ሙከራዎችን ማመን አደገኛ ነው.

የፈተና ሁለት ገጽታዎች፡ ባህሪን ማስተካከል እና ያረጋግጡ

ፈተና ሁለት የተለያዩ ዓላማዎችን ሊያገለግል ይችላል። የመጀመሪያው ማረጋገጫ ነው፡ ኮዱ ትክክል መሆኑን፣ ከዝርዝሩ ጋር የሚስማማ መሆኑን ይፈትሻል። ሁለተኛው የድጋሚ መከላከያ ነው፡ ዛሬ የኮዱን ባህሪ ያቀዘቅዘዋል፣ ስለዚህ አንድ ሰው በድንገት ነገ ቢለውጠው ፈተናው ይሰበራል እና ያሳውቃል።

AI በኋለኛው ላይ በጣም ጥሩ ነው; ኮዱን ይመለከታል እና "አሁን ምን እያደረገ እንዳለ" የሚፈትሹ ጉዳዮችን ይፈጥራል። ነገር ግን ኮዱ ከመጀመሪያው ስህተት ከሆነ፣ AI ያንን የተሳሳተ ባህሪ “ትክክል” ብሎ ሊሰካው ይችላል። ስለዚህ የእያንዳንዱን ፈተና አገላለጽ መገምገም አለብዎት AI ያመረተው "ኮዱ 42 ይመለሳል እና ፈተናው 42 ይጠብቃል" ማለት 42 ትክክለኛ መልስ ነው ማለት አይደለም.

ጥንቃቄ: AI ፈተናውን ካለፈ, ይህ ማለት ኮዱ "ይሰራል" ማለት አይደለም; ይህ ማለት "አይአይ እንደሚጠብቀው ነው" ማለት ነው. የሚጠበቀው ነገር ትክክል መሆኑን ወይም አለመሆኑን የሚወስኑት ዝርዝር መግለጫውን በመመልከት ነው።

ደረጃ በደረጃ፡ ጠንካራ ሙከራዎችን ከ AI ጋር መፃፍ

  1. ኮዱን ብቻ ሳይሆን መግለጫውን ይስጡ። "ይህ ተግባር ይህን ማድረግ አለበት" የሚለውን መረጃ ካከሉ, AI ትክክለኛውን መጠበቅ ሊጽፍ ይችላል; ኮዱን ብቻ ካቀረብክ አሁን ያለውን ባህሪ ይፈትሻል።
  2. የጠርዝ ጉዳዮችን ይጠይቁ. ባዶ፣ ባዶ፣ ዜሮ፣ አሉታዊ፣ በጣም ትልቅ፣ መጥፎ ቅርጸት፣ ተመሳሳይነት - ከደስታው መንገድ መውጣቱን በግልፅ ይጠይቁ።
  3. የሙከራ ማዕቀፉን እና ዘይቤውን ይግለጹ። "Pytest ይጠቀሙ"፣ "አደራደር-Act-Assert ጥለት"፣ "እያንዳንዱ ይሞክር አንድ ነገር ይፈትሽ" ወዘተ።
  4. የሚጠበቁትን ያረጋግጡ (ማስረጃ)። እያንዳንዱ የሚያረጋግጡት ትክክለኛ ዋጋ ለማግኘት ከሚያረጋግጡት ዝርዝር መግለጫ ጋር ያወዳድሩ።
  5. የቦታ ክፍተቶችን ዝጋ። ያሉትን ፈተናዎች ስጡ እና "የትኞቹ ቅርንጫፎች እና ጉዳዮች ያልተሞከሩ?" እንድትጠይቅ ማድረግ; ከዚያ ተጨማሪ ሙከራዎችን ያረጋግጡ.

ሶስት ሚኒ ጉዳዮች

ጉዳይ 1 - ሽፋን ከ 52% ወደ 85%. የአንድ አገልግሎት ሞጁል የሙከራ ሽፋን 52 በመቶ ነበር። ቡድኑ ነባሮቹን ፈተናዎች ለኤአይኤ በመመገብ፣ ያልተፈተኑ ቅርንጫፎችን ዘርዝሮ ለእነርሱ ፈተናዎችን እንዲያመነጭ አድርጓል። በሰዎች ግምገማ, ሽፋን ወደ 85% ጨምሯል; በሂደቱ ውስጥ AI ከዚህ በፊት ተፈትኖ በማያውቅ የሳንካ ቅርንጫፍ ውስጥ ትክክለኛ ሳንካ (የተሳሳተ የስህተት ኮድ የተመለሰ መንገድ) ገለጠ።

ጉዳይ 2 - የሐሰት ጥበቃ መጠገኛ ወጥመድ። አንድ ገንዘብ ማጠጋጋት ተግባር በትክክል ስህተት ነበር; 2.675 ወደ 2.67 ከማጠጋጋት ይልቅ 2.67 ከ2.68 ይልቅ 2.67 ማጠጋጋት ነበር። AI ኮዱን ተመልክቶ ክብ_ገንዘብ (2.675) = 2.67 - ስህተቱን እንደ “እውነት” አቆመው። ገንቢው ዝርዝር መግለጫውን ሲያነብ፣ የሚጠበቀውን ነገር አስተካክሎ እውነተኛውን ስህተት ያዘ። ኮድ ሳይሆን ደንቡን መሞከር ልዩነቱን አመጣ።

ጉዳይ 3 - የጠርዝ ግዛት ፍንዳታ. ለቀናት ክልል ተግባር “የጠርዝ ጉዳዮችን” ብቻ AI ሲጠይቁ ፣ እንደ መጀመሪያ = መጨረሻ ፣ የተገላቢጦሽ ክፍተት ፣ የመዝለል ዓመት የካቲት 29 ፣ የተለያዩ የሰዓት ሰቆች እና ባዶ ክፍተቶች ያሉ 8 ጉዳዮችን አቅርቧል። ከእነዚህ ውስጥ ሁለቱ (የተገላቢጦሽ ክፍተት እና የመዝለል ዓመት) በትክክል ስህተቱን ያመጡ ነበር። እነዚህን ጉዳዮች በእጅ ግምት ውስጥ በማስገባት ብዙ ጊዜ ተዘሏል; AI እዚህ "የጠርዝ-ጉዳይ የአእምሮ ማጎልበት" አጋር ሆነ።

አራት ሊገለበጡ የሚችሉ አብነቶች

ዝርዝር ላይ የተመሰረተ የሙከራ ማመንጨት፡-

ሚና፡ ፈተናዎችን የሚጽፍ ገንቢ። መዋቅር፡ {{pytest/JUnit/Jest...}}። ተግባሩ ምን ማድረግ እንዳለበት (መግለጫ)፡ {{ደንብ}}ለሚከተለው ተግባር ሙከራዎችን ፃፍ። የሚጠበቁትን በዝርዝሩ መሰረት ይፃፉ፣ የኮዱ የአሁኑን ውጤት አይደለም ደስተኛ መንገድ + ቢያንስ 4 ጠርዞችን ያክሉ። እያንዳንዳቸው አንድ ነገር ይፈትኑ, ገላጭ ስም ይጠቀሙ. {{ተግባር}}

የጠርዝ ጉዳይ አእምሮ ማጎልበት፡

ለዚህ ተግባር መሞከር ያለባቸውን የጠርዝ/ያልተሳኩ ጉዳዮችን ይዘርዝሩ (ኑል ፣ ባዶ ፣ መግቻ ነጥቦች ፣ መጥፎ ቅርፀት ፣ ተመሳሳይ ፣ ውጫዊ ስህተት) ። ለእያንዳንዱ ጉዳይ: ግብዓት ፣ የሚጠበቀው ባህሪ። እስካሁን ኮድ አይጻፉ፣ ዝም ብለው ይዘርዝሩ።{{function}}

የሽፋን ክፍተት ትንተና;

ከታች ያሉት ተግባራት እና የሚገኙ ሙከራዎች ናቸው. የትኞቹ ቅርንጫፎች, ሁኔታዎች እና ጉዳዮች ያልተሞከሩ ናቸው? ጉድለቶቹን ይዘርዝሩ እና አዲስ ፈተናዎችን ለጉድለቶቹ ብቻ ይጻፉ። ያሉትን አትድገሙ። ተግባር፡{{ተግባር}}ሙከራዎች፡{{ነባሩ_ሙከራዎች}}

ሙከራ ውሂብ/አስቂኝ ነገር ማመንጨት፡

ለ{{ተግባር/አገልግሎት}} ሙከራዎች እውነተኛ የሙከራ ውሂብ ያመንጩ፡ ትክክለኛ ናሙናዎች፣ የጠረፍ ናሙናዎች እና ልክ ያልሆኑ ናሙናዎች ለየብቻ። ለውጫዊ ጥገኝነት {{X}} ቀላል የማስመሰል ባህሪን ይጠቁሙ። እውነተኛ ሚስጥራዊ መረጃ/PII መጠቀም; የውሸት ውሂብ ይፍጠሩ።

ደካማ ጥያቄ / ጠንካራ ጥያቄ

ደካማ፡ "ለዚህ ተግባር ፈተና ይፃፉ።"
ጠንካራ: "ከ pytest ጋር. ተግባር apply_discount (ጠቅላላ, በመቶ) - ደንብ: ቅናሽ 0% -30% መሆን አለበት, ከገደብ ውጪ ValueError መጣል አለበት, ውጤቱ 2 አስርዮሽ የተጠጋጋ መሆን አለበት. በዚህ RULE (በኮድ አይደለም) የሚጠበቁ ነገሮችን ይጻፉ. መልካም መንገድ + እነዚህ ጠርዝ ጉዳዮች: 0%, 30%, 3, ጠቅላላ) (ስህተት).

ጠንካራ የመልቀቂያ ህግን ይሰጣል እና "የሚጠበቀውን እንደ ደንቡ ሳይሆን እንደ ደንቡ ይፃፉ" ይላል; ይህ ነጠላ ዓረፍተ ነገር የ AI እኩይ ባህሪን የሚያስተካክል ወጥመድ ይዘጋል።

የሙከራ ዓይነት

AI አስተዋፅዖ

የሰው ቁጥጥር

መልካም የመንገድ ክፍል ሙከራ

ፈጣን አጽም

የሚጠበቀው ነገር ትክክል ነው?

የጠርዝ መያዣዎች

ሰፊ የአእምሮ ማጎልበት

አግባብነት የሌላቸውን ያስወግዱ

የቦታ ክፍተት መሙላት

የተዘለሉ ቅርንጫፎችን ያገኛል

አስፈላጊነትን ያረጋግጡ

ውሂብን ሞክር/ማሾፍ

ተጨባጭ ናሙና ይፈጥራል

ምንም PII የለም፣ የእውነታ ቁጥጥር

ሙከራዎች ጥራትን ያስተዳድራሉ, ዋስትና አይሰጡትም

ከፍተኛ የፈተና ሽፋን በራስ መተማመንን ይሰጣል ነገር ግን አሳሳች ሊሆንም ይችላል፡ 100 በመቶ ሽፋን ማለት "እያንዳንዱ መስመር ተሰራ" ማለት አይደለም "እያንዳንዱ መስመር ትክክል ነው" ማለት አይደለም። ከ AI ጋር ሽፋን መጨመር ቀላል ነው; እውነተኛው ዋጋ ትርጉም ያለው የሚጠበቁ ነገሮችን በመጻፍ ነው። የፈተና ዋጋ ኮድ ሲሰበር እርስዎን የመስበር እና የማስጠንቀቅ ችሎታው ነው። ለዚያም ነው በ AI የተፈጠሩ ሙከራዎች "ኮዱ ሲቀየር በእርግጥ ይሰብራል?" በሚለው ጥያቄ ላይ የተመሰረተ ነው. በጥያቄው ይሞክሩት; ሆን ብሎ መስመር መስበር እና የፈተና መቋረጥ (ሚውቴሽን ሃሳብ) ማየት ፈተናው መስራቱን የሚያሳይ ነው።

ጠቃሚ ምክር: አንድ ፈተና AI ይጽፋል እንደሆነ ለማየት በኮዱ ውስጥ ትንሽ ስህተት ይፍጠሩ (ለምሳሌ a + ወደ a - ይለውጡ) እና ፈተናው ከተሰበረ ይመልከቱ። ካልተቋረጠ ያ ፈተና አይከላከልልህም።

የተለመዱ ስህተቶች

  • ደንቡን ሳይሰጡ ለፈተና መጠየቅ. ሞዴሉ የአሁኑን ባህሪ ያቀዘቅዘዋል; ስህተቱን እንደ "እውነት" ያስተካክላል.
  • የሚጠበቁትን ሳያነቡ መቀበል። ማረጋገጫዎቹ ትክክለኛውን ዋጋ እየፈተሹ መሆናቸውን ካላረጋገጡ ሙከራው አሳሳች ነው።
  • የደስታውን መንገድ መሞከር ብቻ ነው. እውነተኛ ስህተቶች በዳርቻው ላይ ይኖራሉ; የጠርዝ ጉዳዮችን በግልፅ ይጠይቁ።
  • ለዓላማው ወሰን ስህተት. ከፍተኛ መቶኛ ለትክክለኛ ባህሪ ዋስትና አይሆንም.
  • እውነተኛ/የተደበቀ ውሂብን እንደ የሙከራ ውሂብ ማድረግ። የደንበኛ ውሂብ ወይም ሚስጥሮች ወደ ሙከራ እና ማከማቻ ውስጥ መግባት የለባቸውም; ሰው ሰራሽ ውሂብ ይፍጠሩ።

በማጠቃለያው

AI አብዛኛው የድግግሞሽ ሸክም ከመፃፍ ፈተናዎች ውጭ ይወስዳል፡ ፈጣን አፅሞችን፣ ትላልቅ የዝርዝሮችን ዝርዝር እና የሽፋን ክፍተት ትንታኔዎችን ይፈጥራል። ነገር ግን በጣም ወሳኙ ነጥብ የሚጠበቁ ነገሮች ናቸው፡ AI አሁን ያለውን የኮዱን ባህሪ የመሞከር አዝማሚያ አለው, ነገር ግን ሙከራው እንደ መግለጫው መፃፍ አለበት. ደንቡን ይስጡ ፣ የሚጠበቁትን ያረጋግጡ ፣ የጫፍ ጉዳዮችን ያስፈጽሙ እና ፈተናዎቹ በትክክል ስህተትን በመርፌ ይከላከላሉ ብለው ይፈትሹ። የፈተና ሽፋን መሳሪያ እንጂ ግብ አይደለም።

የመተግበሪያ ተግባር

አንድ ተግባር ይምረጡ እና መጀመሪያ በቀላሉ ኮዱን በመስጠት ወደ AI ያትሙ። የሚጠበቁትን አስተውል. ከዚያ ለተመሳሳይ ተግባር መግለጫውን (አስፈላጊ ባህሪ) በመስጠት ፈተናውን እንደገና ያትሙ። የሁለቱን የፈተና ስብስቦች የሚጠበቁትን ያወዳድሩ፡ የተለዩ አሉ፣ የትኛው እውነተኛ ስህተትን ያሳያል? በመጨረሻም፣ ከተፈጠሩት ሙከራዎች አንዱ ሆን ተብሎ በኮዱ ላይ ስህተት በማከል እና የፍተሻ መቋረጥን በማየት መስራቱን ያረጋግጡ።

የማረጋገጫ ዝርዝር

  • [ ] ፈተናው ባህሪን ለማስተካከል ወይም ለማረጋገጥ እንደሆነ ለይቻለሁ።
  • [ ] ፈተናን ስጠይቅ፣ ኮድ ሳይሆን በቦታው መሆን ያለበትን ህግ (ዝርዝር) እሰጣለሁ።
  • [] እያንዳንዱን የመነጨ ማረጋገጫ ከመግለጫው ጋር አወዳድራለሁ።
  • [ ] የጠርዝ እና የብልሽት ጉዳዮችን በግልፅ እጠይቃለሁ።
  • [ ] የመቶኛ ሽፋንን እንደ ግብ ሳይሆን እንደ መሳሪያ ነው የማየው።
  • [ ] ምርመራ ስህተቶችን በመርፌ በትክክል ይከላከል እንደሆነ እፈትሻለሁ።