परतें अलग रखिए। page या component objects selectors और निचले स्तर की क्रियाएं समेटते हैं; एक flow परत उन्हें कारोबारी क्रियाओं में जोड़ती है जैसे log in या checkout पूरा करना; टेस्ट में सिर्फ मंशा और assertions रहते हैं। selectors एक ही जगह रखिए, नाजुक CSS paths की जगह अलग से बने test identifiers पसंद कीजिए, और assertions को page objects से बाहर रखिए ताकि फेल होने पर उंगली सही परत की तरफ उठे।
इंटरव्यूअर यह क्यों पूछते हैं
जब selectors और logic बिखरे हों तो UI suite अपने ही बोझ से बैठ जाते हैं, इसलिए इंटरव्यूअर देखना चाहते हैं कि आप टेस्ट code को production code की तरह मानते हैं। जो बारीकियां वे सुनते हैं वे हैं selectors का एक ही घर, page objects के ऊपर एक flow परत, और assertions का टेस्ट में ही रहना। नाजुक CSS या XPath की जगह अलग से बने test attributes का जिक्र मजबूत व्यावहारिक संकेत है।
अपना जवाब कैसे स्ट्रक्चर करें
- परतों के नाम लें और बताएं कि हर एक किस चीज की मालिक है।
- हर page या component के सारे selectors एक ही जगह रखें।
- नाजुक selectors की जगह अलग से बने test identifiers की वकालत करें।
- assertions टेस्ट में रखें, page objects में नहीं।
- साझा setup UI की जगह API से करने का जिक्र करें।
उदाहरण जवाब
मैं टेस्ट code को production code की तरह मानता हूं, तो वही नियम लागू होते हैं: कोई दोहराव नहीं, साफ परतें, अर्थपूर्ण नाम। सबसे नीचे page या component objects होते हैं जो selectors और UI के उस हिस्से से बरतने की मशीनरी के मालिक हैं। उसके ऊपर कारोबारी स्तर की क्रियाओं के लिए एक flow परत बैठती है, यानी इस role वाले user के तौर पर log in करो, या एक item जोड़कर checkout पूरा करो, क्योंकि ये क्रम लगातार दोबारा इस्तेमाल होते हैं और आप नहीं चाहते कि वे चालीस टेस्ट में copy paste हों। तब टेस्ट खुद requirement की तरह पढ़े जाते हैं, ज्यादातर method calls और assertions। मैं assertions को page objects से बाहर रखता हूं, क्योंकि जब कोई page object assert करता है तो फेल होने पर पता चलता है कि कोई page नाखुश है, यह नहीं कि कौन सा behavior टूटा। selectors पर मैं developers के साथ तय किए गए अलग test attributes के लिए जोर लगाता हूं, क्योंकि हर बार किसी के component को दोबारा style करने पर बदल जाने वाले CSS paths के पीछे भागना ही इन suites के छोड़ दिए जाने की मुख्य वजह है। और setup मैं जहां हो सके API से करता हूं: अगर टेस्ट checkout के बारे में है, तो account और cart HTTP पर बना लेना बारह screens चलाकर वहां पहुंचने से तेज और कहीं कम flaky है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- page objects को हजार लाइन के god objects बनने से कैसे रोकते हैं?
- अगर developers test identifiers जोड़ने से मना कर दें तो आप क्या करेंगे?
- login flow दोहराए बिना टेस्ट के बीच login state कैसे साझा करते हैं?
QA इंजीनियर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें