शाखाओं और edge cases वाले लॉजिक का unit test कीजिए: pricing rules, parsing, state machines। उन जोड़ों का integration test कीजिए जहां आपकी मान्यताएं हकीकत से टकराती हैं: डेटाबेस queries, serialization, auth middleware, third party clients। अगर किसी टेस्ट को चलने के लिए पांच mocks चाहिए, तो वह ज्यादातर आपके mocks को ही टेस्ट कर रहा है और असली फायदा integration test में है। लक्ष्य रखिए बहुत सारे तेज unit tests और उनके साथ critical रास्तों को कवर करने वाला छोटा सा integration tests का सेट।
इंटरव्यूअर यह क्यों पूछते हैं
यह असल में इस बारे में सवाल है कि बग आते कहां से हैं। इंटरव्यूअर देखना चाहता है कि आप implementation नहीं, व्यवहार टेस्ट करते हैं, कि आप जानते हैं भारी mocks वाले unit tests पास होते हुए भी प्रोडक्शन टूट सकता है, और कि आप testing pyramid को धर्म की तरह दोहराए बिना एक अनुपात बता सकते हैं। सबसे मजबूत संकेत यह समझ है कि किस चीज को टेस्ट करना ही बेकार है।
अपना जवाब कैसे स्ट्रक्चर करें
- इस हिसाब से बांटिए कि जोखिम लॉजिक में है या integration में।
- बहुत ज्यादा mock वाले टेस्ट की बदबू पहचानिए।
- बताइए कि आप कैसी suite चाहते हैं।
- बताइए कि आप जानबूझकर क्या टेस्ट नहीं करते।
उदाहरण जवाब
मैं इसे इस हिसाब से बांटता हूं कि जोखिम कहां बैठा है। अगर जोखिम लॉजिक में है, शाखाएं, rounding, किसी state machine के edge cases, तो वह unit test है, और वह इतना तेज होना चाहिए कि सेव करते ही मैं पूरी file चला सकूं। अगर जोखिम किसी जोड़ पर है, जैसे मेरी SQL सच में वही लौटा रही है जो मैं समझ रहा हूं, JSON उसी तरह serialize हो रहा है जैसा client चाहता है, middleware expired token को मना कर रहा है, तो वह container में असली डेटाबेस के साथ integration test है। जो नियम मैं इस्तेमाल करता हूं वह mock की गिनती है: अगर टेस्ट चलाने के लिए मुझे चार mocks चाहिए, तो वह टेस्ट उन चार चीजों के बारे में मेरे mental model को assert कर रहा है, और प्रोडक्शन में जब वह टूटता है तो गलत ठीक वही mental model होता है। मैं इस बारे में भी ईमानदार रहने की कोशिश करता हूं कि क्या टेस्ट नहीं करता। एक पतला controller जो बस आगे भेज देता है, या कोई getter, अपने आप कवर हो जाता है और उसे अलग से टेस्ट करना बिना किसी संकेत के रखरखाव की लागत है। मुझे जो suite चाहिए वह है ढेर सारे तेज unit tests और शायद बीस integration tests, उन रास्तों पर जहां पैसा या auth शामिल है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- integration tests को धीमा और flaky होने से आप कैसे रोकते हैं?
- coverage के लक्ष्यों पर आपकी क्या राय है?
- सर्विसेज के बीच contract tests कहां फिट होते हैं?
सॉफ्टवेयर इंजीनियर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें