क्या हमें 64-बिट विंडोज में 32-बिट सॉफ़्टवेयर का परीक्षण करने की आवश्यकता है?


31

मैं सॉफ्टवेयर डेवलपर के रूप में एक सॉफ्टवेयर डेवलपमेंट टीम में काम कर रहा हूं। मैं एक ही प्रोजेक्ट पर तीन साल से काम कर रहा हूं। सॉफ्टवेयर .NET 4. सी में एक 32-बिट डेस्कटॉप आधारित # एप्लिकेशन है। विंडोज 7 में हमारा लक्ष्य प्लेटफॉर्म (हमें पिछले साल तक विंडोज एक्सपी का समर्थन करना था)। सॉफ्टवेयर विभिन्न कस्टम हार्डवेयर के साथ संचार करता है जिसके लिए कस्टम ड्राइवर लिखे जाते हैं। हार्डवेयर मैन्युफैक्चरिंग और ड्राइवर सॉफ्टवेयर हमारे क्लाइंट द्वारा लिखा जाता है। 32-बिट और 64-बिट विंडोज के लिए अलग-अलग ड्राइवर है।

हमारे सिस्टम परीक्षण चरण के दौरान, हम 32-बिट और 64-बिट विंडोज 7 दोनों में सभी / सबसे अधिक परीक्षण मामलों को निष्पादित करते हैं। मुझे याद नहीं आ सकता है कि क्या हमें अपने सॉफ़्टवेयर में कोई बग मिला है जो केवल विंडोज के एक स्वाद में मौजूद है। इस अनुभव के बाद मुझे आश्चर्य होने लगा है कि क्या हमें 64-बिट विंडोज पर 32-बिट सॉफ़्टवेयर का परीक्षण करने की आवश्यकता है?

उद्योग मानक क्या है?


1
क्या आपके .NET एप्लिकेशन की मूल DLL पर कोई निर्भरता है? मुझे मुख्य रूप से केवल एक ही प्लेटफ़ॉर्म पर परीक्षण करने के लिए कुछ समय काटा गया है क्योंकि मैं x64 के मूल DLL को अपने सॉफ़्टवेयर के साथ x64 DLL के साथ पैकेज करना भूल गया था। यदि आप एक नए तीसरे पक्ष के पुस्तकालय का उपयोग करना शुरू करते हैं, तो वह पुस्तकालय भी मूल DLL को पर्दे के पीछे लोड करने का प्रयास कर सकता है, और जब तक यह x86 पीसी पर क्रैश नहीं होता है तब तक आप नोटिस नहीं करेंगे। मुझे यह भी कोड लिखना है कि मेरी .NET ऐप 64-बिट मोड में चल रही है या नहीं, इसके आधार पर कौन से DLL का उपयोग करना है, और उस कोड को भी जांचना होगा।
फिल

@ फिल: प्वाइंट नोट किया। DLL बहुत सारे बाहरी पुस्तकालयों का उपयोग करता है। मेरा मानना ​​है कि उन सभी DLL को x86 के लिए संकलित किया गया है। आवेदन में स्वयं मूल DLL पर निर्भरता नहीं है, लेकिन यह मूल win32 एपीआई को कॉल करता है।
डोनोटालो

जवाबों:


31

64-बिट विंडोज़ पर 32-बिट सॉफ़्टवेयर चलाने के साथ हमने जिन बग्स का सामना किया, उनमें से अधिकांश सॉफ़्टवेयर के स्थान ( Program Files (x86)बजाय Program Files), रजिस्ट्री कुंजियों के स्थान (कुछ Wow6432Node में पाए गए) के साथ करना था। हमें ये समस्याएँ ज़्यादातर थीं क्योंकि हमें दूसरे सॉफ़्टवेयर (32-बिट) के साथ संचार करने की आवश्यकता थी, और इसलिए हमें 32-बिट और 64-बिट दोनों पर सॉफ़्टवेयर का परीक्षण करने की आवश्यकता थी ...

जब आपके पास ये समस्याएं नहीं थीं, तो मेरा मानना ​​है कि जब आप 32-बिट मोड में स्पष्ट रूप से संकलन करते हैं, तो दोनों प्लेटफार्मों पर परीक्षण नहीं करना काफी सुरक्षित है। जब 32-बिट में संकलित किया जाता है, तो .NET रनटाइम 32-बिट मोड में सब कुछ चलाएगा, और इसे 32-बिट प्लेटफॉर्म पर 32-बिट मोड के समान काम करना चाहिए।

के अनुसार 64-बिट अनुप्रयोगों ( MSDN ), 32-बिट अनुप्रयोगों WOW64 मोड में चलाए जा रहे हैं और चल रहा है 32-बिट अनुप्रयोगों (MSDN) और अधिक विस्तार में इस विधा बताते हैं।


क्या आप कह रहे हैं कि 32 बिट सॉफ़्टवेयर यदि 64 बिट OS पर चलता है, तो उस OS पर .NET 32 बिट मोड में सॉफ़्टवेयर चलाएगा - जो कि .NET में 32 बिट OS में सॉफ़्टवेयर चलाने के समान है? क्या कोई दस्तावेज है?
डोनोटालो

4
@ डोनोटालो: आपको अपने "एक्स86", "एक्स 64" और "एनी सीपीयू" विकल्पों के साथ, अपने विजुअल स्टूडियो कॉन्फ़िगरेशन मैनेजर (या "प्लेटफ़ॉर्म" नामक प्रत्येक प्रोजेक्ट के संकलन सेटिंग्स) में मूल स्विच के बारे में सूचित करना चाहिए। जब आपको वह स्विच मिल गया, तो F1 शायद आपका दोस्त है।
डॉक्टर ब्राउन

दस्तावेज़ीकरण मेरे जवाब में जोड़ा गया है
डेविड परफोर्स

1
हमारे पास जो सबसे बड़ा मुद्दा था वह अन्य 32 बिट लाइब्रेरी के साथ चल रहा था। .NET 64-बिट मशीन पर चलने पर बस उन्हें लोड करने में विफल होगा।
gbjbaanb

1
@ जीबीजैनब: आपका निश्चित रूप से मतलब है, जब आप प्लेटफॉर्म के रूप में "x86" का उपयोग करना भूल गए।
डॉक ब्राउन

23

हार्डवेयर मैन्युफैक्चरिंग और ड्राइवर सॉफ्टवेयर हमारे क्लाइंट द्वारा लिखा जाता है। 32 बिट और 64 बिट विंडोज के लिए अलग-अलग ड्राइवर है।

तो 32 बिट विंडोज पर, आपका सॉफ्टवेयर एक ड्राइवर से बात करता है, और 64 बिट विंडोज पर, यह एक अलग से बात करता है? आइए हम मान लें कि समय-समय पर इन ड्राइवरों के नए संस्करण हैं। इसलिए जब आप केवल 32 बिट विंडोज पर अपने सॉफ़्टवेयर का परीक्षण करते हैं, तो आप सुनिश्चित नहीं कर सकते कि 64 बिट ड्राइवर में कुछ अंतर नहीं होंगे जो आपके सॉफ़्टवेयर + 64 बिट ड्राइवर के संयोजन को विफल कर देगा। और आपके उपयोगकर्ताओं के दृष्टिकोण से, इससे कोई फर्क नहीं पड़ता कि किसे दोष देना है (आप या ड्राइवर के लेखक), वे सभी देखते हैं कि यह एक गैर-कार्य प्रणाली है। तो भले ही आपका कोड बग से मुक्त हो, एक परीक्षण 64 बिट ड्राइवर में बग को प्रकट कर सकता है, और इस तरह के बग को खोजने से आपको सही उपाय करने में मदद मिल सकती है (जैसे ड्राइवर के लेखक को एक बग रिपोर्ट भेजना)।

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

विचार करने के लिए कुछ अतिरिक्त बातें:

  • आपके उपयोगकर्ता का सबसे अधिक उपयोग करने वाला OS प्रकार क्या है? 32 बिट या 64 बिट विंडोज? यदि आप केवल एक ही प्लेटफ़ॉर्म पर परीक्षण करने का निर्णय लेते हैं, तो वह चुनें जिसे आपके उपयोगकर्ता सबसे अधिक बार उपयोग करते हैं।
  • यह कितना गंभीर है जब सॉफ्टवेयर का एक नया रिलीज कम अक्सर इस्तेमाल किए जाने वाले प्लेटफॉर्म पर काम नहीं करेगा? उदाहरण के लिए, क्या आपके ग्राहक तुरंत वापस काम कर सकते हैं और पिछले कामकाजी रिलीज को स्थापित कर सकते हैं? क्या इसके द्वारा उन्हें केवल कुछ असुविधा या वास्तविक वित्तीय हानि होती है? यदि यह पूर्व है, तो केवल एक ही प्लेटफॉर्म पर परीक्षण ठीक हो सकता है, अगर यह बाद वाला है, तो स्पष्ट रूप से नहीं।

16

प्रबुद्ध क्यूए सर्कल में डिफ़ॉल्ट धारणा "यदि आपने इसका परीक्षण नहीं किया है, तो यह काम नहीं करता है"।

एक व्यावहारिक मामले के रूप में जो आमतौर पर एक अप्राप्य लक्ष्य है, उसी तरह से प्रयास करने के लिए जिस तरह से आवेदन इंजीनियरों को हर चीज के लिए यूनिट-टेस्ट करना पसंद हो सकता है; लेकिन उन्हें विश्वास नहीं है कि वे कभी भी पहुँचेंगे और समय पर रिलीज़ करेंगे।

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

if B > C:
    test_32bit_version()

मेरे अनुभव में, सभी की लागत के अनुमान गलत हैं। जहाँ तक समीकरण के दूसरे पक्ष की बात है, दिलबर्ट ने एक बार "मैं सिर्फ अपनी बिल्ली, मिट्टन्स से पूछा" के साथ वहाँ निर्णय लिया। बहुत बेहतर करने के लिए, उन्हें मानवविज्ञानी क्षेत्र के तरीकों में प्रशिक्षण की आवश्यकता होगी।


प्रबुद्ध क्यूए सर्कल में डिफ़ॉल्ट धारणा "यदि आपने इसका परीक्षण नहीं किया है, तो यह काम नहीं करता है"। - और संचालन मंडलियों में डिफ़ॉल्ट धारणा है "यदि आपने इसका परीक्षण नहीं किया है, तो गुस्से में sysadmins द्वारा एक पागल कुत्ते की तरह शिकार करने के लिए तैयार रहें"। सभी परिदृश्यों का परीक्षण करना कठिन है, लेकिन सभी उचित लोगों को परखने की कोशिश करना एक अच्छा विचार है। यह बहुत ही दुर्लभ है कि एक प्रोजेक्ट पोस्टमार्टम यह तय करने में समाप्त हो जाता है कि किसी सिस्टम के काम को ठीक से परीक्षण करने में लगा समय बर्बाद हो गया।
रोब मोइर

6

विंडोज 7 और ऊपर के सभी विंडोज इंस्टॉलेशन के 99% के रूप में, और विस्टा के एक अच्छे हिस्से के रूप में देख रहे हैं, 64 बिट हैं, तो आप उस प्लेटफॉर्म के लिए परीक्षण क्यों नहीं करेंगे?
यह सिर्फ एक नो-ब्रेनर है, जब तक कि आप इसे विशेष रूप से सीमित उपयोगकर्ताओं के समूह के लिए नहीं बना रहे हैं जिन्हें आप जानते हैं कि आप 32 बिट विंडोज का उपयोग कर रहे हैं और अपने उत्पाद के जीवन के लिए ऐसा करना जारी रखेंगे।

तो हाँ, 64 बिट समस्याओं के लिए परीक्षण करें। वास्तव में 64 बिट प्लेटफार्मों पर विकसित होता है, और शायद 64 बिट संस्करण की आपूर्ति मानक के रूप में 32 बिट संकलित संस्करण उन कुछ ग्राहकों के लिए एक विकल्प के रूप में करता है, जिन्होंने पिछले 6-8 वर्षों में नए कंप्यूटर और ओएस में अपग्रेड नहीं किया है। ।


1
मैं ज्यादातर कॉनक्योर करता हूं, लेकिन 32 और 64 बिट संस्करणों की आपूर्ति जटिलता को जोड़ती है और शायद प्रदर्शन या कार्यक्षमता के आधार पर एक अच्छा तर्क के बिना नहीं किया जाना चाहिए।

4
मैं 32 बिट बायनेरिज़ की आपूर्ति करने की आवश्यकता को समझता हूं। मुझे नहीं पता कि क्या वह बिना किसी सम्मोहक कारण के ६४ बिट्स की आपूर्ति करने के लिए परेशान होना चाहिए।

1
अगर मैं 2014 में यहां डेस्कटॉप सॉफ़्टवेयर जारी कर रहा था, तो मैं शायद केवल 64 बिट बायनेरिज़ रिलीज़ करूंगा। 90 के दशक में याद है जब लोग डॉस से विंडोज 95 में संक्रमण कर रहे थे? हमारे पास एक समान तर्क था - और स्पष्ट रूप से डॉस धूल में छोड़ दिया गया था, जैसे कि 32 बिट अब (कम से कम डेस्कटॉप पर, एम्बेडेड या मोबाइल नहीं है)।

4
मुझे @jwenting पूछना चाहिए। आपको कहां से मिला कि यह 99% है? क्या आप उस पर सुधार कर सकते हैं और स्रोत को पोस्ट कर सकते हैं?
मालवोस

1
हाँ, मुझे विश्वास नहीं है कि 99% बिल्कुल नहीं है। व्यापार दुनिया अभी भी एक है बहुत कुछ असंगतियां के डर से वहाँ 32 बिट विंडोज प्रतिष्ठानों की, पुरानी मशीनों के बीच अद्यतन नहीं (शुरुआती दिनों से Win7 चल) या बाहर। "बहुमत" शायद 64 बिट है, लेकिन मैं बहुत अच्छे सबूतों के बिना किसी भी उच्च प्रतिशत पर विश्वास करने की बहुत संभावना नहीं हूं।
जो

2

मैं किसी भी इंस्टॉलर को कई अलग-अलग विंडोज सेटअपों पर परीक्षण करूंगा क्योंकि मेरे अनुभव से इंस्टॉलर विभिन्न प्रणालियों पर विफल होने की संभावना है।

अन्यथा, जैसा कि आप दिए गए सॉफ़्टवेयर के साथ अपने अनुभव से जानते हैं, बग्स को केवल 32-बिट या 64-बिट पर दिखाने की संभावना नहीं है , और आप कुछ गणना जोखिम उठा सकते हैं।

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

इसलिये

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

2

नहीं। इसी तरह, जब एफडीए को चूहों और चूहों पर नई दवाओं का परीक्षण किया जाता है, तो वे बंदरों पर परीक्षण करना छोड़ देते हैं और इसे मानव उपभोग के लिए बेच देते हैं।

</ कटाक्ष>

हाँ हाँ हाँ हाँ हाँ। आपके सॉफ़्टवेयर के लिए स्टोर में दुःख के अलावा कुछ भी नहीं है यदि आप हर प्लेटफ़ॉर्म का परीक्षण नहीं करते हैं जो आप संभवतः कर सकते हैं। चीजें हमेशा अलग होती हैं, और परियोजना के दौरान डिजाइनर / कोडर के सिर में धारणा आमतौर पर केवल वास्तविक जीवन के मॉडलिंग के करीब आती है। तो कृपया, अपने सॉफ़्टवेयर का परीक्षण करें। कृप्या।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.