ክፍል 6 / 11

የፈተና ትውልድ በአርቴፊሻል ኢንተለጀንስ፡ ክፍል፣ በይነገጽ እና አውቶሜሽን ሙከራዎች

ትርፍ፡

  • በሙከራው ፒራሚድ እና የሽፋን ገደብ እና የስህተት ሁኔታዎች እንዲሁም አስደሳች ሁኔታዎችን መሠረት በማድረግ አሃድ ፣ ውህደት እና UI ሙከራዎችን በሰው ሰራሽ የማሰብ ችሎታ የማምረት ችሎታ።
  • እያንዳንዱ ፈተና የተፈጠረ ባህሪን የሚያረጋግጥ መሆኑን በማጣራት ባዶ/የማይጠቅሙ ፈተናዎችን እና እብጠትን ማስወገድ መቻል
  • ፈተናው ስህተቱን መያዙን ማረጋገጥ እና ቁጥሩ ምን ማድረግ እንዳለበት ለ AI በመንገር ስህተቱን እንዳያስተካክል ይከላከላል

ኮድ መጻፍ ሥራው ግማሽ ነው; ኮድ በትክክል እንደሚሰራ ማረጋገጥ ሌላኛው ግማሽ ነው. የሞባይል መተግበሪያዎች በመቶዎች የሚቆጠሩ የተለያዩ መሳሪያዎች፣ የስክሪን መጠኖች፣ የስርዓተ ክወና ስሪቶች እና የተጠቃሚ ባህሪያት ያጋጥማሉ። እነዚህን ሁሉ በእጅ መሞከር የማይቻል ነው; ለዚህም ነው አውቶሜትድ ሙከራ (የኮድ መፈተሻ ኮድ — ያለ ሰው ጠቅታ የሚሰራ) የሞባይል ጥራት የጀርባ አጥንት የሆነው። AI ፈተናዎችን በመጻፍ በሚያስደንቅ ሁኔታ ቀልጣፋ ነው ምክንያቱም ሙከራዎችን መጻፍ የሚወደው ዓይነት የስርዓተ-ጥለት ስራ ነው፡ ለተወሰኑ ግብዓቶች የተለየ ባህሪን ማረጋገጥ። በዚህ ክፍል ውስጥ የዩኒት ፍተሻን፣ የበይነገጽ ፍተሻን እና አውቶማቲክን ከ AI ጋር እንዴት ማፋጠን እንደምንችል እንማራለን።

ፒራሚድ መሞከር-ምን መሞከር እና ምን ያህል

ጤናማ የሙከራ ስልት ከፒራሚድ ጋር ይመሳሰላል። መሰረቱ ብዙ ቁጥር ያላቸውን የንጥል ሙከራዎችን ያካትታል (አንድን ተግባር ወይም ክፍል ለብቻው የሚፈትሽ ፈጣን ሙከራ); እነሱ ፈጣን እና ርካሽ ናቸው. በመሃሉ ላይ ያነሰ የመዋሃድ ሙከራ (በርካታ ክፍሎች እንዴት እንደሚሰሩ መሞከር) ነው. ከላይ አነስተኛ የዩአይአይ/ከጫፍ እስከ ጫፍ ፍተሻ አለ (ሙከራው ተጠቃሚው እንደሚያደርገው ስክሪኑን ጠቅ በማድረግ ነው)። እነሱ ተጨባጭ ናቸው ነገር ግን ዘገምተኛ እና ደካማ ናቸው. AI በእያንዳንዱ ሽፋን ላይ ያግዛል, ነገር ግን በጣም ዋጋ ያለው በመሠረቱ ላይ ነው: የንግድ ሎጂክ አሃድ ሙከራዎችን በፍጥነት ማምረት.

የሙከራ ዓይነት

ወሰን

ፍጥነት

የ AI ቅልጥፍና

ክፍል ሙከራ

ነጠላ ተግባር / ክፍል

በጣም ፈጣን

በጣም ከፍተኛ

ውህደት

interlayer

መካከለኛ

ከፍተኛ

UI / ከጫፍ እስከ ጫፍ

ሁሉም የስክሪን ዥረት

ዘገምተኛ

መካከለኛ (ደካማ)

ጠቃሚ ምክር: AI "ለዚህ ተግባር ሙከራዎችን እንዲያመነጭ" ሲነግሩት, የጠርዝ ጉዳዮችን በግልፅ ይጠይቁ: ባዶ ግቤት, ባዶ, አሉታዊ ቁጥር, በጣም ትልቅ እሴት, የአውታረ መረብ ስህተት. AI በቀላሉ ደስተኛ መንገድን ይፈጥራል; እውነተኛዎቹ ስህተቶች በድንበር ውስጥ ተደብቀዋል እና እዚያ ካልፈለጋቸው ይዝለሉ.

ከ AI ጋር የመፃፍ ሙከራዎች ደረጃዎች

  1. ለመፈተሽ ባህሪን ይግለጹ. "ይህ ተግባር ይህንን ውጤት ለዚህ ግቤት መስጠት አለበት."
  2. ማዕቀፉን ይግለጹ. JUnit + MockK በአንድሮይድ ላይ፣ XCTest በ iOS፣ Espresso (Android) ወይም XCUITest (iOS) ለUI።
  3. ገደብ ግዛቶችን ይጠይቁ። መልካም ሁኔታ + ስህተት + መግቻ ነጥቦች።
  4. አስመሳይ ነገሮችን ያስተዳድሩ። እንደ ኔትወርክ እና ዳታቤዝ ያሉ ውጫዊ ጥገኞች ለሙከራ ተመስለዋል።
  5. ፈተናውን ያሂዱ እና ያረጋግጡ. ፈተናው ያልፋል፣ እውነተኛ ትርጉም ያለው ነገር ያረጋግጣል?

አምስተኛው ደረጃ ወሳኝ ነው. AI አንዳንድ ጊዜ "ሁልጊዜ የሚያልፍ" የማይጠቅሙ ሙከራዎችን ይፈጥራል; ለምሳሌ ምንም ነገር የማያረጋግጥ ወይም የራሱን የውሸት መረጃ የማያጣራ ሙከራ። የማለፊያ ፈተና እና ዋጋ ያለው ፈተና የተለያዩ ነገሮች ናቸው።

ይጠንቀቁ፡ AI ማምረት ስለሚችል ብቻ ፈተናው ትክክል ነው ማለት አይደለም። አንዳንድ ጊዜ AI የኮዱ የአሁኑን (ምናልባት የተሳሳተ) ባህሪን እንደ “ትክክል” ይቀበላል እና በዚህ መሠረት ሙከራዎችን ይጽፋል። እንዲህ ዓይነቱ ሙከራ ስህተቱን ከመያዝ ይልቅ ያስተካክላል. ፈተናው የሚጠብቀውን ይወስናሉ; ኮዱ ምን እንደሚሰራ ሳይሆን ምን ማድረግ እንዳለበት ለ AI ይንገሩ።

የሽፋን መለኪያን እና ስህተትን ፈትሽ

የሙከራ ሽፋን (የኮድ መቶኛ በሙከራዎች ነው የሚሰራው) ጠቃሚ ነገር ግን አሳሳች መለኪያ ነው። 90% ሽፋን 90% ኮድ መፈጸሙን ያመለክታል; ነገር ግን እነዚያ መስመሮች በትክክል እየሰሩ መሆናቸው አልተረጋገጠም። መስመርን የሚያሄድ እና ውጤቱን የማያጣራ ፈተና ወሰንን ያበዛል ነገር ግን ደህንነትን አይሰጥም. ግቡ ከፍተኛ ቁጥሮች ሳይሆን ትርጉም ያለው ማረጋገጫ ነው. በ AI በፍጥነት ማሳደግ ይችላሉ፣ ነገር ግን እያንዳንዱ ሙከራ ባህሪን መሞከሩን ያረጋግጡ።

ሶስት ጥቃቅን ጉዳዮች

ጉዳይ 1 - የድንበር ሁኔታ ተያዘ. AI በባንክ አፕሊኬሽን ውስጥ ለገንዘብ ማስተላለፍ ተግባር ፈተናዎች ተጠይቀዋል እና በተለይም "አሉታዊ መጠን" እና "ከሚዛን በላይ" ሁኔታዎች ተጨምረዋል። ፈተናው ዝውውሩ በአሉታዊ መጠን እንዳልታገደ አሳይቷል; ይህ በምርት ውስጥ ዋነኛው የደህንነት ተጋላጭነት ነው። የአንድ መስመር መቆጣጠሪያ በማከል ተዘግቷል። ትምህርት፡ የወሰን ፈተናዎች በጣም ዋጋ ያላቸው ፈተናዎች ናቸው።

ጉዳይ 2 - የውሸት ሙከራ. አንድ ቡድን በአይአይ በተሰራ 40 አሃድ ሙከራዎች ሽፋኑን ወደ 85% በማድረሱ እፎይታ አግኝቷል። በምርመራ ወቅት፣ አብዛኞቹ ፈተናዎች ምንም አይነት ውጤት እንዳላረጋገጡ ታይቷል፣ ተግባሩን ጠርተው አስርትትሩ (እውነት) ብለው ጽፈዋል። ሽፋን ከፍተኛ ነበር ግን ጥበቃው ዜሮ ነበር። ፈተናዎች እንደገና ተስተካክለው በእውነተኛ ማረጋገጫዎች ተጽፈዋል። ትምህርት: የሽፋን ቁጥሮች ሊዋሹ ይችላሉ.

ጉዳይ 3 — የUI ሙከራ ተፋጠነ። አንድ የኢ-ኮሜርስ ቡድን በ 20 ደቂቃዎች ውስጥ ከ AI ጋር የመደመር-ወደ-ጋሪ ፍሰት XCUITest ስክሪፕት ጽፏል; በእጅ ቢጻፍ ግማሽ ቀን ይወስዳል። AI የሚገመተው የስክሪን አካል መለያዎች; ቡድኑ ከእውነተኛው ኮድ ጋር በማመሳሰል አስተካክሏቸው። የረቂቅ ፍጥነት እውነት ነው፣ ነገር ግን መለያ ማረጋገጫ የሰው ስራ ነው።

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

ደካማ ጥያቄ፡ "ለዚህ ተግባር ፈተና ይፃፉ።"

ኃይለኛ ጥያቄ: "ለዚህ Kotlin ተግባር በ JUnit5 + MockK የዩኒት ሙከራዎችን ያቅርቡ. ተግባር: የገንዘብ ልውውጥ (መጠን, ምንጭ, ዒላማ). ለመፈተሽ ባህሪያት (ኮዱ ምን ማድረግ አለበት): - ትክክለኛ ማስተላለፍ ስኬታማ መሆን አለበት - አሉታዊ ወይም ዜሮ መጠን ውድቅ መደረግ አለበት - ከሚዛኑ መጠን የሚበልጥ መጠን ውድቅ መደረግ አለበት- የአውታረ መረብ ስህተት ተገቢ የሆነ ልዩ ነገር መጣል አለበት, እያንዳንዱ ሙከራ አንድ ነገር ብቻ መፃፍ አለበት, ስሞቻቸው አንድ ነገር ብቻ መሆን የለበትም, ውጫዊ መግለጫው አንድ ነገር ብቻ መሆን አለበት. ማረጋገጫ."

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

የክፍል ሙከራ አብነት፡ "ለዚህ ተግባር [JUnit/XCTest] አሃድ ሙከራዎችን ይፍጠሩ [ቋንቋ]። የሚጠበቀው ባህሪ፡ [ምን ማድረግ እንዳለበት] ያካትቱ፡ ደስተኛ ሁኔታ፣ ባዶ ግብአት፣ መግቻ ነጥብ፣ የስህተት መያዣ። እያንዳንዱ ሙከራ ነጠላ ባህሪን ያረጋግጡ፣ ትርጉም ያለው ማረጋገጫ ይጠቀሙ፣ ይሳለቁበት። [ኮድ]"

የዩአይ ሙከራ አብነት፡ "የሚቀጥለውን ፍሰት በ[ኤስፕሬሶ/XCUITest] የዩአይአይ ሙከራ ይፃፉ፡ [የተጠቃሚ ፍሰት ደረጃ በደረጃ። የተደራሽነት መታወቂያ ያላቸውን የስክሪን ኤለመንቶችን ይምረጡ፣ከጽሁፍ ይልቅ መታወቂያ ይጠቀሙ። የጥበቃ ስልት ያክሉ። ኤለመንት መታወቂያዎችን ከትክክለኛው ኮድ ጋር እንዳዛመድ አስታውሰኝ።"

የፈተና ኦዲት አብነት፡"እነዚህን ፈተናዎች ፈትሽ፡1) በእርግጥ ውጤቱን/ባህሪን አረጋግጠዋል ወይንስ ባዶ ናቸው?2) ገደብ ጉዳዮችን ይሸፍናሉ?3) ኮዱን ያስተካክላሉ ወይንስ ትክክለኛ ባህሪን ይጠብቃሉ? ጠቁመው ደካማ ፈተናዎችን ያጠናክሩ። [ሙከራዎች]"

የሽፋን ማመቻቸት አብነት፡ "ያልተሞከሩ የዚህ ክፍል ክፍሎችን ይለዩ እና ትርጉም ያላቸው ሙከራዎችን ይጠቁሙ። የሽፋን ብዛት ብቻ ሳይሆን ከእውነተኛ አደጋ ጋር መንገዶችን ቅድሚያ ይስጡ። [ኮድ]"

የተለመዱ ስህተቶች

  • የደስታውን ሁኔታ መሞከር ብቻ ነው። ስህተቶች በገደብ ግዛቶች ውስጥ ይቀመጣሉ; በግልጽ ጠይቋቸው።
  • ባዶ/የማይጠቅም ፈተና መቀበል። የ assertTrue(የእውነት) አይነት ሙከራዎች ወሰንን ከፍ ያደርጋሉ እና ምንም ጥበቃ አይሰጡም።
  • ኮዱ ምን እየሰራ እንደሆነ AI ን ማረጋገጥ። መፈተሽ ኮዱ ምን ማድረግ እንዳለበት መጠበቅ አለበት; አለበለዚያ ስህተቱን ያስተካክላል.
  • ለዓላማው የወሰን ቁጥርን በመሳሳት ላይ። 90% ሽፋን ማለት 90% ትክክለኛነት ማለት አይደለም.
  • በUI ሙከራ ውስጥ ከጽሑፍ ጋር ማገናኘት። ጽሑፉ ሲቀየር ፈተናው ተሰብሯል; የተረጋጋ መለያ (መታወቂያ) ይጠቀሙ።
  • መሳለቂያዎችን በስህተት ማዋቀር። ትክክለኛውን አገልግሎት የሚጠራው "የዩኒት ሙከራ" ቀርፋፋ እና ተሰባሪ ይሆናል።

በማጠቃለያው

መሞከር የሞባይል ጥራት የጀርባ አጥንት ነው, እና AI በዚህ አካባቢ, በተለይም በክፍል ሙከራ ውስጥ በጣም ቀልጣፋ ነው. የሙከራ ፒራሚዱን ይከተሉ፡ ብዙ ክፍሎች፣ መካከለኛ ውህደት፣ ትንሽ የዩአይ ሙከራ። ለደስታው ሁኔታ AI ን በግልፅ ይጠይቁ እንዲሁም ጉዳዮችን እና የስህተት መንገዶችን ይገድቡ። እያንዳንዱ የተፈጠረ ሙከራ ባህሪን የሚያረጋግጥ መሆኑን ያረጋግጡ; ባዶ ሙከራዎች እና የተጋነነ ሽፋን አሳሳች ናቸው። ከሁሉም በላይ ኮዱ ምን ማድረግ እንዳለበት ሳይሆን ምን ማድረግ እንዳለበት ለ AI ይንገሩ, ስለዚህ ፈተናው ስህተትን ይይዛል, አያስተካክለውም.

የመተግበሪያ ተግባር

ለንግድ ስራ አመክንዮ ተግባር (ለምሳሌ የቅናሽ ስሌት ወይም የቅፅ ማረጋገጫ) የ"ዩኒት የሙከራ አብነት"ን በመጠቀም ከ AI ሙከራዎችን ይጠይቁ እና ገደብ ጉዳዮችን ( ባዶ፣ አሉታዊ፣ በጣም ትልቅ) በግልፅ ይግለጹ። የተፈጠሩትን ፈተናዎች ያካሂዱ፣ ከዚያ ተመሳሳይ ፈተናዎች በ"የሙከራ ኦዲት አብነት" ኦዲት ያድርጉ። ቢያንስ አንድ ደካማ ሙከራን ያግኙ፣ ያጠናክሩት እና ፈተናዎቹ የተግባሩ ትክክለኛ ስህተት መያዛቸውን ይፈትሹ (ትንሽ ሳንካ በመጨመር)።

የማረጋገጫ ዝርዝር

  • [ ] ለሙከራ ፒራሚድ (ቀዳሚ ክፍል) ተገቢውን ንብርብር መርጫለሁ።
  • [] ከአስደሳች ሁኔታው በተጨማሪ ገደብ እና የስህተት ጉዳዮችን እፈልግ ነበር።
  • [ ] እያንዳንዱ ፈተና ትርጉም ያለው ማረጋገጫ እንደያዘ አረጋግጣለሁ።
  • [ ] ኮዱ ምን እንደሚሰራ ሳይሆን ምን ማድረግ እንዳለበት ለ AI ነገርኩት
  • [] እኔ በትክክለኛ የአደጋ ጎዳናዎች ላይ አተኩሬያለሁ, የሽፋን ብዛት ሳይሆን
  • [ ] በዩአይ ፈተናዎች ውስጥ የተረጋጋ ለዪን ተጠቀምኩ፣ ከጽሑፍ ጋር አልያያዝኩም