युनिट्स
1. मोबाइल डेव्हलपमेंटमध्ये AI चा परिचय: भूमिका, सीमा, प्रमाणीकरण आणि सुरक्षा 2. कृत्रिम बुद्धिमत्तेसह मोबाइल कोड निर्मिती: कोटलिन, स्विफ्ट आणि क्रॉस-प्लॅटफॉर्म विकास 3. आर्टिफिशियल इंटेलिजन्ससह इंटरफेस डिझाइन आणि UI कोड जनरेशन 4. ऑन-डिव्हाइस AI: कोर ML, TensorFlow Lite आणि ML किट 5. Cloud AI आणि LLM API एकत्रीकरण: चॅट, फ्लो आणि सुरक्षा 6. कृत्रिम बुद्धिमत्तेसह चाचणी निर्मिती: युनिट, इंटरफेस आणि ऑटोमेशन चाचण्या 7. कृत्रिम बुद्धिमत्तेसह डीबगिंग आणि क्रॅश विश्लेषण 8. कार्यप्रदर्शन आणि बॅटरी ऑप्टिमायझेशन: कृत्रिम बुद्धिमत्तेसह जलद आणि कार्यक्षम अनुप्रयोग 9. गोपनीयता, परवानग्या आणि सुरक्षित वापर 10. स्टोअर रिलीझ: ॲप स्टोअर, Google Play आणि AI सुसंगतता 11. एंड-टू-एंड प्रोजेक्ट, आर्टिफिशियल इंटेलिजन्सचा जबाबदार वापर आणि व्यवसायात रोडमॅप
युनिट 6 / 11

कृत्रिम बुद्धिमत्तेसह चाचणी निर्मिती: युनिट, इंटरफेस आणि ऑटोमेशन चाचण्या

नफा:

  • चाचणी पिरॅमिड आणि कव्हर मर्यादा आणि त्रुटी परिस्थिती तसेच आनंदी परिस्थितीनुसार कृत्रिम बुद्धिमत्तेसह युनिट, एकत्रीकरण आणि UI चाचण्या तयार करण्याची क्षमता
  • रिकाम्या/निरुपयोगी चाचण्या आणि फुगलेले कव्हरेज व्युत्पन्न केलेली प्रत्येक चाचणी प्रत्यक्षात वर्तन प्रमाणित करते हे तपासून काढण्याची क्षमता
  • चाचणीने बग पकडला आहे याची खात्री करणे आणि कोडने काय करावे हे AI ला सांगून दोष निराकरण करण्यापासून प्रतिबंधित करते

कोड लिहिणे हे अर्धे काम आहे; कोड योग्यरित्या कार्य करते हे सिद्ध करणे हा दुसरा अर्धा भाग आहे. मोबाइल ॲप्समध्ये शेकडो भिन्न डिव्हाइसेस, स्क्रीन आकार, ऑपरेटिंग सिस्टम आवृत्त्या आणि वापरकर्ता वर्तन आढळतात. या सर्वांची मॅन्युअली चाचणी करणे अशक्य आहे; म्हणूनच स्वयंचलित चाचणी (कोड चाचणी कोड — मानवी क्लिकशिवाय चालणारी चाचणी) मोबाइल गुणवत्तेचा कणा आहे. AI चाचण्या लिहिण्यात आश्चर्यकारकपणे कार्यक्षम आहे कारण चाचण्या लिहिणे हे त्याच्या आवडीचे काम आहे: विशिष्ट इनपुटसाठी विशिष्ट वर्तन प्रमाणित करणे. या युनिटमध्ये, आम्ही एआय सह युनिट चाचणी, इंटरफेस चाचणी आणि ऑटोमेशनला गती कशी द्यावी हे शिकू, परंतु मानवी डोळ्यांद्वारे चाचणीची गुणवत्ता कशी सुनिश्चित करावी.

चाचणी पिरॅमिड: काय चाचणी करावी आणि किती

निरोगी चाचणी धोरण पिरॅमिडसारखे दिसते. बेसमध्ये मोठ्या संख्येने युनिट चाचण्यांचा समावेश आहे (त्वरित चाचणी जे एकल फंक्शन किंवा वर्ग अलगावमध्ये तपासते); ते जलद आणि स्वस्त आहेत. मध्यभागी कमी एकत्रीकरण चाचणी आहे (एकाधिक भाग एकत्र कसे कार्य करतात याची चाचणी करणे). शीर्षस्थानी किमान UI/एंड-टू-एंड चाचणी आहे (वापरकर्त्याप्रमाणे स्क्रीनवर क्लिक करून चाचणी केली जाते); ते वास्तववादी आहेत परंतु हळू आणि नाजूक आहेत. एआय प्रत्येक स्तरावर मदत करते, परंतु सर्वात मूल्य पायावर आहे: व्यवसाय तर्कशास्त्राच्या युनिट चाचण्या त्वरीत तयार करणे.

चाचणी प्रकार

व्याप्ती

गती

AI कार्यक्षमता

युनिट चाचणी

सिंगल फंक्शन/क्लास

खूप जलद

खूप उच्च

एकीकरण

इंटरलेअर

मध्यम

उच्च

UI / एंड-टू-एंड

सर्व स्क्रीन प्रवाह

मंद

मध्यम (नाजूक)

टीप: AI ला "या फंक्शनसाठी चाचण्या व्युत्पन्न करा" असे सांगत असताना, स्पष्टपणे एज केसेससाठी विचारा: रिक्त इनपुट, शून्य, ऋण संख्या, खूप मोठे मूल्य, नेटवर्क त्रुटी. एआय सहज आनंदी मार्ग तयार करते; खऱ्या चुका बॉर्डरमध्ये लपतात आणि नको असल्यास बाहेर उडी मारतात.

AI सह चाचण्या लिहिण्याचे टप्पे

  1. चाचणी करण्यासाठी वर्तन परिभाषित करा. "या फंक्शनने या इनपुटला हे आउटपुट दिले पाहिजे."
  2. फ्रेमवर्क निर्दिष्ट करा. Android वर JUnit + MockK, iOS वर XCTest, Espresso (Android) किंवा UI साठी XCUITest (iOS).
  3. मर्यादा राज्यांसाठी विचारा. आनंदी परिस्थिती + त्रुटी + ब्रेकपॉइंट्स.
  4. नकली वस्तू व्यवस्थापित करा. बाह्य अवलंबित्व जसे की नेटवर्क आणि डेटाबेस चाचणीसाठी अनुकरण केले जातात (वास्तविक सेवेऐवजी मॉक — नियंत्रित मॉक).
  5. चाचणी चालवा आणि सत्यापित करा. चाचणी उत्तीर्ण होते का, ते खरोखर अर्थपूर्ण कशाची पुष्टी करते?

पाचवी पायरी गंभीर आहे. एआय कधीकधी निरुपयोगी चाचण्या तयार करते ज्या “नेहमी उत्तीर्ण” होतात; उदाहरणार्थ, एक चाचणी जी काहीही सत्यापित करत नाही किंवा स्वतःचा बनावट डेटा तपासत नाही. उत्तीर्ण चाचणी आणि मौल्यवान चाचणी या वेगळ्या गोष्टी आहेत.

खबरदारी: एआय तयार करू शकते याचा अर्थ चाचणी योग्य आहे असे नाही. कधीकधी एआय कोडचे वर्तमान (कदाचित दोषपूर्ण) वर्तन "योग्य" म्हणून स्वीकारते आणि त्यानुसार चाचण्या लिहिते. अशा चाचणीमुळे बग ​​पकडण्याऐवजी त्याचे निराकरण होते. चाचणीला काय अपेक्षित आहे ते तुम्ही ठरवता; एआयला सांगा की त्याने काय करावे, कोड काय करतो ते सांगा.

चाचणी कव्हरेज मोजमाप आणि खोटेपणा

चाचणी कव्हरेज (चाचण्यांद्वारे कोडची किती टक्केवारी चालवली जाते) हे उपयुक्त परंतु दिशाभूल करणारे मेट्रिक आहे. 90% कव्हरेज सूचित करते की 90% कोड कार्यान्वित झाला आहे; परंतु त्या ओळी योग्यरितीने कार्यरत आहेत याची पडताळणी झालेली नाही. एक चाचणी जी रेषा चालवते आणि परिणाम तपासत नाही ती व्याप्ती वाढवते परंतु सुरक्षा प्रदान करत नाही. ध्येय उच्च संख्या नाही, परंतु अर्थपूर्ण प्रमाणीकरण आहे. तुम्ही AI सह त्वरीत स्केल करू शकता, परंतु प्रत्येक चाचणी प्रत्यक्षात वर्तनाची चाचणी करते याची खात्री करा.

तीन लहान प्रकरणे

प्रकरण 1 - सीमा परिस्थिती पकडली. AI ला बँकिंग ऍप्लिकेशनमध्ये मनी ट्रान्सफर फंक्शनसाठी चाचण्यांसाठी विचारण्यात आले आणि विशेषतः "ऋणात्मक रक्कम" आणि "शिल्लक पेक्षा जास्त" परिस्थिती जोडल्या गेल्या. चाचणीत असे दिसून आले की हस्तांतरणास नकारात्मक रकमेसह अवरोधित केले गेले नाही; उत्पादनातील ही एक मोठी सुरक्षा भेद्यता असेल. एक ओळ नियंत्रण जोडून बंद केले. धडा: सीमा चाचण्या या सर्वात मौल्यवान चाचण्या आहेत.

केस 2 - बनावट चाचणी. AI द्वारे उत्पादित केलेल्या 40 युनिट चाचण्यांसह कव्हरेज 85% पर्यंत वाढवून एका टीमला दिलासा मिळाला. तपासणी दरम्यान, असे दिसून आले की बहुतेक चाचण्या प्रत्यक्षात कोणत्याही आउटपुटची पडताळणी करत नाहीत, त्यांनी फंक्शनला कॉल केला आणि assertTrue(true) लिहिले. कव्हरेज जास्त होते पण संरक्षण शून्य होते. चाचण्या पुनर्संचयित केल्या गेल्या आणि वास्तविक प्रमाणीकरणासह पुन्हा लिहिल्या गेल्या. धडा: कव्हरेज क्रमांक खोटे बोलू शकतात.

केस 3 - UI चाचणी प्रवेगक. एका ई-कॉमर्स टीमने 20 मिनिटांत AI सह ॲड-टू-कार्ट फ्लोची XCUITest स्क्रिप्ट लिहिली; हाताने लिहिले असते तर अर्धा दिवस लागतो. AI अंदाजे स्क्रीन घटक अभिज्ञापक; संघाने त्यांना खऱ्या कोडशी जुळवून निश्चित केले. मसुदा गती वास्तविक आहे, परंतु अभिज्ञापक सत्यापन हे मानवी कार्य आहे.

कमकुवत प्रॉम्प्ट / मजबूत प्रॉम्प्ट

कमकुवत प्रॉम्प्ट: "या कार्यासाठी चाचणी लिहा."

शक्तिशाली प्रॉम्प्ट: "JUnit5 + MockK सह या Kotlin फंक्शनसाठी युनिट चाचण्या तयार करा. फंक्शन: पैसे हस्तांतरण (रक्कम, स्त्रोत, लक्ष्य). चाचणीसाठी वर्तन (कोड काय करावे):- वैध हस्तांतरण यशस्वी होणे आवश्यक आहे- नकारात्मक किंवा शून्य रक्कम नाकारली जाणे आवश्यक आहे- शिल्लक पेक्षा जास्त रक्कम नाकारली जाणे आवश्यक आहे, नेटवर्क चाचणी वगळता फक्त एकच एरर फेकणे आवश्यक आहे. वर्णनात्मक असावे, बाह्य सेवेची खिल्ली उडवू नका.

कॉपी करण्यायोग्य टेम्पलेट्स

युनिट चाचणी टेम्पलेट: "या कार्यासाठी [भाषा] साठी [JUnit/XCTest] युनिट चाचण्या व्युत्पन्न करा. अपेक्षित वर्तन: [काय करावे]. समाविष्ट करा: आनंदी परिस्थिती, शून्य इनपुट, ब्रेकपॉइंट्स, त्रुटी केस. प्रत्येक चाचणीला एकच वर्तन सत्यापित करू द्या; अर्थपूर्ण प्रतिपादन वापरा; मॉक. [कोड]"

UI चाचणी टेम्पलेट: "[Espresso/XCUITest] सह खालील प्रवाहाची UI चाचणी लिहा: [वापरकर्ता प्रवाह चरण-दर-चरण]. प्रवेशयोग्यता आयडीसह स्क्रीन घटक निवडा, मजकुराऐवजी आयडी वापरा. प्रतीक्षा धोरण जोडा. घटक आयडी वास्तविक कोडशी जुळवण्याची मला आठवण करून द्या."

चाचणी ऑडिट टेम्पलेट:"या चाचण्या तपासा: 1) ते खरोखर आउटपुट/वर्तणूक सत्यापित करतात किंवा ते शून्य आहेत? 2) ते मर्यादा प्रकरणे कव्हर करतात? 3) ते दोष निराकरण करतात किंवा योग्य वर्तनाची अपेक्षा करतात? कमकुवत चाचण्या ध्वजांकित करा आणि मजबूत करा. [चाचण्या]"

कव्हरेज ऑप्टिमायझेशन टेम्पलेट: "या वर्गाचे न तपासलेले भाग ओळखा आणि अर्थपूर्ण चाचण्या सुचवा. केवळ कव्हरेजच्या संख्येलाच नव्हे तर वास्तविक जोखीम असलेल्या मार्गांना प्राधान्य द्या. [कोड]"

सामान्य चुका

  • फक्त आनंदी परिस्थितीची चाचणी घेत आहे. त्रुटी मर्यादेच्या स्थितीत संग्रहित केल्या जातात; त्यांच्यासाठी खुलेपणाने विचारा.
  • रिक्त/निरुपयोगी चाचणी स्वीकारणे. assertTrue(true) प्रकाराच्या चाचण्या व्याप्ती वाढवतात आणि संरक्षण देत नाहीत.
  • AI असल्याने कोड काय करत आहे याची पडताळणी करा. चाचणीने कोड काय करावे अशी अपेक्षा केली पाहिजे; अन्यथा ते बगचे निराकरण करते.
  • हेतूसाठी स्कोप क्रमांक चुकणे. 90% कव्हरेज म्हणजे 90% अचूकता नाही.
  • UI चाचणीमधील मजकुराचा दुवा साधत आहे. जेव्हा मजकूर बदलतो तेव्हा चाचणी खंडित होते; स्थिर अभिज्ञापक (आयडी) वापरा.
  • चुकीच्या पद्धतीने मॉक सेट करणे. वास्तविक सेवा कॉल करणारी "युनिट चाचणी" मंद आणि ठिसूळ असेल.

सारांशात

चाचणी हा मोबाइल गुणवत्तेचा कणा आहे आणि AI या क्षेत्रात, विशेषत: युनिट चाचणीमध्ये खूप कार्यक्षम आहे. चाचणी पिरॅमिडचे अनुसरण करा: अनेक युनिट्स, मध्यम एकत्रीकरण, थोडे UI चाचणी. आनंदी परिस्थितीसाठी तसेच प्रकरणे आणि त्रुटी मार्ग मर्यादित करण्यासाठी AI ला स्पष्टपणे विचारा. व्युत्पन्न केलेली प्रत्येक चाचणी प्रत्यक्षात वर्तन प्रमाणित करते याची खात्री करा; रिक्त चाचण्या आणि फुगवलेले कव्हरेज दिशाभूल करणारे आहेत. सर्वात महत्त्वाचे म्हणजे, AI ला सांगा की कोडने काय करावे, ते काय करत नाही, त्यामुळे चाचणी बग पकडते, त्याचे निराकरण करत नाही.

अर्ज कार्य

व्यवसाय लॉजिक फंक्शनसाठी "युनिट टेस्ट टेम्प्लेट" वापरून AI कडून चाचण्यांची विनंती करा (उदा. सवलत गणना किंवा फॉर्म प्रमाणीकरण) आणि स्पष्टपणे मर्यादा प्रकरणे निर्दिष्ट करा (शून्य, नकारात्मक, खूप मोठी). व्युत्पन्न केलेल्या चाचण्या चालवा, नंतर त्याच चाचण्यांचे "चाचणी ऑडिट टेम्पलेट" सह ऑडिट करा. कमीत कमी एक कमकुवत चाचणी शोधा, ती मजबूत करा आणि चाचण्यांमध्ये फंक्शनची वास्तविक त्रुटी आहे की नाही याची चाचणी घ्या (एक लहान बग जोडून).

चेकलिस्ट

  • [ ] मी चाचणी पिरॅमिडसाठी योग्य स्तर निवडला (प्राधान्य युनिट)
  • मला आनंदी परिस्थिती व्यतिरिक्त मर्यादा आणि त्रुटीची प्रकरणे हवी होती
  • [ ] मी सत्यापित केले की प्रत्येक चाचणीमध्ये एक अर्थपूर्ण प्रतिपादन आहे
  • [ ] मी AI ला सांगितले की कोडने काय करावे, ते काय करते ते नाही
  • [ ] मी कव्हरेजच्या संख्येवर नव्हे तर वास्तविक जोखमीच्या मार्गांवर लक्ष केंद्रित केले
  • मी UI चाचण्यांमध्ये स्थिर अभिज्ञापक वापरला, मी मजकूराशी बांधील नाही