2011-11-01 6 views
15

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

मैं समझता हूं कि यूनिट के मेरे कुछ हिस्सों का परीक्षण कैसे करें और यूआई के कुछ हिस्सों को यूनिट कैसे परीक्षण करें, लेकिन मैं अंत तक परीक्षणों को स्थापित करने के लिए संघर्ष कर रहा हूं। उदाहरण के लिए, परीक्षण करना कि मेरे पूरे एप्लिकेशन के माध्यम से एक निश्चित पथ सही आउटपुट उत्पन्न करता है (यह अंत-टू-एंड टेस्ट की मेरी मूलभूत समझ है)।

क्लिक ईवेंट अनुकरण करना आवश्यक नहीं है, लेकिन यूआई को कुछ प्रकार का कनेक्शन होना जरूरी है।

क्या मुझे यह सोचने में सही है कि मुझे "तर्क" परीक्षण (ऐप लॉन्च किए बिना परीक्षण), "एप्लिकेशन" परीक्षण (ऐप लॉन्च करने के साथ परीक्षण) और जीएचयूनीट जैसी कुछ की एसिंक्रोनस कार्यक्षमता को पूरा करने के लिए एक संयोजन की आवश्यकता है?

संपादित करें:

नीचे जवाब में से कुछ पढ़ने के बाद, ऐसा लगता है जैसे मैं कार्यात्मक एंड-टू-एंड के परीक्षण के लिए देख रहा हूँ लगता है, लेकिन मुझे लगता है कि के रूप में मैं यह कल्पना मैं एक परीक्षण का एक उदाहरण देना चाहिए।

  1. एप्लिकेशन प्रारंभ करें।
  2. एक परीक्षण उपयोगकर्ता प्रमाण-पत्र के साथ लॉगिन फ़ंक्शन को कॉल करें। (नोट: जरूरी नहीं कि यूआई स्वचालन की आवश्यकता हो)।
  3. विंडो पर एक लेबल सत्यापित करें "लॉग इन ..." कहता है।
  4. उपयोगकर्ता को सफलतापूर्वक सत्यापित करने के बाद, अब लेबल "सत्यापित करें, एडम!" कहता है।

केआईएफ लगता है जैसे यह काम कर सकता है, क्योंकि इसमें यूआई तत्वों में बदलावों की जांच करने के लिए कदम हैं और ऐसा लगता है कि मैक ओएसएक्स शाखा भी है। मुझे यकीन है कि मैं एक छोटी सी कक्षा भी लिख सकता हूं जो लगातार यूआई को उन बदलावों के लिए चुनाव करता है जो मुझे उम्मीद है और एक निश्चित समय के बाद समय-समय पर, लेकिन मुझे आश्चर्य है कि क्या यह इसके बारे में जाने का सही तरीका है।

हालांकि, शायद मैं 'ग्रोइंग ऑब्जेक्ट-ओरिएंटेड सॉफ्टवेयर, टेस्ट द्वारा निर्देशित' में पढ़ रहा हूं और कोको को भी शाब्दिक रूप से इसे लागू करने की कोशिश कर रहा हूं।

एक और अद्यतन:

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

मुझे एहसास है कि जैसे ही मैं विधियों को लिखना शुरू करता हूं, ठोस यूनिट परीक्षण आवश्यक होगा, लेकिन मैं कुछ यूआई का उपयोग करके पहले कुछ उच्च स्तरीय स्वीकृति परीक्षण लिखना चाहता था। मैंने इसे पूरा करने में मेरी सहायता के लिए GHAsyncTestCase विचारों के कुछ समान तरीकों का उपयोग करके अपना स्वयं का एप्लिकेशन "ड्राइवर" वर्ग लिखना शुरू कर दिया है। क्या यह सही/उपयोगी/आवश्यक ध्वनि है?

मैं वास्तव में अब तक सभी टिप्पणियों की सराहना करता हूं और उन्होंने निश्चित रूप से मुझे अपने सिर में काम करने में मदद की है जो मैं करने की कोशिश कर रहा हूं और परीक्षण के विभिन्न क्षेत्रों में क्या हैं। मैं जल्द ही इस सवाल को पूरा कर दूंगा, क्योंकि यह बड़ा हो रहा है, इसलिए किसी भी अंतिम सलाह का स्वागत है!

+1

ग्रेट पहला सवाल! – logancautrell

उत्तर

3

मुझे लगता है कि मुख्य बात यह है कि मैं से "बढ़ते वस्तु केंद्रित सॉफ्टवेयर" मिल गया यूआई से जितना संभव हो उतना दसगुणा था। कोड को बिना सुझाव देने के लिए सुझाव देना मुश्किल है लेकिन आपके संशोधन के साथ मुझे लगता है कि यूआई से "लेबल सत्यापित करें .." को अलग करना। यह संदेश क्या सेट कर रहा है, और क्या आप बस उस घटना के लिए परीक्षण कर सकते हैं?

अधिक आप यूआई से दसगुणा कर सकते हैं और अधिक आप कर सकते हैं इकाई परीक्षण (तीव्र और आसान) के बजाय अन्य चौखटे या UI तत्व के चालकों को एकीकृत है।

+0

जबकि मुझे यह डी-युग्मन संदेश भी मिला, उनके कुछ मुख्य "एंड-टू-एंड" परीक्षणों में ऐसी चीजें थीं जैसे "इस क्रिया को करने के बाद लेबल को जांचें"। क्या मैं इस पर भी लटका रहा हूँ? लेकिन हाँ, शायद मुझे यूआई से decoupling पर और अधिक काम करना चाहिए। – Adam

+0

परीक्षण लिखने और परीक्षण संचालित विकास शुरू करने के बाद, मुझे एहसास हुआ कि वास्तव में यूआई का परीक्षण करने की आवश्यकता कुछ दुर्लभ मामलों तक ही सीमित है और अधिकांश समय आप यूआई को डीकॉप्लिंग करके और मैक्स का उपयोग करके प्राप्त कर सकते हैं। जबकि इस धागे के सभी उत्तरों ने मुझे समझने में मदद की, तुम्हारा आखिरकार जो खोजा गया वह निकटतम था। – Adam

0

मेरा मानना ​​है कि आप यूआई को स्क्रिप्ट करने के लिए एक्सेसिबिलिटी फीचर्स का उपयोग कर सकते हैं।मैं "मैक एक्सेसिबिलिटी को सरल बनाने के लिए डिज़ाइन पैटर्न" नामक एक के लिए डब्ल्यूडब्ल्यूडीसी 2011 वीडियो देखता हूं। उन्होंने 2010 में कुछ ऐसा ही किया।

+0

जबकि उस वीडियो और एक्सेसिबिलिटी फीचर्स सहायक हैं, लेकिन यह कोको और एक्सकोड के संबंध में, पूर्ण अंत-टू-एंड अनुभव को काफी कवर नहीं करता है। मैंने यह भी कहा कि उपयोगकर्ता इंटरैक्शन को अनुकरण करना वास्तव में अंत तक परीक्षणों के लिए आवश्यक नहीं है (जैसा कि मैं इसे समझता हूं)। – Adam

0

@Norman पर आपकी प्रतिक्रिया के आधार पर, मुझे लगता है कि आप उन कार्यात्मकताओं की तलाश कर रहे हैं जो कार्यात्मक अंत-टू-एंड के साथ-साथ यूआई-आधारित एंड-टू-एंड दोनों ही होते हैं लेकिन शायद यूआई स्वचालन ढांचा आपके दिमाग को बदल सकता है? कुछ दखल FoneMonkey की तरह उपयोगी हो सकता है: http://www.gorillalogic.com/fonemonkey

है कि आप के लिए काम नहीं करता, मैं जानने में दिलचस्पी होगी क्यों & क्या "अंतर" आप कोड के आधार पर कार्यात्मक परीक्षण बनाम ऐसे यूआई संचालित परीक्षणों में अनुभव?

+0

धन्यवाद, मुझे लगता है कि मैं आपके द्वारा वर्णित "अंतर" के बारे में थोड़ा उलझन में भी हो सकता हूं, इसलिए मैंने अपना प्रश्न सुधारने की कोशिश की है। FoneMoney KIF के समान दिखता है हालांकि मुझे मैक संस्करण पर कोई उल्लेख नहीं दिखाई देता था। – Adam

1

आप स्क्वायर के KIF ढांचे में रुचि हो सकती है: http://corner.squareup.com/2011/07/ios-integration-testing.html

यह वास्तव में एकीकरण/यूआई परीक्षण के लिए अच्छा लग रहा है।

+0

धन्यवाद, यह बहुत दिलचस्प लग रहा है और ऐसा लगता है कि विशेष रूप से मैक ओएसएक्स के लिए एक शाखा है। बस मामले में, मैंने अपने प्रश्न के लिए कुछ स्पष्टीकरण जोड़ा है। – Adam

संबंधित मुद्दे