इसे pyramid की हठधर्मी के बजाय जोखिम के हिसाब से तौलिए। शुद्ध logic और किनारों के मामलों के लिए unit tests, container में असली डेटाबेस पर चलने वाले integration tests की एक मजबूत परत, और उन flows को कवर करने वाले कुछ गिने चुने end to end tests जिनके टूटने से पैसा जाता है, जैसे signup, checkout और login। तीसरे पक्ष को अपने ही modules stub करने की जगह network की सीमा पर mock कीजिए।
इंटरव्यूअर यह क्यों पूछते हैं
इंटरव्यूअर जानना चाहता है कि आपके tests असली bugs पकड़ेंगे या बस coverage का नंबर फुलाएंगे। वे असली डेटाबेस पर चलने वाले integration tests सुन रहे हैं, क्योंकि ORM को mock करना टीमों के ऐसे tests लिखने का सबसे आम तरीका है जो पास होते रहते हैं जबकि प्रोडक्शन टूटता है। वे यह भी सुनना चाहते हैं कि आप चंचल end to end tests कैसे संभालते हैं, क्योंकि समय के साथ suite को असल में वही मारता है।
अपना जवाब कैसे स्ट्रक्चर करें
- सिद्धांत बताएं: जहां जोखिम है वहां टेस्ट करें।
- हर परत और उसकी ज़िम्मेदारी बताएं।
- समझाएं कि आप mocking की लकीर कहां खींचते हैं।
- बताएं कि आप suite को तेज़ और भरोसेमंद कैसे रखते हैं।
उदाहरण जवाब
मेरा मार्गदर्शक नियम यह है कि test लिखने लायक तब है जब वह ऐसा bug पकड़ लेता जिसे हम सचमुच शिप कर सकते थे। शुद्ध logic, pricing के नियम, तारीख संभालना, permission की जांचें, इन्हें तेज़ unit tests मिलते हैं जिनमें भद्दे किनारे के मामले होते हैं। जिस परत में मैं सबसे ज़्यादा निवेश करता हूं वह integration है: ऐप में असली HTTP request, container में असली Postgres, असली migrations, और response तथा बनी हुई rows दोनों की जांच। यही वे चीज़ें पकड़ता है जिन्हें mocks छिपा देते हैं, जैसे constraint का उल्लंघन या ऐसी query जो चुपचाप कुछ नहीं लौटाती। तीसरे पक्ष को MSW जैसी किसी चीज़ या रिकॉर्ड की गई fixture से network की सीमा पर mock किया जाता है, अपनी service class stub करके कभी नहीं, क्योंकि तब मैं अपने ही mock को टेस्ट कर रहा होता हूं। end to end मैं जानबूझकर छोटा रखता हूं, शायद आठ यात्राएं जिनमें signup, login, checkout और मुख्य workflow हों, और वे हर merge पर चलती हैं। चंचलता पर मैं बेरहम हूं; जो test कभी कभी बेवजह फेल होता है वह लोगों को pipeline दोबारा चलाना सिखा देता है, तो मैं उसे एक दिन के अंदर ठीक करता हूं या मिटा देता हूं। coverage को मैं जांच का औज़ार मानता हूं, लक्ष्य कभी नहीं।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- runs के बीच test का डेटा कैसे बनाते और हटाते हैं?
- जब कोई end to end test चंचल हो जाए तो क्या करते हैं?
- जो React component खुद डेटा लाता है, उसे कैसे टेस्ट करते हैं?
फुल स्टैक डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें