เราจำเป็นต้องทดสอบซอฟต์แวร์ 32 บิตใน Windows 64 บิตหรือไม่


31

ฉันทำงานในทีมพัฒนาซอฟต์แวร์ในฐานะนักพัฒนาซอฟต์แวร์ ฉันทำงานโครงการเดียวกันเป็นเวลาสามปีแล้ว ซอฟต์แวร์นี้เป็นแอพพลิเคชั่น C # แบบเดสก์ท็อปขนาด 32 บิตใน. NET 4 แพลตฟอร์มเป้าหมายของเราใน Windows 7 (เราต้องรองรับ Windows XP จนถึงปีที่แล้ว) ซอฟต์แวร์สื่อสารกับฮาร์ดแวร์ที่กำหนดเองต่างๆซึ่งเขียนไดรเวอร์ที่กำหนดเอง ซอฟต์แวร์การผลิตและไดร์เวอร์ฮาร์ดแวร์เขียนโดยลูกค้าของเรา มีไดรเวอร์ที่แตกต่างกันสำหรับ Windows 32 บิตและ 64 บิต

ในระหว่างขั้นตอนการทดสอบระบบของเราเราดำเนินการกรณีทดสอบทั้งหมด / ส่วนใหญ่ใน Windows 7 ทั้ง 32- บิตและ 64- บิตฉันจำไม่ได้ว่าเรามีข้อผิดพลาดใด ๆ ในซอฟต์แวร์ของเราที่มีอยู่ใน Windows เพียงรสชาติเดียว เมื่อได้รับประสบการณ์นี้ฉันเริ่มสงสัยแล้วเราจำเป็นต้องทดสอบซอฟต์แวร์ 32 บิตบน Windows 64 บิตหรือไม่

มาตรฐานอุตสาหกรรมคืออะไร


1
แอปพลิเคชัน. NET ของคุณมีการอ้างอิงใด ๆ ใน DLLs ดั้งเดิมหรือไม่ ฉันถูกกัดไม่กี่ครั้งเท่านั้นที่ทดสอบบนแพลตฟอร์มเดียวส่วนใหญ่เพราะฉันลืมที่จะทำแพคเกจ x86 native DLLs ด้วยซอฟต์แวร์ของฉันพร้อมกับ x64 DLLs หากคุณเริ่มใช้ห้องสมุดบุคคลที่สามใหม่ห้องสมุดดังกล่าวอาจพยายามโหลด DLL ดั้งเดิมที่อยู่เบื้องหลังและคุณจะไม่สังเกตเห็นจนกว่าจะเกิดปัญหาบนพีซี x86 ฉันต้องเขียนโค้ดที่เลือกว่าจะใช้ DLL ใดขึ้นอยู่กับว่าแอป. NET ของฉันทำงานในโหมด 64 บิตหรือไม่และรหัสนั้นต้องได้รับการทดสอบเช่นกัน
ฟิล

@Phil: จุดสังเกต DLL ใช้ไลบรารีภายนอกจำนวนมาก ฉันเชื่อว่า DLLs เหล่านั้นทั้งหมดจะถูกคอมไพล์สำหรับ x86 แอปพลิเคชันนั้นไม่มีการอ้างอิงใด ๆ กับ Native DLLs แต่เรียกว่า native win32 API
Donotalo

คำตอบ:


31

ข้อผิดพลาดส่วนใหญ่ที่เราพบกับการใช้งานซอฟต์แวร์แบบ 32 บิตบน Windows 64 บิตนั้นเกี่ยวข้องกับตำแหน่งของซอฟต์แวร์ ( Program Files (x86)แทนProgram Files) ตำแหน่งของรีจิสตรีคีย์ (บางตัวถูกพบใน Wow6432Node) เราพบปัญหาเหล่านี้เป็นส่วนใหญ่เพราะเราจำเป็นต้องสื่อสารกับซอฟต์แวร์อื่น (เช่น 32- บิต) และดังนั้นเราจึงจำเป็นต้องทดสอบซอฟต์แวร์ทั้ง 32- บิตและ 64- บิต ...

เมื่อคุณไม่มีปัญหาเหล่านี้ฉันเชื่อว่ามันค่อนข้างปลอดภัยที่จะไม่ทดสอบบนทั้งสองแพลตฟอร์มเมื่อคุณรวบรวมในโหมด 32 บิตอย่างชัดเจน เมื่อคอมไพล์ในรูปแบบ 32 บิตรันไทม์. NET จะทำงานทุกอย่างในโหมด 32 บิตและควรทำงานเช่นเดียวกับโหมด 32 บิตบนแพลตฟอร์ม 32 บิต

จาก64-bit Applications ( MSDN ) แอพพลิเคชั่น 32- บิตจะทำงานในโหมด Wow64 และRunning 32-bit Applications (MSDN) จะอธิบายโหมดนี้โดยละเอียด


คุณกำลังบอกว่าซอฟต์แวร์ 32 บิตหากทำงานบนระบบปฏิบัติการ 64 บิต. NET บนระบบปฏิบัติการนั้นจะเรียกใช้ซอฟต์แวร์ในโหมด 32 บิตซึ่งเหมือนกับการใช้งานซอฟต์แวร์ในระบบปฏิบัติการ 32 บิตใน. NET มีเอกสารอะไรบ้าง?
Donotalo

4
@ Donotalo: คุณควรแจ้งให้คุณทราบเกี่ยวกับสวิตช์พื้นฐานในเครื่องมือจัดการการกำหนดค่า Visual Studio (หรือการตั้งค่าการคอมไพล์ของแต่ละโครงการ) ชื่อ "แพลตฟอร์ม" พร้อมตัวเลือก "x86", "x64" และ "CPU ใด ๆ " เมื่อคุณพบสวิตช์นั้น F1 อาจเป็นเพื่อนของคุณ
Doc Brown

เอกสารถูกเพิ่มเข้าไปในคำตอบของฉัน
David Perfors

1
ปัญหาที่ใหญ่ที่สุดที่เราใช้กับห้องสมุด 32 บิตอื่น ๆ . NET จะล้มเหลวในการโหลดเมื่อเรียกใช้บนเครื่อง 64 บิต
gbjbaanb

1
@gbjbaanb: คุณหมายถึงอย่างแน่นอนเมื่อคุณลืมใช้ "x86" เป็นแพลตฟอร์ม
Doc Brown

23

ซอฟต์แวร์การผลิตและไดร์เวอร์ฮาร์ดแวร์เขียนโดยลูกค้าของเรา แน่นอนว่ามีไดรเวอร์ที่แตกต่างกันสำหรับ Windows 32 บิตและ 64 บิต

ดังนั้นสำหรับ Windows แบบ 32 บิตซอฟต์แวร์ของคุณจะพูดกับไดรเวอร์หนึ่งตัวและใน Windows 64 บิตมันจะพูดกับไดรเวอร์อื่นหรือไม่? ให้เราสมมติว่ามีไดรเวอร์รุ่นใหม่เหล่านี้เป็นระยะ ๆ ดังนั้นเมื่อคุณทดสอบซอฟต์แวร์ของคุณใน Windows 32 บิตคุณจะไม่สามารถแน่ใจได้ว่าจะไม่มีความแตกต่างในไดรเวอร์ 64 บิตซึ่งจะทำให้การรวมซอฟต์แวร์ + ไดรเวอร์ 64 บิตของคุณล้มเหลว และจากมุมมองของผู้ใช้ของคุณมันไม่สำคัญว่าใครจะตำหนิ (คุณหรือผู้เขียนโปรแกรมควบคุม) สิ่งที่พวกเขาเห็นคือระบบที่ไม่ทำงาน ดังนั้นแม้ว่ารหัสของคุณจะไม่มีข้อบกพร่องการทดสอบอาจเปิดเผยข้อผิดพลาดในไดรเวอร์ 64 บิตและการค้นหาข้อผิดพลาดอาจช่วยให้คุณใช้มาตรการที่เหมาะสม (เช่นการส่งรายงานข้อผิดพลาดไปยังผู้เขียนโปรแกรมควบคุม)

แน่นอนว่าเมื่อคุณใช้ไดรเวอร์ทั้งสองนี้มานานหลายปีและคุณมั่นใจมากว่าพฤติกรรมนั้นเหมือนกันทุกประการคุณอาจข้ามการทดสอบสำหรับแพลตฟอร์มเดียวโดยปฏิบัติตามข้อโต้แย้งในคำตอบของ @ DavidPerfors คุณสามารถรันการทดสอบบน Windows 64 บิตได้เฉพาะเมื่อมีไดรเวอร์รุ่นใหม่ให้ใช้งาน ที่จริงแล้วขึ้นอยู่กับความซับซ้อนของไดรเวอร์ประสบการณ์ของคุณและความมั่นใจ

บางสิ่งเพิ่มเติมที่ควรพิจารณา:

  • ระบบปฏิบัติการใดที่คุณใช้มากที่สุด? Windows 32 บิตหรือ 64 บิต หากคุณตัดสินใจที่จะทดสอบเฉพาะในแพลตฟอร์มเดียวให้เลือกแพลตฟอร์มที่ผู้ใช้ของคุณใช้บ่อยที่สุด
  • มีความรุนแรงเพียงใดเมื่อซอฟต์แวร์รุ่นใหม่ใช้งานไม่ได้บนแพลตฟอร์มที่ใช้งานน้อยกว่า ตัวอย่างเช่นลูกค้าของคุณสามารถถอยกลับและติดตั้งรีลีสก่อนหน้านี้ได้ทันทีหรือไม่? พวกเขามีเพียงความไม่สะดวกหรือความสูญเสียทางการเงินที่แท้จริงจากสิ่งนี้? ถ้าเป็นแบบดั้งเดิมการทดสอบบนแพลตฟอร์มเดียวอาจใช้ได้ถ้าเป็นหลังไม่ชัด

16

สมมติฐานเริ่มต้นในแวดวง QA ที่รู้แจ้งคือ "หากคุณไม่ได้ทดสอบมันจะไม่ทำงาน"

เป็นเรื่องจริงที่มักจะเป็นเป้าหมายที่ไม่สามารถเข้าถึงได้ในลักษณะเดียวกับที่วิศวกรแอพพลิเคชั่นอาจต้องการทดสอบหน่วยสำหรับทุกสิ่ง แต่พวกเขาไม่เชื่อว่าพวกเขาจะเข้าถึงมันได้และปล่อยออกมาตามกำหนดเวลา

อย่างไรก็ตามคำถามของคุณสามารถตอบโดยหรือร่วมกับฝ่ายขายและการตลาดเท่านั้น คุณให้พวกเขามีค่าใช้จ่ายในการทดสอบและพวกเขาให้การวิเคราะห์ผลประโยชน์ของตลาด หากการประมาณค่าทั้งสองด้านมีความแม่นยำเพียงพอคำตอบนั้นง่าย

if B > C:
    test_32bit_version()

จากประสบการณ์ของฉันการประมาณการต้นทุนของทุกคนไม่ถูกต้อง เท่าที่อีกด้านหนึ่งของสมการดิลเบิร์ตเคยตัดสินใจ parodied ที่นั่นด้วย "ฉันเพิ่งถามแมว Mittens ของฉัน" หากต้องการปรับปรุงให้ดีขึ้นพวกเขาจำเป็นต้องได้รับการฝึกอบรมด้านวิธีการทางมานุษยวิทยา


สมมติฐานเริ่มต้นในแวดวง QA ที่รู้แจ้งคือ "หากคุณไม่ได้ทดสอบมันจะไม่ทำงาน" - และสมมติฐานเริ่มต้นในแวดวงการดำเนินการคือ "หากคุณไม่ได้ทดสอบให้เตรียมพร้อมที่จะถูกตามล่าเหมือนสุนัขบ้าโดย sysadmins โกรธ" เป็นการยากที่จะทดสอบสถานการณ์ทั้งหมด แต่เป็นความคิดที่ดีที่จะลองอย่างหนักเพื่อทดสอบสถานการณ์ที่สมเหตุสมผลทั้งหมด เป็นเรื่องยากมากที่การโพสต์ชันสูตรของโครงการสิ้นสุดลงการตัดสินใจว่าเวลาที่ใช้ในการทดสอบระบบทำงานได้อย่างเหมาะสมคือเสียเวลา
Rob Moir

6

เห็นว่า 99% ของการติดตั้ง Windows ทั้งหมดของ Windows 7 ขึ้นไปและส่วนที่ดีของ Vista เช่นกันคือ 64 บิตทำไมคุณถึงคิดว่าจะไม่ทดสอบแพลตฟอร์มนั้น
มันไม่ใช่เรื่องง่ายเว้นแต่คุณจะสร้างมาเพื่อกลุ่มผู้ใช้ที่ จำกัด อย่างที่คุณรู้ว่าใช้ Windows 32 บิตและจะทำเช่นนั้นต่อไปตลอดชีวิตของผลิตภัณฑ์ของคุณ

ใช่แล้วทดสอบปัญหา 64 บิต อันที่จริงแล้วพัฒนาบนแพลตฟอร์ม 64 บิตและอาจจัดหาเวอร์ชั่น 64 บิตเป็นมาตรฐานพร้อมกับรุ่นที่รวบรวม 32 บิตเป็นตัวเลือกสำหรับลูกค้าไม่กี่คนที่ไม่ได้อัพเกรดเป็นคอมพิวเตอร์และระบบปฏิบัติการใหม่ในช่วง 6-8 ปีที่ผ่านมา .


1
ฉันเห็นด้วยเป็นส่วนใหญ่ แต่การจัดหาทั้งรุ่น 32 บิตและ 64 บิตเพิ่มความซับซ้อนและอาจไม่ควรทำโดยไม่มีเหตุผลที่ดีขึ้นอยู่กับประสิทธิภาพหรือการทำงาน

4
ฉันเข้าใจความต้องการที่จะจัดหาไบนารี 32 บิต ฉันไม่รู้ว่าเขาควรจะสนใจที่จะจัดหา 64 บิตแบบดั้งเดิมโดยไม่มีเหตุผลที่น่าสนใจหรือไม่

1
ถ้าฉันปล่อยซอฟต์แวร์เดสก์ท็อปที่นี่ในปี 2014 ฉันอาจจะปล่อย 64 บิตเท่านั้น โปรดจำไว้ว่าใน 90s เมื่อมีคนเปลี่ยนจาก DOS เป็น Windows 95? เรามีข้อโต้แย้งที่คล้ายกัน - และเห็นได้ชัดว่า DOS ถูกทิ้งให้อยู่ในผงคลีเหมือนตอนนี้ที่ 32 บิต (อย่างน้อยบนเดสก์ท็อปไม่ใช่แบบฝังหรือแบบเคลื่อนที่)

4
ฉันต้องถาม @jwenting คุณได้รับที่ไหนว่า 99%? คุณช่วยปรับปรุงเรื่องนั้นและโพสต์แหล่งที่มาได้ไหม
Malavos

1
ใช่ฉันไม่เชื่อ 99% เลย โลกธุรกิจยังคงมีการติดตั้ง Windows 32 บิตจำนวนมากระหว่างเครื่องเก่าที่ไม่ได้รับการปรับปรุง (ใช้ Win7 ตั้งแต่ต้น) หรือกลัวความไม่ลงรอยกัน "ส่วนใหญ่" อาจเป็น 64 บิต แต่ฉันไม่น่าเชื่อเลยว่าจะมีเปอร์เซ็นต์ที่สูงมากโดยไม่มีหลักฐานที่ดีมาก
โจ

2

ฉันจะทดสอบตัวติดตั้งในการตั้งค่า Windows ที่แตกต่างกันมากที่สุดเท่าที่จะเป็นไปได้จากประสบการณ์ของฉันตัวติดตั้งนั้นมักจะล้มเหลวในระบบที่แตกต่างกัน

มิฉะนั้นคุณรู้จากประสบการณ์ที่มีให้ซอฟแวร์, โรคจิตมากที่สุดน่าจะเป็นเพียงแค่แสดงใน 32 บิตหรือ 64 บิตและคุณสามารถใช้คำนวณความเสี่ยงบางอย่าง

ประการแรกคุณควรมีรอบการทดสอบจำนวนมากที่มีการเปลี่ยนรหัสน้อยมากระหว่างรอบต่อมาเมื่อคุณเข้าใกล้การจัดส่ง เมื่อใดก็ตามที่คุณสามารถบันทึกคุณสามารถใช้เพื่อสร้างกรณีทดสอบเพิ่มเติมและ / หรืออนุญาตรอบเพิ่มเติม (และเล็กลง) ดังนั้นให้ข้อเสนอแนะที่รวดเร็วยิ่งขึ้น (ความเสี่ยงของการใช้เวลาทดสอบ X อาจมากกว่าความเสี่ยงของการไม่ทดสอบ Y เพราะคุณกำลังทดสอบ X มากเกินไป)

ดังนั้น

  • ลองทดสอบ“ พยานคนอื่น ๆ ” กับสิ่งที่คุณใช้สำหรับรอบการทดสอบต่อไป
  • หากคุณรู้จัก“ ผู้ร่วมงาน” ที่นักพัฒนาของคุณใช้ให้เริ่มจากการทดสอบกับอีกฝ่าย
  • แบ่งกรณีทดสอบขึ้นระหว่าง“ ผู้เห็นเหตุการณ์” เพื่อให้ความคุ้มครองในแต่ละเรื่อง
  • แต่สลับระหว่าง "binnes" ในแต่ละรอบการทดสอบ

2

Nope ในทำนองเดียวกันเมื่อองค์การอาหารและยาทำการทดสอบยาใหม่ในหนูและหนูพวกเขาข้ามการทดสอบลิงและขายเพื่อการบริโภคของมนุษย์

</ การเสียดสี>

ใช่ใช่ใช่ใช่ใช่ ไม่มีอะไรนอกจากความโศกเศร้าในการจัดเก็บซอฟต์แวร์ของคุณหากคุณไม่ได้ทดสอบทุกแพลตฟอร์มที่คุณสามารถทำได้ สิ่งต่าง ๆ อยู่เสมอและสมมติฐานในหัวของนักออกแบบ / ผู้เขียนโคเดอร์ในระหว่างโครงการมักจะเข้าใกล้แบบจำลองในชีวิตจริงเท่านั้น ดังนั้นโปรดทดสอบซอฟต์แวร์ของคุณ โปรด.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.