ትርፍ፡
- የውሸት መተማመንን ሶስት ፊቶችን የመለየት ችሎታ (የማያጸና፣ እራስን የሚያረጋግጥ፣ ተራ አባባል) እና ፀረ-መድሃኒትን የመተግበር ችሎታ።
- ሚውቴሽን ሙከራን እና ሚውቴሽን ውጤትን በመሳሪያ ወይም በእጅ ከመቶ ሽፋን የበለጠ ትክክለኛ የጥራት መለኪያ የመጠቀም ችሎታ
- በምስጋና ወጥመድ ውስጥ ሳይወድቁ AIን እንደ ቀይ ቡድን የመሞከር እና ክፍተቶችን ለመፈተሽ የማደን ችሎታ
በዚህ ሞጁል እምብርት ላይ ተደጋጋሚ ማስጠንቀቂያ አለ፡ አረንጓዴ የሚያበራ የሙከራ ፓነል የጥራት ማረጋገጫ አይደለም። ፈተናዎችዎ በራስ መተማመን ከሰጡዎት በራስ መተማመን እውነት ወይም ውሸት መሆኑን ማወቅ ያስፈልግዎታል። በአርቴፊሻል ኢንተለጀንስ (AI) ዘመን ይህ ጥያቄ ከመቼውም ጊዜ ይበልጥ ወሳኝ ነው፣ ምክንያቱም AI ፈሳሽ፣ ለስላሳ የሚመስሉ ግን ባዶ ሙከራዎችን በማምረት የተካነ ነው። የውሸት መተማመን - ፈተናዎቹ አረንጓዴ ስለሆኑ ሶፍትዌሩ ትክክል ነው ብሎ ማመን፣ በእርግጥ ፈተናዎቹ ምንም ነገር ሳያረጋግጡ - በ QA ቡድን ላይ ሊደርስ የሚችል በጣም አደገኛ ነገር ነው። ምክንያቱም ስህተቶች አለመኖራቸውን ሳይሆን ስህተቶቹን ማየት እንደማይችሉ አይደበቅም. ይህ ክፍል የሙሉውን ሞጁል የማረጋገጫ ፍልስፍና ወደ አንድ ዲሲፕሊን ያመጣል፡ ሙከራዎችዎን ይፈትኑ።
የፈተናውን ጥራት ለመለካት የወርቅ ደረጃ፡ ሚውቴሽን ሙከራ
አንድ ፈተና በትክክል ይጠብቀዋል ወይም አይጠብቅ ለመረዳት በጣም ኃይለኛው መንገድ ሚውቴሽን መፈተሽ ነው (ሚውቴሽን ፍተሻ - በምንጭ ኮድ ውስጥ ሆን ተብሎ ትናንሽ መዛባት/ሚውቴሽን የሚያመነጭ እና ፈተናዎቹ እነዚህን የተዛቡ መሆናቸውን የሚለካው ዘዴ)። አመክንዮው ቀላል ነው፡ ሆን ብለው ኮዱን ከጣሱ (+ ወደ -፣ a > ወደ >= ከሆነ፣ እውነት ወደ ውሸት) ከሆነ፣ ጥሩ የሙከራ ስብስብ ያንን ሙስና ያዝ እና ቀይ ይሆናል። ይህ ካልሆነ፣ ያ መስተጓጎል የተረፈ ሙታንት ነው - ስለዚህ የእርስዎ ሙከራዎች ያንን ባህሪ በትክክል እየጠበቁ አይደሉም።
ሚውቴሽን ነጥብ = ሚውቴሽን ተገድሏል / አጠቃላይ ሚውቴሽን። የ90% የመስመር ሽፋን ያለው ጥቅል 40% ሚውቴሽን ነጥብ ሊኖረው ይችላል። ይህ የሚያመለክተው መስመሮቹ እየሰሩ መሆናቸውን ነው ነገር ግን ባህሪው አልተረጋገጠም. ሚውቴሽን ነጥብ ከመቶኛ ሽፋን የበለጠ ሐቀኛ የጥራት መለኪያ ነው።
ጠቃሚ ምክር፡ አውቶማቲክ ሚውቴሽን መሳሪያዎች አሉ (PIT/Pitest for Java፣ Stryker for JavaScript/TypeScript፣ Stryker.NET for .NET፣ mutmut for Python)። እነዚህ በመቶዎች የሚቆጠሩ ሚውቴሽን በራስ-ሰር ያመነጫሉ እና ይፈትናሉ። መሳሪያ ከሌልዎት, መመሪያው እንኳን "የኮድ ሙከራን ሰበር" ዘዴ ወሳኝ ለሆኑ ተግባራት ጠቃሚ ነው.
የሐሰት እምነት ሦስቱ ፊቶች እና መድኃኒቱ
የውሸት መተማመን ቅጽ
ምልክት
መድሃኒት
ያለማስረጃ ይሞክሩ
ኮድ ይሰራል, ምንም የተረጋገጠ ነገር የለም
በእያንዳንዱ ፈተና ውስጥ እውነተኛ ማረጋገጫ; በሚውቴሽን ይሞክሩ
ራስን የሚያረጋግጥ ፈተና
የሚጠበቀው = ኮድ ውፅዓት
የሚጠበቀውን ዋጋ ለብቻው አስላ
ተራ ማረጋገጫ
"ቢስ አይደለም"፣ "200 ተመልሷል"
የንግድ ህግ/ትክክለኛውን ውጤት አረጋግጥ
ከፍተኛ ወሰን ስህተት
90% መስመሮች, ዝቅተኛ ጥበቃ
ሚውቴሽን ውጤቱን ይመልከቱ
ደካማ የሙከራ መቻቻል
"እንደገና ተጣብቆ, እለፍ"
የስር መንስኤ + መወሰኛ ሙከራ
AI እንደ “ቀይ ቡድን” መጠቀም
AI ሁለቱም የውሸት መተማመንን ሊያመነጭ እና እሱን ለማደን ኃይለኛ አጋር ሊሆን ይችላል። በራስዎ ሙከራዎች AIን እንደ ቀይ ቡድን ይጠቀሙ፡ “እነዚህን ፈተናዎች ያለፈ ነገር ግን ስህተት የሆነ ኮድ ፃፉ” ወይም “እነዚህን ፈተናዎች የሚያታልል መገለባበጥ ይፈልጉ። AI በፈተናዎችዎ ውስጥ ክፍተቶችን ካገኘ፣ እነዚያ ክፍተቶች እውነተኛ አደጋዎች ናቸው።
ማስጠንቀቂያ: AI አይጠይቁኝ "የእኔ ሙከራ ጥራት ጥሩ ነው?" እና መልሱን "አዎ፣ ታላቅ" እንደ ማረጋገጫ ይውሰዱት። AI ደግ የመሆን ዝንባሌ አለው። ይልቁንስ AI ን ለተጨባጭ ተግባር ፈትኑት፡ “እነዚህን ፈተናዎች የሚያልፍ ሳንካ አምርቱ። ሊያመነጭ ከቻለ፣ የእርስዎ ሙከራዎች ያንን ስህተት ማየት የተሳናቸው ናቸው።
ተመጣጣኝ ሚውቴሽን እና የውጤቱ ገደቦች
ሚውቴሽን መፈተሽ ኃይለኛ ነው፣ ግን መያዝ አለው፡ አንዳንድ ሚውቴሽን የኮዱን ባህሪ ጨርሶ አይለውጠውም። እነዚህ ተመጣጣኝ ሚውቴሽን ይባላሉ (ተመጣጣኝ ሚውቴሽን - የተበላሸ ኮድ፣ ሚውቴሽን ከመጀመሪያው ጋር ተመሳሳይ ውጤት ያስገኛል)። ለምሳሌ ፣ በጭራሽ ጥቅም ላይ ያልዋለ ተለዋዋጭ የመጀመሪያ እሴት መለወጥ ውጤቱን አይጎዳውም ፣ ምንም ዓይነት ፈተና ይህን ሊይዝ አይችልም እና የለበትም. ስለዚህ 100% ሚውቴሽን ውጤት በተግባር የማይሳካ እና ግቡ አይደለም። ተመጣጣኝ ሚውቴሽንን በእጅ ማረም ብዙ ጉልበት የሚጠይቅ ነው። ስለዚህ ሚውቴሽን ውጤቱን እንደ ፍፁም የፈተና ውጤት አታንብቡ፣ ነገር ግን እንደ ታማኝ አመልካች "ፈተናዎቼ በእርግጥ ይከላከላሉ?"
ተግባራዊ አቀራረብ ይህ ነው-በሙሉ ኮድ መሠረት ላይ የሚውቴሽን ሙከራን በተከታታይ ከማሄድ ይልቅ ከፍተኛውን አደጋ እና በጣም ውስብስብ የንግድ ህጎችን በያዙ ሞጁሎች ላይ ያሂዱ። በእነዚህ ሞጁሎች ውስጥ የተረፉትን ሚውቴሽን አንድ በአንድ መርምር። እውነተኛ ክፍተት ከሆነ ፈተና ጨምር; ተመጣጣኝ ሚውቴሽን ከሆነ በማጽደቅ ምልክት ያድርጉበት እና ይለፉ። AI በሕይወት የሚተርፍ ሚውቴሽን ተመጣጣኝ መሆን አለመሆኑን ለመገምገም የመጀመሪያ ደረጃ ምርመራ ማድረግ ይችላል ። ነገር ግን የመጨረሻው ውሳኔ የሚወሰነው ኮዱ ምን እንደሚሰራ በሚያውቁት ነው.
ጥንቃቄ፡ የሚውቴሽን ሙከራ በስሌት ውድ ነው (ሁሉም ተዛማጅ ሙከራዎች ለእያንዳንዱ ሚውቴሽን እንደገና ይካሄዳሉ)። ስለዚህ የተለመደው እና ምክንያታዊ ስልት ከእያንዳንዱ ውህደት ይልቅ ለወሳኝ ሞጁሎች እንደ ሳምንታዊ ወይም ቅድመ-መለቀቅ ጥልቅ ፍተሻ መርሐግብር ማስያዝ ነው።
ደካማ ጥያቄ / ጠንካራ ጥያቄ
ደካማ፡ "ፈተናዎቼ በቂ ናቸው?"
ጠንካራ: "ለዚህ ተግባር እና ለሙከራ ስብስብ እንደ ቀይ ቡድን ይሰሩ. (1) ሊገደሉ በሚችሉ ኮድ ውስጥ 8 ሚውቴሽን ይፍጠሩ (የኦፕሬተር መተካት, የድንበር ለውጥ, የሁኔታ ግልባጭ, የመመለሻ እሴት መተካት). እነዚህ ሁሉ ሙከራዎች ግን የንግድ ደንቡን የሚጥሱ የኮድ+ሙከራዎች፡ [ለጥፍ]"
ኃይለኛ ማበረታቻ; AI ለሙከራ ሰባሪ ፈታሽ እንጂ የውዳሴ ማሽን አይደለም ያስቀምጣል።
አራት ሊገለበጡ የሚችሉ አብነቶች
1) በእጅ ሚውቴሽን ቁጥጥር;
ለዚህ ኮድ 8 ጉልህ ሚውቴሽን (ጥቃቅን ሆን ተብሎ የተደረገ መስተጓጎል) ይፍጠሩ፡ የሂሳብ ኦፕሬተር መተካት፣ የንፅፅር ገደብ (> vs>=)፣ ምክንያታዊ ግልበጣ፣ መመለስ/ቋሚ መተካት፣ ሁኔታ መዝለል። ለእያንዳንዱ ሚውቴሽን፣ ካሉት ፈተናዎች ውስጥ የትኛው እንደሚይዘው ወይም እንደማይይዘው ተንብየ። የኮድ+ ሙከራዎች፡ [ለጥፍ]
2) የተረፈውን ሚውቴሽን መግደል፡-
የሚከተለው የሚውቴሽን ሙከራ ሪፖርት በሕይወት የተረፉ (ያልተያዙ) ሚውቴሽን ይዟል፡ [ዝርዝር/ሪፖርት]። ለእያንዳንዱ፣ ያንን ሚውቴሽን የሚገድል አነስተኛ ፈተና ይፃፉ (በዚያ መንገድ ሲሰበር ኮዱ ወደ ቀይ ይለወጣል)። ፈተናው በምን አይነት ባህሪ እንደሚያረጋግጥ አስተያየት ይስጡ።
3) ቀይ ቡድን - የደም ምርመራ;
ከሚከተሉት ፈተናዎች ውስጥ ሁሉንም የሚያልፍ ነገር ግን የሚከተለውን የንግድ ህግ የሚጥስ ኮድ መፃፍ ይችላሉ፡ [የንግድ ህግ]። ከሆነ፣ በእነዚህ ሙከራዎች ውስጥ ምን ክፍተቶች ይህንን ይፈቅዳል? ቀዳዳውን የሚዘጋውን ፈተና ጨምር። ሙከራዎች: [ለጥፍ]
4) የጥራት ምርመራ;
ይህንን የሙከራ ስብስብ ለጥራት ያረጋግጡ። ለእያንዳንዱ ፈተና ምልክት ያድርጉ: - እውነተኛ ማረጋገጫ አለ ወይንስ ፕሮፖዛል? - የሚጠበቀው እሴት ከኮድ የተገኘ ነውን? - የንግድ ደንቡን ያረጋግጣል ወይንስ ቀላል ነገር? በመጨረሻም የተገመተውን "እውነተኛ የማረጋገጫ ነጥብ" እና 3 በጣም ደካማ ፈተናዎችን ይስጡ። ሙከራዎች: [ለጥፍ]
ሶስት ጥቃቅን ጉዳዮች
ጉዳይ 1 - ሽፋን 92% ፣ ሚውቴሽን ነጥብ 38%. አንድ ቡድን በከፍተኛ ሽፋን ላይ ተመርኩዞ ነበር. የሚውቴሽን ሙከራ ከስትሮከር ጋር ሲካሄድ ውጤቱ 38% ነበር፡ አብዛኛው ሚውቴሽን ተረፈ። ይህ ፈተናዎቹ መስመሮቹን እየሰሩ አለመሆኑን እና ባህሪውን የሚያረጋግጡ መሆናቸውን የሚያሳይ ማረጋገጫ ነበር። ቡድኑ ለሙከራ ጥራት ሦስት ሳምንታት ኢንቨስት አድርጓል; ሚውቴሽን ውጤቱ ወደ 81% ጨምሯል፣ እና በሚቀጥለው ልቀት ሁለት ትክክለኛ ስሌት ስህተቶች በእነዚህ የተጠናከረ ሙከራዎች ተይዘዋል።
ጉዳይ 2 - AI ፈተናውን አታልሏል. በ “ቀይ ቡድን” አብነት አንድ ኤክስፐርት AI ን ነባር ፈተናዎችን ያለፈ ነገር ግን የቅናሽ ደንቡን የጣሰ ኮድ ጠየቀ። AI ሁልጊዜ የዜሮ ቅናሽ የሚመልስ ኮድ ጽፏል - እና ምንም ሙከራዎች ትክክለኛውን የቅናሽ ዋጋ ስላላረጋገጡ ሁሉም ሙከራዎች አረንጓዴ ሆነው ቆይተዋል። ክፍተት ታይቷል፣ እውነተኛ ማረጋገጫዎች ተጨምረዋል።
ጉዳይ 3 - የምስጋና ወጥመድ. አንድ ጁኒየር ሞካሪ AIን "ፈተናዎቼ ጥሩ ናቸው?" እና "በጣም ሁሉን አቀፍ" የሚለውን መልስ በመስማቴ እፎይታ ተሰማኝ. ከፍተኛ የሥራ ባልደረባው "የሙከራ ጥራት ኦዲት" አብነት በመጠቀም ተመሳሳይ ፈተናዎች ኦዲት አድርገዋል; ከ 20 ሙከራዎች ውስጥ 12 ቱ ያጌጡ ነበሩ (ያለ አስርት ወይም ቆሻሻ)። ትክክለኛው ጥያቄ ትክክለኛውን መልስ አምጥቷል.
የተለመዱ ስህተቶች
- የጥራት ወሰን ስህተት። በከፍተኛ የረድፍ ሽፋን ላይ መተማመን እና ሚውቴሽን ውጤቱን ጨርሶ አለመመልከት።
- የ AI ምስጋናን ማመን። "ፈተናዎችህ ጥሩ ናቸው?" እና አወንታዊውን መልስ እንደ ዋስትና ግምት ውስጥ ማስገባት.
- የሚጠበቀውን እሴት ከኮድ ማግኘት። የተሳሳተ ኮድ የሚያረጋግጡ እራስን የሚያረጋግጡ ሙከራዎች።
- በጥቃቅን አስተያየቶች ይርካ። ትክክለኛውን ህግ የማያፀድቁ ቼኮች፣ ለምሳሌ "ከስራ ውጪ"፣ "200 ተመልሷል"።
- የተረፉትን ሚውቴሽን ችላ ማለት። በሚውቴሽን ዘገባ ያልተያዘውን ችላ ማለት።
- ወሳኝ ኮድን በእጅ ለመቀየር እንኳን አለመሞከር። መሳሪያው የማይገኝ ከሆነ የ"ኮዱን መስበር እና ሙከራ" ደረጃን መዝለል።
በማጠቃለያው
Pseudo-trust ፈተናዎቹ አረንጓዴ ስለሆኑ ሶፍትዌር ትክክል ነው ብሎ ማመን ነው። ፈተናዎቹ ምንም ነገር ላያረጋግጡ ይችላሉ. ይህንን ለመለካት የወርቅ ደረጃው ሚውቴሽን ሙከራ ነው፡ ሆን ብሎ ኮዱን መስበር እና ፈተናዎቹ መያዛቸውን መለካት። ሚውቴሽን ነጥብ ከመቶኛ ሽፋን የበለጠ ሐቀኛ የጥራት መለኪያ ነው። AI ሁለቱም የውሸት መተማመንን ያመነጫሉ እና እሱን ለማደን ኃይለኛ ቀይ ቡድን ይሆናሉ - “እነዚህን ፈተናዎች የሚያልፍ ሳንካ ያመርቱ” ብለው ይጠይቁ። ሙከራዎችዎን ይሞክሩ፡ እውነተኛ ማረጋገጫ፣ ነጻ የሚጠበቀው እሴት፣ የንግድ ህግ ማረጋገጫ እና የተገደለ ሚውቴሽን።
የመተግበሪያ ተግባር
የንግድ ህግን እና ፈተናዎቹን የያዘ ተግባር ከእራስዎ ፕሮጀክት ያስመጡ። ከተቻለ የሚውቴሽን መሳሪያ (Stryker/Pitest/mutmut) ያሂዱ እና የሚውቴሽን ውጤቱን ይለኩ። መሳሪያ ከሌለ በ"በእጅ ሚውቴሽን ቁጥጥር" አብነት ቢያንስ 8 ሚውቴሽን ያመነጫሉ እና በእጅ ይሞክሩት። ለእያንዳንዱ የተረፈ ሚውቴሽን፣ በ"ገዳይ ሚውቴሽን" አብነት አዲስ ፈተና ይፃፉ። በመጨረሻም፣ በ«ቀይ ቡድን» ስርዓተ-ጥለት፣ AI ፈተናዎችዎን የሚያሞኝ ኮድ ማውጣት ይችል እንደሆነ ይመልከቱ። የሚውቴሽን መነሻ እና መድረሻ ነጥብዎን (ወይም የተያዘ/ጠቅላላ ሚውቴሽን መጠን) ሪፖርት ያድርጉ።
የማረጋገጫ ዝርዝር
- [ ] የፈተናውን ጥራት የገመገምኩት በሽፋን ሳይሆን በሚውቴሽን ነው።
- [ ] ወሳኝ ኮድ ለማግኘት ሚውቴሽን ሙከራን (በመሳሪያም ሆነ በእጅ) ሮጫለሁ።
- [ ] ለእያንዳንዱ በሕይወት የተረፈ ሚውቴሽን አዲስ ፈተናዎችን ጻፍኩ።
- [] AI እንደ ቀይ ቡድን ተጠቀምኩኝ እና በፈተናዎቼ ውስጥ ክፍተቶችን ፈለግኩ።
- [ ] የ AIን "ፈተናዎችህ ጥሩ ናቸው" የሚለውን ውዳሴ እንደ ማረጋገጫ አልወሰድኩትም።
- [ ] እያንዳንዱ ፈተና ትክክለኛውን ማረጋገጫ፣ ነጻ የሚጠበቀው እሴት እና የንግድ ህግ እንደሚያረጋግጥ አረጋግጣለሁ።