64 bit Windows'da 32 bit yazılımı test etmemize gerek var mı?


31

Bir yazılım geliştirme ekibinde yazılım geliştirici olarak çalışıyorum. Üç yıldır aynı proje üzerinde çalışıyorum. Yazılım, .NET 4'te 32 bitlik bir masaüstü tabanlı C # uygulamasıdır. Windows 7'deki hedef platformumuz (geçen yıla kadar Windows XP'yi desteklemek zorunda kaldık). Yazılım, özel sürücülerin yazıldığı çeşitli özel donanımlarla iletişim kurar. Donanım üretimi ve sürücü yazılımı müşterimiz tarafından yazılmıştır. Tabii ki 32-bit ve 64-bit Windows için farklı bir sürücü var.

Sistem sınama aşamasında, tüm / çoğu sınama durumlarını hem 32-bit hem de 64-bit Windows 7'de gerçekleştiriyoruz. Yazılımımızda yalnızca bir Windows tadı bulunan bir hata olup olmadığını hatırlayamıyorum. Merak etmeye başladığım bu deneyime sahip olarak, 64 bit Windows'ta 32 bit yazılımı gerçekten test etmemize gerek var mı?

Endüstri standardı nedir?


1
.NET uygulamanızın yerel DLL'lere bağımlılığı var mı? X86 yerel DLL'leri x64 DLL'lerle birlikte yazılımımla birlikte paketlemeyi unuttuğum için birkaç kez yalnızca bir platformda test edildiğim için ısırıldım. Yeni bir üçüncü taraf kitaplığı kullanmaya başlarsanız, bu kitaplık ayrıca sahnelerin arkasına yerel DLL'ler yüklemeyi deneyebilir ve bir x86 PC'sinde çökmesine kadar farketmezsiniz. Ayrıca, .NET uygulamamın 64 bit modunda çalışıp çalışmadığına bağlı olarak hangi DLL'lerin kullanılacağını seçen bir kod yazmak zorunda kaldım ve bu kodun da test edilmesi gerekiyor.
Phil

@Phil: Nokta not edildi. DLL, çok sayıda dış kitaplık kullanır. Bütün bu DLL'lerin x86 için derlendiğine inanıyorum. Uygulamanın kendisi yerel DLL'lere bağımlı değildir, ancak yerel win32 API'sini çağırır.
Donotalo

Yanıtlar:


31

64 bit pencerelerde 32 bit yazılım çalıştırırken karşılaştığımız hataların çoğu, yazılımın konumu ( Program Files (x86)bunun yerine Program Files), kayıt defteri anahtarlarının (bazıları Wow6432Node'da bulundu) konumlarıyla ilgiliydi. Bu problemleri çoğunlukla yaşadık çünkü diğer yazılımlarla (ayrıca 32-bit) iletişim kurmamız gerekti ve bu yüzden yazılımı hem 32-bit hem de 64-bit üzerinde test etmemiz gerekti ...

Bu sorunları yaşamadığınızda, 32-bit modunda açıkça derleme yaptığınızda her iki platformda da test yapmamanın oldukça güvenli olduğuna inanıyorum. 32 bitde derlendiğinde, .NET çalışma zamanı her şeyi 32 bit modda çalıştırır ve 32 bit platformlarda 32 bit modla aynı şekilde çalışması gerekir.

Göre 64 bit Applications ( MSDN ), 32-bit uygulamalar Wow64 modunda çalıştırılır ve Koşu 32 bit Uygulamaları (MSDN) daha ayrıntılı olarak bu modu açıklıyor.


64 bit işletim sisteminde çalışıyorsa 32 bit yazılımın, işletim sistemindeki .NET'in yazılımı 32 bit modunda çalıştıracağını mı söylüyorsunuz - bu, yazılımı 32 bit işletim sisteminde .NET'te çalıştırmakla aynıdır? Herhangi bir dokümantasyon var mı?
Donotalo

4
@Donotalo: "x86", "x64" ve "Any CPU" seçenekleriyle, Visual Studio yapılandırma yöneticinizdeki (veya her projenin derleme ayarları) "Temel" adlı temel anahtar hakkında bilgi vermelisiniz. Bu anahtarı bulduğunda, F1 muhtemelen senin arkadaşın.
Doc Brown,

Belgelerime cevabımı eklendi
David perfors

1
En büyük sorun diğer 32 bit kitaplıklarla çalışıyor olmamızdı. .NET 64 bitlik bir makinede çalıştırırken bunları yüklemeyi başaramazdı.
gbjbaanb

1
@gbjbaanb: "x86" 'yı platform olarak kullanmayı unuttuğunuzda, kesinlikle demek istediniz.
Doc Brown

23

Donanım üretimi ve sürücü yazılımı müşterimiz tarafından yazılmıştır. Tabii ki 32 bit ve 64 bit Windows için farklı bir sürücü var.

Yani 32 bit Windows'ta, yazılımınız bir sürücüyle, 64 bit Windows'ta ise farklı bir sürücüyle mi konuşuyor? Bu sürücülerin zaman zaman yeni sürümleri olduğunu varsayalım. Bu nedenle, yalnızca 32 bit Windows'ta yazılımınızı test ettiğinizde, 64 bit sürücüde yazılım + 64 bit sürücünün birleşiminin başarısız olmasını sağlayacak bazı farklar olmayacağından emin olamazsınız. Ve kullanıcılarınızın bakış açısına göre, kimi suçlayacağınız önemli değildir (siz veya sürücünün yazarı), tek gördükleri çalışmayan bir sistemdir. Yani bile senin kodunuz hatasız , bir test 64 bit sürücüdeki bir hatayı ortaya çıkarabilir ve böyle bir hatayı bulmak doğru önlemleri almanıza yardımcı olabilir (sürücünün yazarına bir hata raporu göndermek gibi).

Tabii ki, bu iki sürücüyü yıllarca kullandığınızda ve davranışların tamamen aynı olduğundan emin olduğunuzda, @ DavidPerfors'ın cevabındaki argümanları takip ederek bir platformdaki testleri geçebilirsiniz. Bir uzlaşma olarak, yalnızca yeni bir sürücü sürümü mevcut olduğunda 64 bit Windows'ta testler yapabilirsiniz. Aslında bu, sürücülerin karmaşıklığına, deneyimlerinize ve onlara güvenmenize bağlıdır.

Dikkate alınması gereken bazı ek noktalar:

  • Kullanıcı tabanınız en çok hangi işletim sistemi türünü kullanıyor? 32 bit veya 64 bit Windows? Yalnızca bir platformda test etmeye karar verirseniz, kullanıcılarınızın en sık kullandıklarını seçin.
  • Yazılımın yeni bir sürümü daha az kullanılan bir platformda işe yaramazsa ne kadar şiddetlidir? Örneğin, müşterileriniz hemen geri adım atıp önceki çalışma sürümünü yükleyebilir mi? Sadece bunun için bir miktar rahatsızlık veya gerçek finansal kayıp var mı? Eskiyse, yalnızca bir platformda test yapmak iyi olabilir, ikincisi ise, açıkça değil.

16

Aydınlanmış KG dairelerinde varsayılan varsayım, "Eğer test etmediyseniz, çalışmaz" dır.

Uygulama mühendisleri her şey için birim testleri yapmak isteyebilirler, aynı şekilde çabalamak genellikle erişilmez bir amaç olarak pratik bir mesele olarak; ama asla ulaşacaklarına ve programa başlayacaklarına inanmıyorlar.

Ancak, sorunuza yalnızca satış ve pazarlama ile birlikte ya da bunlarla birlikte cevap verilebilir. Onlara test etmeleri için bir maliyet sunarsınız ve piyasa yararının bir analizini yaparlar. Her iki taraftaki tahminler yeterince doğru olsaydı, cevap basit olurdu

if B > C:
    test_32bit_version()

Tecrübelerime göre herkesin maliyet tahminleri yanlış. Denklemin diğer tarafına gelince, Dilbert bir keresinde “Kedime Mittens'e sordum” kararını vermiştir. Daha iyisini yapmak için antropolojik alan yöntemleri konusunda eğitime ihtiyaçları var.


Aydınlanmış KG dairelerinde varsayılan varsayım, "Eğer test etmediyseniz, işe yaramaz" dır. - ve operasyon çevrelerindeki varsayılan varsayım "Eğer test etmediyseniz, kızgın sysadmins tarafından kuduz bir köpek gibi avlanmaya hazır olun" şeklindedir. Tüm senaryoları test etmek zor ama makul olanları test etmek için denemek zor bir fikir. Bir proje sonrası mortem'in bir sistemin düzgün çalışıp çalışmadığını test etmek için harcanan zamanın boşa harcandığına karar vermesi çok nadirdir.
Rob Moir

6

Windows 7 ve üzeri tüm Windows kurulumlarının% 99'unu ve Vista'nın iyi bir bölümünü 64 bit olarak görmek, neden bu platform için test etmeyi düşünmüyorsunuz?
Bilmeniz gereken, sadece BNOW 32 bit Windows kullandığınız çok sınırlı bir kullanıcı grubu için yapmadığınız sürece ve bunu ürününüzün ömrü boyunca yapmaya devam edecektir.

Yani evet, 64 bitlik problemleri test edin. Aslında 64 bit platformlarda geliştiriliyor ve muhtemelen 6-8 yıl içinde yeni bir bilgisayara ve işletim sistemine yükseltme yapmamış birkaç müşteriye seçenek olarak 32 bitlik derlenmiş bir sürümle standart olarak 64 bitlik bir sürüm sağlıyor. .


1
Çoğunlukla hemfikirim, ancak hem 32 hem de 64 bit sürümleri sağlamak, karmaşıklığı artırıyor ve muhtemelen performans veya işlevsellik temelinde iyi bir gerekçe olmadan yapılmamalıdır.

4
32 bit ikili beslemenin gerekliliğini anlıyorum. Zorlayıcı bir sebep olmadan yerli 64 bit temin etmek için uğraşması gerekip gerekmediğini bilmiyorum.

1
2014 yılında burada masaüstü yazılımı piyasaya sürseydim, muhtemelen sadece 64 bit ikili dosya yayınlardım. 90'lı yıllarda insanlar DOS'tan Windows 95'e geçerken hatırlıyor musunuz? Öyleyse benzer bir argüman vardı - ve açıkça DOS'un tozda kaldığı, tıpkı 32 bit olduğu gibi (en azından masaüstünde, gömülü veya mobil olmayan).

4
@Jwenting'e sormalıyım. % 99 olduğunu nereden aldın? Bunu geliştirip kaynağı gönderebilir misiniz?
Malavos

1
Evet,% 99'a hiç inanmıyorum. İş dünyasında hala güncellenmemiş eski makineler arasında (ilk günlerde Win7 çalıştıran) veya uyumsuzluk korkusuyla pek çok 32 bit Windows kurulumu var. "Çoğunluk" muhtemelen 64 bit, ancak çok iyi bir kanıt olmadan çok yüksek bir yüzdeye inanma ihtimalim çok düşük.
Joe,

2

Herhangi bir yükleyiciyi, deneyimlerime göre yükleyicilerin farklı sistemlerde başarısız olma ihtimaline karşı mümkün olduğunca farklı Windows kurulumlarında test ederim.

Aksi halde, bilirsin senin dan tecrübesi ile verilen yazılım, böcek bulunması olası değildir sadece 32-bit veya 64-bit üzerinde göstermek ve bazı hesaplanmış risk alabilir.

Öncelikle, sevkiyata yaklaştıkça sonraki döngüler arasında çok az sayıda kod değişikliğine sahip olan birçok test döngüsüne sahip olmalısınız. Ne zaman tasarruf ederseniz, daha fazla test senaryosu oluşturmak ve / veya daha fazla (ve dolayısıyla daha küçük) döngü sağlamak için kullanabilirsiniz, böylece daha hızlı geri bildirimde bulunabilirsiniz. (X testini harcama riski, Y testini yapmama riskinden daha fazla olabilir çünkü X'i çok fazla test ediyorsunuz.)

bu nedenle

  • Devam eden test döngüsü için ne kullandığınızı “diğer bitlik” üzerinde test etmeye çalışın.
  • Geliştiricinizin kullandığı “acıyı” biliyorsanız, diğerinde test etmeye başlayın.
  • Test vakalarını her birinin kapsamına girmek için “bitness” arasında bölün
  • Ancak bunları her test döngüsünde “binler” arasında değiştirin.

2

Hayır! Aynı şekilde, FDA fareler ve sıçanlar üzerindeki yeni ilaçları test ederken, maymunlar üzerinde yapılan testleri atlayarak sadece insan tüketimi için satıyorlar.

</ alaycı>

Evet evet evet evet evet. Muhtemelen yapabileceğiniz her platformu test etmezseniz, yazılımınız için üzüntüden başka bir şey yoktur. İşler her zaman farklıdır ve proje sırasında tasarımcı / kodlayıcının kafasındaki varsayımlar genellikle gerçek yaşamı modellemeye çok yakındır. Lütfen yazılımınızı test edin. Lütfen.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.