इकाइयाँ
1. मोबाइल विकास में एआई का परिचय: भूमिकाएँ, सीमाएँ, प्रमाणीकरण और सुरक्षा 2. आर्टिफिशियल इंटेलिजेंस के साथ मोबाइल कोड जनरेशन: कोटलिन, स्विफ्ट और क्रॉस-प्लेटफ़ॉर्म डेवलपमेंट 3. आर्टिफिशियल इंटेलिजेंस के साथ इंटरफ़ेस डिज़ाइन और यूआई कोड जनरेशन 4. ऑन-डिवाइस एआई: कोर एमएल, टेन्सरफ्लो लाइट और एमएल किट 5. क्लाउड एआई और एलएलएम एपीआई एकीकरण: चैट, प्रवाह और सुरक्षा 6. आर्टिफिशियल इंटेलिजेंस के साथ टेस्ट जनरेशन: यूनिट, इंटरफ़ेस और ऑटोमेशन टेस्ट 7. आर्टिफिशियल इंटेलिजेंस के साथ डिबगिंग और क्रैश विश्लेषण 8. प्रदर्शन और बैटरी अनुकूलन: आर्टिफिशियल इंटेलिजेंस के साथ तेज़ और कुशल अनुप्रयोग 9. गोपनीयता, अनुमतियाँ और सुरक्षित उपयोग 10. स्टोर रिलीज़: ऐप स्टोर, Google Play और AI संगतता 11. एंड-टू-एंड प्रोजेक्ट, पेशे में आर्टिफिशियल इंटेलिजेंस और रोडमैप का जिम्मेदार उपयोग
इकाई 6 / 11

आर्टिफिशियल इंटेलिजेंस के साथ टेस्ट जनरेशन: यूनिट, इंटरफ़ेस और ऑटोमेशन टेस्ट

लाभ:

  • परीक्षण पिरामिड के अनुसार कृत्रिम बुद्धिमत्ता के साथ इकाई, एकीकरण और यूआई परीक्षण तैयार करने की क्षमता और सीमा और त्रुटि स्थितियों के साथ-साथ सुखद परिदृश्यों को कवर करने की क्षमता
  • यह जांच कर कि प्रत्येक उत्पन्न परीक्षण वास्तव में एक व्यवहार को मान्य करता है, खाली/बेकार परीक्षणों और फूले हुए कवरेज को खत्म करने की क्षमता
  • यह सुनिश्चित करना कि परीक्षण बग को पकड़ ले और एआई को यह बताकर बग को ठीक करने से रोक दे कि कोड को क्या करना चाहिए

कोड लिखना आधा काम है; यह साबित करना कि कोड सही ढंग से काम करता है दूसरा भाग है। मोबाइल ऐप्स सैकड़ों विभिन्न डिवाइस, स्क्रीन आकार, ऑपरेटिंग सिस्टम संस्करण और उपयोगकर्ता व्यवहार का सामना करते हैं। इन सभी का मैन्युअल रूप से परीक्षण करना असंभव है; इसीलिए स्वचालित परीक्षण (कोड परीक्षण कोड - परीक्षण जो मानव क्लिक के बिना चलता है) मोबाइल गुणवत्ता की रीढ़ है। एआई परीक्षण लिखने में अविश्वसनीय रूप से कुशल है क्योंकि परीक्षण लिखना बिल्कुल उसी प्रकार का पैटर्न कार्य है जो उसे पसंद है: विशिष्ट इनपुट के लिए एक विशिष्ट व्यवहार को मान्य करना। इस इकाई में, हम सीखेंगे कि एआई के साथ यूनिट परीक्षण, इंटरफ़ेस परीक्षण और स्वचालन को कैसे तेज किया जाए, लेकिन मानव आंखों के माध्यम से परीक्षण की गुणवत्ता कैसे सुनिश्चित की जाए।

परीक्षण पिरामिड: क्या परीक्षण करना है और कितना

एक स्वस्थ परीक्षण रणनीति एक पिरामिड के समान होती है। आधार में बड़ी संख्या में इकाई परीक्षण शामिल हैं (त्वरित परीक्षण जो किसी एकल फ़ंक्शन या वर्ग का अलगाव में परीक्षण करता है); वे तेज़ और सस्ते हैं। बीच में कम एकीकरण परीक्षण होता है (यह परीक्षण करना कि कई हिस्से एक साथ कैसे काम करते हैं)। शीर्ष पर न्यूनतम यूआई/एंड-टू-एंड परीक्षण है (परीक्षण उपयोगकर्ता की तरह स्क्रीन पर क्लिक करके किया जाता है); वे यथार्थवादी हैं लेकिन धीमे और नाजुक हैं। एआई हर स्तर पर मदद करता है, लेकिन सबसे अधिक मूल्य आधार पर है: व्यावसायिक तर्क के तेजी से इकाई परीक्षण तैयार करना।

परीक्षण प्रकार

दायरा

गति

एआई दक्षता

इकाई परीक्षण

एकल फ़ंक्शन/वर्ग

बहुत तेज़

बहुत ऊँचा

एकीकरण

इंटरलेयर

मध्यम

उच्च

यूआई/एंड-टू-एंड

सभी स्क्रीन स्ट्रीम

धीमा

मध्यम (नाज़ुक)

युक्ति: एआई को "इस फ़ंक्शन के लिए परीक्षण उत्पन्न करने" के लिए कहते समय, स्पष्ट रूप से किनारे के मामलों के लिए पूछें: खाली इनपुट, शून्य, नकारात्मक संख्या, बहुत बड़ा मूल्य, नेटवर्क त्रुटि। एआई आसानी से खुशहाल रास्ता तैयार करता है; असली गलतियाँ सीमाओं में छिप जाती हैं और यदि आप उन्हें वहाँ नहीं चाहते तो बाहर निकल आती हैं।

एआई के साथ परीक्षण लिखने के चरण

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

पांचवां चरण महत्वपूर्ण है. एआई कभी-कभी बेकार परीक्षण उत्पन्न करता है जो "हमेशा उत्तीर्ण" होते हैं; उदाहरण के लिए, एक परीक्षण जो किसी भी चीज़ को सत्यापित नहीं करता है या अपने स्वयं के नकली डेटा की जाँच नहीं करता है। एक उत्तीर्ण परीक्षा और एक मूल्यवान परीक्षा अलग-अलग चीजें हैं।

सावधानी: सिर्फ इसलिए कि एआई उत्पादन कर सकता है इसका मतलब यह नहीं है कि परीक्षण सही है। कभी-कभी एआई कोड के वर्तमान (शायद दोषपूर्ण) व्यवहार को "सही" मानता है और तदनुसार परीक्षण लिखता है। इस तरह का परीक्षण बग को पकड़ने के बजाय उसे ठीक करता है। आप यह निर्धारित करते हैं कि परीक्षण क्या अपेक्षा रखता है; एआई को बताएं कि उसे क्या करना चाहिए, न कि कोड क्या करता है।

परीक्षण कवरेज माप और भ्रांति

परीक्षण कवरेज (परीक्षणों द्वारा कितने प्रतिशत कोड चलाया जाता है) एक उपयोगी लेकिन भ्रामक मीट्रिक है। 90% कवरेज इंगित करता है कि 90% कोड निष्पादित किया गया है; लेकिन यह सत्यापित नहीं किया गया है कि वे लाइनें सही ढंग से काम कर रही हैं। एक परीक्षण जो एक लाइन चलाता है और परिणाम की जांच नहीं करता है वह दायरा बढ़ाता है लेकिन सुरक्षा प्रदान नहीं करता है। लक्ष्य उच्च संख्या नहीं है, बल्कि सार्थक सत्यापन है। आप एआई के साथ तेजी से आगे बढ़ सकते हैं, लेकिन सुनिश्चित करें कि प्रत्येक परीक्षण वास्तव में एक व्यवहार का परीक्षण करता है।

तीन मिनी मामले

केस 1 - सीमा पर स्थिति पकड़ी गई। एआई को बैंकिंग एप्लिकेशन में धन हस्तांतरण फ़ंक्शन के परीक्षण के लिए कहा गया था, और विशेष रूप से "नकारात्मक राशि" और "शेष राशि से अधिक" परिदृश्य जोड़े गए थे। परीक्षण से पता चला कि स्थानांतरण को नकारात्मक राशि के साथ अवरुद्ध नहीं किया गया था; यह उत्पादन में एक प्रमुख सुरक्षा भेद्यता होगी। एक पंक्ति नियंत्रण जोड़कर बंद किया गया। पाठ: सीमा परीक्षण सबसे मूल्यवान परीक्षण हैं।

केस 2 - नकली परीक्षण। एआई द्वारा उत्पादित 40 यूनिट परीक्षणों के साथ कवरेज को 85% तक बढ़ाने से एक टीम को राहत मिली। निरीक्षण के दौरान, यह देखा गया कि अधिकांश परीक्षण वास्तव में किसी भी आउटपुट को सत्यापित नहीं करते थे, उन्होंने केवल फ़ंक्शन को कॉल किया और AssertTrue(true) लिखा। कवरेज अधिक थी लेकिन सुरक्षा शून्य थी। परीक्षणों में आमूल-चूल परिवर्तन किया गया और उन्हें वास्तविक सत्यापन के साथ दोबारा लिखा गया। पाठ: कवरेज संख्याएँ झूठ बोल सकती हैं।

केस 3 - यूआई परीक्षण त्वरित हुआ। एक ई-कॉमर्स टीम ने 20 मिनट में AI के साथ ऐड-टू-कार्ट प्रवाह की XCUITest स्क्रिप्ट लिखी; यदि इसे हाथ से लिखा जाता तो इसमें आधा दिन लग जाता। एआई अनुमानित स्क्रीन तत्व पहचानकर्ता; टीम ने वास्तविक कोड से उनका मिलान किया और उन्हें ठीक किया। ड्राफ्ट गति वास्तविक है, लेकिन पहचानकर्ता सत्यापन मानवीय कार्य है।

कमजोर संकेत/मजबूत संकेत

कमज़ोर संकेत: "इस फ़ंक्शन के लिए एक परीक्षण लिखें।"

शक्तिशाली संकेत: "JUnit5 + MockK के साथ इस कोटलिन फ़ंक्शन के लिए यूनिट परीक्षण तैयार करें। फ़ंक्शन: धन हस्तांतरण (राशि, स्रोत, लक्ष्य)। परीक्षण करने के लिए व्यवहार (कोड को क्या करना चाहिए): - वैध हस्तांतरण सफल होना चाहिए - नकारात्मक या शून्य राशि को अस्वीकार कर दिया जाना चाहिए - शेष राशि से अधिक की राशि को अस्वीकार कर दिया जाना चाहिए - नेटवर्क त्रुटि को उचित अपवाद फेंकना चाहिए प्रत्येक परीक्षण को केवल एक चीज को सत्यापित करना चाहिए, उनके नाम वर्णनात्मक होने चाहिए, बाहरी सेवा का अनुकरण करें। खाली दावा न लिखें।"

कॉपी करने योग्य टेम्पलेट

इकाई परीक्षण टेम्पलेट: "[भाषा] के लिए इस फ़ंक्शन के लिए [JUnit/XCTest] इकाई परीक्षण उत्पन्न करें। अपेक्षित व्यवहार: [क्या करें]। शामिल करें: सुखद परिदृश्य, शून्य इनपुट, ब्रेकप्वाइंट, त्रुटि मामला। प्रत्येक परीक्षण को एकल व्यवहार को सत्यापित करने दें; सार्थक दावे का उपयोग करें; नकली। [कोड]"

यूआई परीक्षण टेम्पलेट: "[एस्प्रेसो/XCUITest] के साथ निम्नलिखित प्रवाह का यूआई परीक्षण लिखें: [उपयोगकर्ता प्रवाह चरण दर चरण]। एक्सेसिबिलिटी आईडी के साथ स्क्रीन तत्वों का चयन करें, टेक्स्ट के बजाय आईडी का उपयोग करें। प्रतीक्षा रणनीति जोड़ें। तत्व आईडी को वास्तविक कोड से मिलान करने के लिए मुझे याद दिलाएं।"

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

कवरेज अनुकूलन टेम्पलेट: "इस वर्ग के अप्रयुक्त भागों की पहचान करें और सार्थक परीक्षणों का सुझाव दें। केवल कवरेज की संख्या नहीं, बल्कि वास्तविक जोखिम वाले पथों को प्राथमिकता दें। [कोड]"

सामान्य गलतियाँ

  • बस सुखद परिदृश्य का परीक्षण कर रहा हूँ। त्रुटियाँ सीमा अवस्थाओं में संग्रहीत होती हैं; उनसे खुलकर मांगें.
  • खाली/बेकार परीक्षण को स्वीकार करना। AssertTrue(true) प्रकार के परीक्षण दायरा बढ़ाते हैं और कोई सुरक्षा प्रदान नहीं करते हैं।
  • एआई से यह सत्यापित करना कि कोड क्या कर रहा है। परीक्षण को यह अपेक्षा करनी चाहिए कि कोड को क्या करना चाहिए; अन्यथा यह बग को ठीक कर देता है।
  • उद्देश्य के लिए स्कोप संख्या को गलत समझना। 90% कवरेज का मतलब 90% सटीकता नहीं है।
  • यूआई परीक्षण में टेक्स्ट से लिंक करना। पाठ बदलने पर परीक्षण टूट जाता है; स्थिर पहचानकर्ता (आईडी) का उपयोग करें।
  • गलत तरीके से मॉक सेट करना. वास्तविक सेवा को कॉल करने वाला "यूनिट परीक्षण" धीमा और भंगुर होगा।

सारांश

परीक्षण मोबाइल गुणवत्ता की रीढ़ है, और एआई इस क्षेत्र में बहुत कुशल है, खासकर यूनिट परीक्षण में। परीक्षण पिरामिड का पालन करें: कई इकाइयाँ, मध्यम एकीकरण, थोड़ा यूआई परीक्षण। एआई से स्पष्ट रूप से सुखद परिदृश्य के साथ-साथ सीमित मामलों और त्रुटि पथों के बारे में पूछें। सुनिश्चित करें कि उत्पन्न प्रत्येक परीक्षण वास्तव में एक व्यवहार को मान्य करता है; खोखले परीक्षण और बढ़ा-चढ़ाकर किया गया कवरेज भ्रामक है। सबसे महत्वपूर्ण बात यह है कि एआई को बताएं कि कोड को क्या करना चाहिए, न कि वह क्या करता है, इसलिए परीक्षण बग को पकड़ता है, उसे ठीक नहीं करता है।

आवेदन कार्य

व्यावसायिक तर्क फ़ंक्शन (जैसे छूट गणना या फॉर्म सत्यापन) के लिए "यूनिट टेस्ट टेम्पलेट" का उपयोग करके एआई से परीक्षण का अनुरोध करें और स्पष्ट रूप से सीमा मामलों (शून्य, नकारात्मक, बहुत बड़े) को निर्दिष्ट करें। जेनरेट किए गए परीक्षण चलाएं, फिर उन्हीं परीक्षणों को "टेस्ट ऑडिट टेम्पलेट" के साथ ऑडिट कराएं। कम से कम एक कमजोर परीक्षण ढूंढें, इसे मजबूत करें, और परीक्षण करें कि क्या परीक्षण फ़ंक्शन की वास्तविक त्रुटि पकड़ते हैं (एक छोटा बग जोड़कर)।

चेकलिस्ट

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