QA इंजीनियर इंटरव्यू सवाल

mock, stub और fake में क्या फर्क है, और आप उनकी जगह असली dependency कब इस्तेमाल करते हैं?

इंटरव्यूअर असल में क्या परख रहा है, अपना जवाब कैसे स्ट्रक्चर करें, और एक बोला हुआ उदाहरण जिसे आप अपना सकते हैं।

छोटा जवाब

stub तय जवाब लौटाता है ताकि जिस code को टेस्ट किया जा रहा है वह आगे बढ़ सके। mock इसके साथ बातचीत भी दर्ज करता है ताकि आप assert कर सकें कि वह हुई, यानी हालत नहीं, बर्ताव की जांच। fake एक हल्का पर चलता हुआ implementation है, जैसे in memory repository। असली dependency तब इस्तेमाल कीजिए जब integration ही रिस्क हो, और test doubles तब जब dependency धीमी, महंगी या किसी खास हालत में लाने में मुश्किल हो।

इंटरव्यूअर यह क्यों पूछते हैं

ये शब्द आपस में अदल बदल कर इस्तेमाल होते हैं, इसलिए सटीक परिभाषाएं गहराई का संकेत देती हैं। इससे भी बड़ी बात, इंटरव्यूअर आपकी यह समझ चाहते हैं कि double कब गलत चुनाव है, क्योंकि हद से ज्यादा mocking ऐसे टेस्ट बनाती है जो सिस्टम टूटे होने पर भी खुशी खुशी पास होते रहते हैं। integration टेस्ट के लिए container में असली dependencies का नाम लेना दिखाता है कि आप सब कुछ mock करो या कुछ भी नहीं वाली सोच से आगे का आधुनिक बीच का रास्ता जानते हैं।

अपना जवाब कैसे स्ट्रक्चर करें

  • तीनों को एक एक लाइन में साफ परिभाषित करें।
  • हालत की जांच बनाम बातचीत की जांच समझाएं।
  • वह मामला दें जहां असली dependency सही चुनाव है।
  • हद से ज्यादा mocking और सिर्फ mocks को टेस्ट करते टेस्ट से आगाह करें।
  • असली जैसी integration dependencies के लिए containers का जिक्र करें।

उदाहरण जवाब

बोला हुआ उदाहरण, पहले व्यक्ति में

stub निष्क्रिय होता है, वह बस वही लौटाता है जो आपने उससे कहा है ताकि code चलता रहे। mock वह stub है जो यह भी याद रखता है कि उसके साथ क्या हुआ, ताकि आप assert कर सकें कि payment service को ठीक एक बार इन arguments के साथ बुलाया गया। fake असली पर सरल बनाया गया implementation है, जैसे किसी repository का in memory रूप, जो ठीक बर्ताव करता है पर production लायक नहीं होता। व्यवहार में जो फर्क मायने रखता है वह यह है कि stubs और fakes हालत की जांच का साथ देते हैं, यानी नतीजे पर assert करना, जबकि mocks बातचीत की जांच का, यानी संवाद पर assert करना। मेरा झुकाव पहले की तरफ है, क्योंकि बातचीत पर assert करने से टेस्ट implementation की बारीकियों से बंध जाता है, और फिर एक refactor बिना किसी behavior के बदले सौ टेस्ट तोड़ देता है। असली dependencies मैं वहां इस्तेमाल करता हूं जहां integration ही रिस्क है। अगर सवाल यह है कि हमारी query Postgres पर सच में चलती है या नहीं, तो mock किया गया database कुछ नहीं बताता, इसलिए मैं असली चीज container में चलाता हूं। integration परत पर अब यही मेरा डिफॉल्ट है, क्योंकि containers ने इसे सस्ता कर दिया। जिन तीसरे पक्ष की services मेरे हाथ में नहीं हैं उन्हें मैं mock करता हूं, और फिर उनके sandbox के खिलाफ तय समय पर चलने वाले contract टेस्ट से उसे सहारा देता हूं।

जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।

देखें यह कैसे काम करता है

फॉलो-अप सवाल जिनकी उम्मीद रखें

  • किसी टेस्ट suite में हद से ज्यादा mocking का क्या संकेत होता है?
  • जिस तीसरे पक्ष को आप जबरन फेल नहीं करा सकते, उसके error handling को कैसे टेस्ट करेंगे?
  • पूरे mock की जगह spy कब सही औजार होता है?

QA इंजीनियर के और सवाल

आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।

मेरे सवाल प्रेडिक्ट करें

मुश्किल सवाल पूछे जाने से पहले उनकी रिहर्सल कीजिए

एक लाइव कोपायलट के साथ प्रैक्टिस कीजिए, फिर तैयार होकर अंदर जाइए। $29 Session Pass आपको इंटरव्यू पार करा देता है, न कोई सब्सक्रिप्शन, न कोई लॉक-इन।

GhostPilot पाएं