Chúng ta có cần kiểm tra phần mềm 32 bit trong Windows 64 bit không?


31

Tôi đang làm việc trong một nhóm phát triển phần mềm với tư cách là nhà phát triển phần mềm. Tôi đã làm việc trên cùng một dự án trong ba năm nay. Phần mềm này là ứng dụng C # dành cho máy tính để bàn 32 bit trong .NET 4. Nền tảng mục tiêu của chúng tôi trong Windows 7 (chúng tôi phải hỗ trợ Windows XP cho đến năm ngoái). Phần mềm giao tiếp với các phần cứng tùy chỉnh khác nhau mà trình điều khiển tùy chỉnh được viết. Phần mềm điều khiển và sản xuất phần cứng được viết bởi khách hàng của chúng tôi. Tất nhiên, có trình điều khiển khác nhau cho Windows 32 bit và 64 bit.

Trong giai đoạn thử nghiệm hệ thống của chúng tôi, chúng tôi thực hiện tất cả / hầu hết các trường hợp thử nghiệm trong cả Windows 32 bit và 64 bit. Tôi không thể nhớ lại nếu chúng tôi có bất kỳ lỗi nào trong phần mềm chỉ tồn tại trong một hương vị của Windows. Có trải nghiệm này tôi đã bắt đầu tự hỏi, chúng ta có thực sự cần phải kiểm tra phần mềm 32 bit trên Windows 64 bit không?

Tiêu chuẩn công nghiệp là gì?


1
Ứng dụng .NET của bạn có bất kỳ sự phụ thuộc nào vào DLL gốc không? Tôi đã bị cắn vài lần chỉ thử nghiệm trên một nền tảng chủ yếu vì tôi quên gói gói DLL gốc x86 với phần mềm của tôi cùng với DLL x64. Nếu bạn bắt đầu sử dụng thư viện bên thứ ba mới, thư viện đó cũng có thể cố tải các tệp DLL gốc phía sau hậu trường và bạn sẽ không nhận thấy cho đến khi nó gặp sự cố trên PC x86. Tôi cũng đã phải viết mã chọn DLL nào để sử dụng dựa trên việc ứng dụng .NET của tôi có chạy ở chế độ 64 bit hay không và mã đó cũng cần phải được kiểm tra.
Phil

@Phil: Điểm lưu ý. DLL sử dụng rất nhiều thư viện bên ngoài. Tôi tin rằng tất cả các DLL đó được biên dịch cho x86. Bản thân ứng dụng không có bất kỳ sự phụ thuộc nào vào DLL gốc, nhưng nó gọi API win32 gốc.
Donotalo

Câu trả lời:


31

Hầu hết các lỗi chúng tôi gặp phải khi chạy phần mềm 32 bit trên các cửa sổ 64 bit là do vị trí của phần mềm ( Program Files (x86)thay vì Program Files), vị trí của các khóa đăng ký (một số được tìm thấy trong Wow6432Node). Chúng tôi gặp phải những vấn đề này chủ yếu là do chúng tôi cần giao tiếp với các phần mềm khác (cũng là 32 bit) và vì vậy chúng tôi cần kiểm tra phần mềm trên cả 32 bit và 64 bit ...

Khi bạn không gặp phải những vấn đề này, tôi tin rằng khá an toàn khi không kiểm tra trên cả hai nền tảng khi bạn biên dịch rõ ràng ở chế độ 32 bit. Khi được biên dịch ở chế độ 32 bit, thời gian chạy .NET sẽ chạy mọi thứ ở chế độ 32 bit và nó sẽ hoạt động giống như chế độ 32 bit trên nền tảng 32 bit.

Theo Ứng dụng 64 bit ( MSDN ), các ứng dụng 32 bit được chạy ở chế độ Wow64 và Chạy Ứng dụng 32 bit (MSDN) giải thích chế độ này chi tiết hơn.


Bạn đang nói rằng một phần mềm 32 bit nếu chạy trên HĐH 64 bit, .NET trên HĐH đó sẽ chạy phần mềm ở chế độ 32 bit - giống như chạy phần mềm trong HĐH 32 bit trong .NET? Có tài liệu nào không?
Donotalo

4
@Donotalo: bạn nên thông báo cho mình về công tắc cơ bản trong trình quản lý cấu hình Visual Studio (hoặc từng cài đặt biên dịch của dự án) có tên là "nền tảng", với các tùy chọn "x86", "x64" và "Bất kỳ CPU" nào. Khi bạn tìm thấy công tắc đó, F1 có lẽ là bạn của bạn.
Doc Brown

Tài liệu được thêm vào câu trả lời của tôi
David Perfors

1
Vấn đề lớn nhất mà chúng tôi gặp phải là chạy với các thư viện 32 bit khác, .NET đơn giản là không tải được chúng khi chạy trên máy 64 bit.
gbjbaanb

1
@gbjbaanb: bạn chắc chắn có nghĩa là, khi bạn quên sử dụng "x86" làm nền tảng.
Doc Brown

23

Phần mềm điều khiển và sản xuất phần cứng được viết bởi khách hàng của chúng tôi. Có trình điều khiển khác nhau cho Windows 32 bit và 64 bit.

Vậy trên Windows 32 bit, phần mềm của bạn nói chuyện với một trình điều khiển và trên Windows 64 bit, phần mềm này nói chuyện với một trình điều khiển khác? Chúng ta hãy giả sử có các phiên bản mới của các trình điều khiển theo thời gian. Vì vậy, khi bạn chỉ kiểm tra phần mềm của mình trên Windows 32 bit, bạn không thể chắc chắn sẽ không có một số khác biệt trong trình điều khiển 64 bit, điều này sẽ khiến cho sự kết hợp giữa phần mềm + trình điều khiển 64 bit của bạn không thành công. Và theo quan điểm của người dùng của bạn, việc ai là người có lỗi (bạn hoặc tác giả của trình điều khiển) không quan trọng, tất cả những gì họ thấy là một hệ thống không hoạt động. Vì vậy, ngay cả khi mã của bạn không có lỗi, kiểm tra có thể phát hiện ra lỗi trong trình điều khiển 64 bit và việc tìm ra lỗi như vậy có thể giúp bạn thực hiện các biện pháp phù hợp (như gửi báo cáo lỗi cho tác giả của trình điều khiển).

Tất nhiên, khi bạn đã sử dụng hai trình điều khiển đó trong nhiều năm và bạn rất tự tin rằng hành vi này hoàn toàn giống nhau, bạn có thể bỏ qua các bài kiểm tra cho một nền tảng, theo các lập luận trong câu trả lời của @ DavidPerfors. Như một thỏa hiệp, bạn chỉ có thể chạy thử nghiệm trên Windows 64 bit bất cứ khi nào có phiên bản trình điều khiển mới. Trên thực tế, điều này phụ thuộc vào sự phức tạp của các trình điều khiển, kinh nghiệm của bạn và sự tự tin vào chúng.

Một số điều bổ sung cần xem xét:

  • loại hệ điều hành nào là cơ sở người dùng của bạn sử dụng nhiều nhất? Windows 32 bit hay 64 bit? Nếu bạn quyết định chỉ kiểm tra trên một nền tảng, hãy chọn nền tảng mà người dùng của bạn sử dụng thường xuyên nhất.
  • nó nghiêm trọng đến mức nào khi một bản phát hành mới của phần mềm sẽ không hoạt động trên nền tảng ít được sử dụng hơn? Ví dụ, khách hàng của bạn có thể lập tức lùi lại và cài đặt bản phát hành làm việc trước đó không? Họ chỉ có một số bất tiện hoặc tổn thất tài chính thực sự bởi điều này? Nếu nó là cái trước, thử nghiệm trên chỉ một nền tảng có thể tốt, nếu nó là cái sau, rõ ràng là không.

16

Giả định mặc định trong các vòng tròn QA đã giác ngộ là "Nếu bạn không kiểm tra nó, thì nó không hoạt động".

Như một vấn đề thực tế thường là mục tiêu không thể đạt được để phấn đấu theo cách tương tự như các kỹ sư ứng dụng có thể muốn có các bài kiểm tra đơn vị cho mọi thứ; nhưng họ không tin rằng họ sẽ đạt được nó và phát hành theo lịch trình.

Tuy nhiên, câu hỏi của bạn chỉ có thể được trả lời bằng, hoặc kết hợp với bán hàng và tiếp thị. Bạn cung cấp cho họ một chi phí để kiểm tra và họ cung cấp một phân tích về lợi ích thị trường. Nếu ước tính của cả hai bên là đủ chính xác, câu trả lời sẽ đơn giản

if B > C:
    test_32bit_version()

Theo kinh nghiệm của tôi, ước tính chi phí của mọi người là không chính xác. Về phía bên kia của phương trình, Dilbert đã từng nhại lại việc đưa ra quyết định ở đó với "Tôi vừa hỏi con mèo của tôi, Găng". Để làm tốt hơn nhiều, họ cần được đào tạo về phương pháp nhân học.


Giả định mặc định trong các vòng tròn QA đã giác ngộ là "Nếu bạn không kiểm tra nó, thì nó không hoạt động". - và giả định mặc định trong các vòng tròn hoạt động là "Nếu bạn không kiểm tra nó, thì hãy chuẩn bị để bị săn lùng như một con chó dại bởi những sysadins tức giận". Thật khó để kiểm tra tất cả các kịch bản nhưng tốt nhất là bạn nên cố gắng kiểm tra tất cả các kịch bản hợp lý. Rất hiếm khi một khám nghiệm tử thi dự án kết thúc quyết định rằng thời gian thử nghiệm một hệ thống hoạt động đúng cách là lãng phí thời gian.
Rob Moir

6

Nhìn thấy 99% tất cả các cài đặt Windows của Windows 7 trở lên và một phần tốt của Vista là 64 bit, tại sao bạn thậm chí sẽ cân nhắc việc không thử nghiệm nền tảng đó?
Đó chỉ là một người không có trí tuệ, trừ khi bạn đặc biệt dành cho một nhóm người dùng rất hạn chế mà bạn BIẾT đang sử dụng Windows 32 bit và sẽ tiếp tục làm như vậy cho vòng đời của sản phẩm.

Vì vậy, yeah, kiểm tra cho các vấn đề 64 bit. Trên thực tế, phát triển trên nền tảng 64 bit và có thể cung cấp phiên bản 64 bit theo tiêu chuẩn với phiên bản được biên dịch 32 bit làm tùy chọn cho một số khách hàng chưa nâng cấp lên máy tính và HĐH mới trong 6-8 năm qua. .


1
Tôi đồng tình chủ yếu, nhưng việc cung cấp cả hai phiên bản 32 và 64 bit làm tăng thêm sự phức tạp và có lẽ không nên thực hiện nếu không có cơ sở hợp lý dựa trên hiệu suất hoặc chức năng.

4
Tôi hiểu sự cần thiết phải cung cấp nhị phân 32 bit. Tôi chỉ không biết liệu anh ta có nên cung cấp những bản 64 bit mà không có lý do thuyết phục hay không.

1
Nếu tôi phát hành phần mềm máy tính để bàn ở đây vào năm 2014, có lẽ tôi sẽ chỉ phát hành nhị phân 64 bit. Bạn có nhớ những năm 90 khi mọi người chuyển từ DOS sang Windows 95 không? Chúng tôi đã có một cuộc tranh luận tương tự sau đó - và rõ ràng DOS bị bỏ lại trong bụi, giống như bây giờ là 32 bit (ít nhất là trên máy tính để bàn, không được nhúng hoặc di động).

4
Tôi phải hỏi @jwenting. Bạn đã lấy nó ở đâu 99%? Bạn có thể cải thiện điều đó và đăng nguồn?
Malavos

1
Vâng, tôi không tin 99% chút nào. Thế giới kinh doanh vẫn còn rất nhiều cài đặt Windows 32 bit ngoài kia, giữa các máy cũ không được cập nhật (chạy Win7 từ những ngày đầu) hoặc vì sợ không tương thích. "Đa số" có lẽ là 64 bit, nhưng tôi rất khó tin bất kỳ tỷ lệ rất cao nào nếu không có bằng chứng rất tốt.
Joe

2

Tôi sẽ kiểm tra bất kỳ trình cài đặt nào trên càng nhiều thiết lập Windows khác nhau càng tốt theo kinh nghiệm của tôi, các trình cài đặt rất có thể bị lỗi trên các hệ thống khác nhau.

Nếu không, như bạn đã biết từ bạn kinh nghiệm với cho phần mềm, lỗi không có khả năng nhất để chỉ hiển thị trên 32-bit hoặc 64-bit, và bạn có thể mất một số rủi ro tính toán.

Đầu tiên, bạn nên có nhiều chu kỳ kiểm tra với rất ít mã thay đổi giữa các chu kỳ sau khi bạn tiến gần đến vận chuyển. Bất cứ lúc nào bạn có thể lưu, bạn có thể sử dụng để tạo thêm các trường hợp thử nghiệm và / hoặc cho phép nhiều chu kỳ (và do đó nhỏ hơn), do đó cung cấp phản hồi nhanh hơn. (Rủi ro dành thời gian kiểm tra X có thể nhiều hơn rủi ro không kiểm tra Y, vì bạn đang kiểm tra X quá nhiều.)

vì thế

  • Hãy thử kiểm tra trên bit khác bitness khác với những gì bạn đã sử dụng cho chu kỳ kiểm tra tiếp tục.
  • Nếu bạn biết tính năng bit bit của nhà phát triển mà bạn sử dụng, hãy bắt đầu với thử nghiệm trên cái khác.
  • Phân chia các trường hợp thử nghiệm giữa bit bit bit tinh tế để cung cấp bảo hiểm cho mỗi
  • Nhưng trao đổi chúng giữa các bin binnes trên mỗi chu kỳ thử nghiệm.

2

Không. Tương tự như vậy, khi FDA hoàn thành thử nghiệm các loại thuốc mới trên chuột và chuột, họ bỏ qua việc thử nghiệm trên khỉ và chỉ bán nó cho con người.

</ mỉa mai>

Vâng, vâng vâng vâng vâng. Không có gì ngoài nỗi buồn trong cửa hàng cho phần mềm của bạn nếu bạn không kiểm tra mọi nền tảng bạn có thể. Mọi thứ luôn khác nhau, và các giả định trong đầu của nhà thiết kế / lập trình viên trong dự án thường chỉ đến gần với mô hình thực tế. Vì vậy, xin vui lòng, kiểm tra phần mềm của bạn. Xin vui lòng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.