सफलतापूर्वक परीक्षण किया गया कि i40west का समाधान सिम्युलेटर को मैन्युअल रूप से लॉन्च करने के लिए काम करता है, लेकिन मूर्खतापूर्ण लगता है कि इस दिन और उम्र में, आईओएस सिम्युलेटर को कमांड लाइन से समवर्ती परीक्षणों को चलाने के लिए अलग-अलग Xcode संस्करणों और विभिन्न डिवाइस प्रकारों की आवश्यकता होती है (थोड़ा अलग उपयोग मामला लेकिन शीर्ष पर मूल प्रश्न से संबंधित )।
यहां पर Apple लेख देखें जो कमांड लाइन के निर्माण और परीक्षण के लिए सबसे अधिक प्रासंगिक है:
https://developer.apple.com/library/ios/technotes/tn2339/_index.html
एकाधिक समवर्ती परीक्षणों ने हमारे लिए ठीक काम किया है - यदि 'xcodebuild परीक्षण' कमांड को सही -destination 'मान के साथ-साथ' xcodebuild परीक्षण 'कमांड को चलाने से पहले -' iOS सिम्युलेटर.app 'को' xcrun के आउटपुट से UUID के मान के साथ लॉन्च किया जाए। simctl सूची ', और अलग-अलग XCode संस्करण बायनेरिज़ (यानी Xcode 6.1 और 6.4 का आधार पथ) का चयन करने के लिए DEVELOPER_DIR पर्यावरण चर सेट करें।
एक ही भौतिक मशीन और एक ही iOS सिम्युलेटर डिवाइस जैसे कि iPad या iPhone और समान Xcode संस्करण पर समवर्ती इकाई परीक्षणों की आवश्यकता का कारण मुख्य रूप से किसी भी iOS परियोजना के CI (निरंतर एकीकरण) का समर्थन करना है, जिससे एक ही बिल्ड सिस्टम 1 से अधिक बिल्ड बना सकता है एप्लिकेशन (हमारी कंपनी में 30 ऐप्स या तो हैं) एक समय में चेक-इन सुविधा शाखाओं पर स्वचालित रूप से स्कैन किए जाते हैं और बांस एजेंट द्वारा बनाए जाते हैं, जो अन्य चलने के लिए इंतजार करने की आवश्यकता के बिना पूरा करने के लिए बनाता है - बांस ऑटो पर इस तरह के ऑटो बिल्ड का समर्थन करता है- सक्षम होने पर सुविधा शाखाओं की खोज की।
कई समवर्ती परीक्षणों को चलाने के दौरान क्या होता है, हम कई 'xcodebuild परीक्षण' कमांड को दो बार अलग-अलग Terminal.app विंडो में उत्तराधिकार में चलाते हैं, परिणाम केवल एक सिम्युलेटर विंडो दिखाई देता है और परीक्षण सबसे सरल परीक्षण में विफल होते हैं।
जब हम अपने परीक्षण लॉन्च के लिए प्रवेश मानदंड को जटिल करते हैं, तो प्रत्येक सिम और टेस्ट लॉन्च के लिए अलग-अलग Xcode संस्करण, जब मैन पेज (xcodebuild परीक्षण) के अनुसार DEVELOPER_DIR का उपयोग करते हुए हम एक अलग डिवाइस को निर्दिष्ट कर रहे हैं जो दो अलग-अलग विंडो में खुलता है, लेकिन परिणाम यह है कि पहली विंडो में कोई भी चल रहे परीक्षण दूसरे iOS सिम्युलेटर विंडो द्वारा बाधित हैं।
ऐसा लगता है कि जिस तरह से मिल रहा है, उसके तहत एक साझा साझा संसाधन है, यह सुनिश्चित नहीं है कि यह इरादा है या सिर्फ एक नई विशेषता है जो समवर्ती परीक्षण को बेहतर तरीके से लागू करने के लिए गंभीर विचार के कुछ दिनों से अधिक की आवश्यकता होती है, जो प्रतिकूल प्रभावों को दूर करता है।
हम अपने अनुभव के रूप में सिम प्रतिबंधों के आसपास काम करने के लिए वीएम का उपयोग नहीं करना चाहते हैं और सामान्य रूप से दूसरों के लिए यह है कि आईओएस वीएम पर प्रदर्शन बड़ी संख्या में छोटी फ़ाइलों के साथ भौतिक हार्डवेयर की तुलना में धीमी है। VMware सॉफ्टवेयर और Apple हार्डवेयर और / या फर्मवेयर के संयोजन में I / O मुद्दों के कारण VMs आम तौर पर बिल्ड को बहुत कम कर देगा। माफ़ करना वस्तुतः क्षमा करें, लेकिन हमारे लिए वीएम अच्छा प्रदर्शन नहीं करते हैं - वस्तुतः वीथेगेटो साइट ने हमें मैक मिनी पर ईएसएक्सआई 5.5 स्थापित करने के निर्देश दिए हैं।
हमने मैक मिनी पर ESXi 5.5 के साथ बिल्ड परफॉर्मेंस इश्यू का अनुभव किया है। एसएस मिनी के साथ 2 या अधिक (यानी 10 मिनट नंगेमेट बिल्ड वीएम पर 20 मिनट लगते हैं) एसएस मिनी के साथ भी नंगे धातु की तुलना में धीमी है। नीचे दिए गए चौकोर लेख का संदर्भ लें।
https://corner.squareup.com/2015/07/ios-build-infrastructure.html
Xcodebuild इकाई परीक्षणों के लिए एक समय में 1 सिम डिवाइस का प्रतिबंध उत्पादकता को गंभीर रूप से कम कर देता है और Apple और पारिस्थितिकी तंत्र में महत्वपूर्ण लागत को जोड़ता है।
ऐप्पल की लागत अधिक हार्डवेयर खरीद को सही ठहराने के लिए संगामिति का समर्थन करने के लिए ध्यान से सोचा जाना चाहिए, अन्य प्रतियोगियों के खिलाफ डेवलपर वेग खोने के जोखिमों को कम करना चाहिए जिनके पास सिम और ईयूएलए के संदर्भ में कम प्रतिबंध हैं।
एक ही उपयोगकर्ता लॉगिन (कैसे सबसे सिस्टम सिस्टम काम करते हैं) में समवर्ती परीक्षणों का लाभ ऐप्पल ब्रांडेड ऐप स्टोर ऐप्स की गुणवत्ता है जो बदले में है जो लोगों को पहली बार में आईओएस डिवाइस खरीदने की सुविधा देता है। खराब सॉफ़्टवेयर गुणवत्ता पूरे ब्रांड को आईओएस में थोड़ा और सुस्त और संगामिति का समर्थन करती है, निश्चित रूप से पारिस्थितिकी तंत्र का समर्थन करने के लिए जाने के स्मार्ट तरीके की तरह लगता है। हाथ में इस मुद्दे के लिए एक corollary का थोड़ा हालिया सुधार जैसे कि CI के लिए Apple के Xcode सर्वर, Xcode 7 में Xcode की स्वचालित UI परीक्षण कार्यक्षमता।
जरूरतमंद ओवरहेड्स को प्रोत्साहित करने के लिए लोगों को बड़ी मात्रा में हार्डवेयर, सेटअप, कॉन्फ़िगरेशन खरीदने के लिए, सभी मशीनों, नेटवर्क और पावर पॉइंट आदि का समर्थन करने के लिए आवश्यक कई लोगों का उल्लेख नहीं करने के लिए, संभवतः सभी को Apple के मुनाफे को नुकसान पहुंचाएगा क्योंकि हर कोई Apple जैसा नहीं है और सिमुलेटर पर समवर्ती परीक्षणों का समर्थन करने के लिए मैकप्रो या मैक मिनी के रैक को वहन करने में सक्षम। एक सिम्युलेटर का पूरा बिंदु हार्डवेयर का उपयोग करने से बचना है और परीक्षणों को गति देना भी है।
प्लस वीएम पर ईयूएलए की सीमाएं मैक प्रो पर वीएम के मामले को काफी कमजोर बनाती हैं। यह हार्डवेयर प्रकार आकर्षक होगा यदि कई सिम चल सकते हैं लेकिन चूंकि समवर्ती इकाई परीक्षण समर्थित नहीं है (ऊपर की दो स्थितियों को छोड़कर - विभिन्न XCode संस्करण और विभिन्न सिम्युलेटर डिवाइस) हम संभवतः मैक मिनी के साथ बुनियादी ढांचे के निर्माण के लिए छड़ी करेंगे।
Apple की ये सिम और EULA सीमाएं न केवल बिल्ड पाइपलाइन को धीमा बनाती हैं, बल्कि अनावश्यक जटिलता और लागत को भी जोड़ती हैं। हो सकता है कि यह छोटे ऐप्स के लिए बहुत महत्वपूर्ण न हो, लेकिन जैसे-जैसे ऐप आकार और जटिलता में बढ़ते हैं, बिल्ड एक घंटे से ऊपर ले जा सकता है (मैंने सुना है कि फेसबुक आईओएस बिल्ड में लंबा समय लग सकता है)। कोई यह जानने के लिए एक घंटे इंतजार करना चाहता है कि क्या एक निर्माण पारित हुआ।
हम मैक मिनिस पर ईएसएक्सआई वीएम चलाने जैसे हैक समाधानों के बारे में जानते हैं, जो आधुनिक एक्स बुक प्रो या मैक मिनी, या अलग-अलग लॉगिन खातों पर 10 मिनट से अधिक समय लेने वाले बिल्ड के साथ ओएस एक्स के साथ अच्छा प्रदर्शन नहीं करते हैं। पर्यावरण के लिए नंगे धातु की मशीन पर एक ही Xcode संस्करण और एक ही सिम्युलेटर डिवाइस पर समवर्ती परीक्षण चलाने में सक्षम होने के लिए।
ESXi आधिकारिक तौर पर समर्थित नहीं है, हालांकि यह बहुत अच्छी तरह से काम करता है। VMware मैक मिनी हार्डवेयर का समर्थन नहीं कर सकता है कारणों में से एक अभी तक ECC मेमोरी की कमी है, हालांकि मैक प्रो समर्थित है क्योंकि इसमें ECC मेमोरी है, यह संभावना है कि मैक मिनी के रूप में iOS के संदर्भ में नंगे धातु की तुलना में धीमा बनाता है एक ही हार्डवेयर और सॉफ्टवेयर कॉन्फिग पर परीक्षण (केवल परिवर्तन वीएम बनाम नंगे धातु से चलने वाला ओएस एक्स) है। इस समय हमारे द्वारा MacPro का परीक्षण नहीं किया गया है। हमारे अनुभव में वीएमवेयर फ्यूजन प्रदर्शन के मामले में काफी धीमा है।
अधिक महत्वपूर्ण बात यह है कि डेवलपर्स को लंबे समय तक प्रतीक्षा करने की आवश्यकता होगी जब उपर्युक्त मुद्दों को एक साथ संयोजित किया जाता है जब तक कि मशीनों का पूल बदलावों के पालन के लिए पर्याप्त नहीं होता (प्रत्येक 2 dev के लिए एक CI बिल्ड, डेवलपर के लिए मशीनों का बहुत उच्च अनुपात)। CI बिल्ड मशीनें 1 से अधिक समवर्ती बिल्ड और अधिक समवर्ती परीक्षण चलाने में सक्षम होनी चाहिए।
IOS सिमुलेटर के बारे में अन्य टिप्पणियों में से एक यह है कि वे 7 प्रमुख संस्करणों के बाद भी प्रगति में एक काम लगते हैं और पूरी तरह से अधूरा है। 'Xcrun simctl' उपकमांड में एक --सेट विकल्प होता है जो कुछ प्रकार के लचीलेपन की अनुमति दे सकता है लेकिन यह सुनिश्चित नहीं करता है कि क्या संभव मान मान्य है, और --noxpc के साथ भी। किसी को भी उचित मूल्यों का अनुमान लगाने की आवश्यकता नहीं है और इसके अलावा, एक पुरुष पृष्ठ होना चाहिए जो इस विकल्प को शामिल करता है और शायद उदाहरण। इन 2 दिलचस्प विकल्पों के लिए कुछ उपयोग मामले क्या हैं?
आप कह सकते हैं, अच्छी तरह से किसी भी ऐप को एक बड़े पदचिह्न के लिए डिज़ाइन नहीं किया जाना चाहिए जो चलाने के लिए समवर्ती परीक्षण को वारंट करता है, और XPC के आधार पर बेहतर वास्तुकला का उपयोग कर रहा है, क्योंकि अखंड एप्लिकेशन मुद्दा हैं। यह बहुत अच्छी तरह से सही हो सकता है, यह उतना व्यावहारिक समाधान नहीं है जितना हम उम्मीद कर सकते हैं, और यह मुद्दा बना रहता है यदि आपके पास एक ही बुनियादी ढांचे पर निर्माण करने के लिए 20+ ऐप्स हैं।
उच्च थ्रूपुट के लिए मशीन विन्यास और प्रक्रियाओं को सामान्य और मापनीय बनाने के लिए सिम्युलेटर (ऐप + कोर देव) पर कुछ काम करने की आवश्यकता होगी। यह भी सभी Apple सिम्युलेटर डेवलपर्स और सिम्युलेटर उत्पाद स्वामी (ओं) के बीच उच्च स्तर के सहयोग की आवश्यकता है ताकि किसी भी ध्यान पाने के लिए इस मुद्दे के लिए उत्पाद बैकलॉग को सही ढंग से ऑर्डर करने की आवश्यकता हो :-)