Нужно ли тестировать 32-битное программное обеспечение в 64-битной Windows?

Я работаю в команде разработчиков программного обеспечения в качестве разработчика программного обеспечения. Я работаю над тем же проектом уже три года. Программное обеспечение представляет собой 32-битное настольное приложение C # в .NET 4. Наша целевая платформа в Windows 7 (мы должны были поддерживать Windows XP до прошлого года). Программное обеспечение взаимодействует с различным пользовательским оборудованием, для которого написаны пользовательские драйверы. Аппаратное обеспечение и программное обеспечение для драйверов написано нашим клиентом. Разумеется, есть разные драйверы для 32-разрядной и 64-разрядной Windows.

На этапе тестирования нашей системы мы выполняем все /большинство тестовых случаев как в 32-битной, так и в 64-битной Windows 7. Я не могу вспомнить, есть ли у нас ошибка в нашем программном обеспечении, которая существует только в одном стиле Windows. Имея этот опыт, я начал задаваться вопросом, действительно ли нам нужно протестировать 32-битное ПО на 64-битной Windows?

Что такое отраслевой стандарт?

31 голос | спросил Donotalo 3 +04002014-10-03T08:32:15+04:00312014bEurope/MoscowFri, 03 Oct 2014 08:32:15 +0400 2014, 08:32:15

6 ответов


31

Большинство ошибок, с которыми мы столкнулись при работе с 32-разрядным программным обеспечением в 64-битных окнах, были связаны с расположением программного обеспечения (Program Files (x86) вместо Program Files), расположение разделов реестра (некоторые из них были найдены в Wow6432Node). У нас были эти проблемы в основном потому, что нам нужно было общаться с другим программным обеспечением (также 32-разрядным), поэтому нам нужно было протестировать программное обеспечение как на 32-битном, так и на 64-битном ...

Когда у вас не было этих проблем, я считаю, что вполне безопасно не тестировать на обеих платформах, когда вы явно компилируете в 32-битном режиме. При компиляции в 32-разрядной среде среда выполнения .NET будет запускать все в 32-битном режиме и должна работать так же, как 32-разрядный режим на 32-разрядных платформах.

В соответствии с 64-разрядными приложениями ( MSDN ), 32-разрядные приложения запускаются в режиме Wow64 и Запуск 32-разрядных приложений (MSDN ) более подробно объясняет этот режим.

ответил David Perfors 3 +04002014-10-03T11:32:50+04:00312014bEurope/MoscowFri, 03 Oct 2014 11:32:50 +0400 2014, 11:32:50
23
  

Аппаратное обеспечение и программное обеспечение для драйверов написано нашим клиентом. Конечно, есть разные драйверы для 32-битной и 64-разрядной Windows.

Итак, на 32-битной Windows ваше программное обеспечение разговаривает с одним драйвером, а на 64-битной Windows - с другим. Предположим, что время от времени появляются новые версии этих драйверов. Поэтому, когда вы тестируете только свое программное обеспечение на 32-битной Windows, вы не можете быть уверены, что в 64-битном драйвере не будет различий, что приведет к сбою комбинации вашего программного обеспечения + 64-битного драйвера. И с точки зрения ваших пользователей неважно, кто виноват (вы или автор драйвера), все, что они видят, является нерабочей системой. Поэтому даже если ваш код не содержит ошибок, тест может выявить ошибку в 64-битном драйвере, и обнаружение такой ошибки может помочь вам принять правильные меры (например, отправить отчет об ошибке автору драйвера).

Конечно, когда вы использовали эти два драйвера в течение многих лет, и вы очень уверены, что поведение точно такое же, вы можете пропустить тесты для одной платформы, следуя аргументам в ответе @ DavidPerfors. В качестве компромисса вы можете запускать тесты на 64-битной Windows только тогда, когда доступна новая версия драйвера. На самом деле это зависит от сложности драйверов, вашего опыта и уверенности в них.

Некоторые дополнительные вещи, которые следует учитывать:

  • какой тип ОС является вашей пользовательской базой, используя большинство? 32-битная или 64-битная Windows? Если вы решите протестировать только на одной платформе, выберите наиболее часто используемый вами пользователь.
  • Насколько тяжело это, когда новая версия программного обеспечения не будет работать на менее часто используемой платформе? Например, могут ли ваши клиенты сразу отступить и установить предыдущий рабочий выпуск? У них есть только некоторые неудобства или реальные финансовые потери? Если это первое, тестирование только на одной платформе может быть прекрасным, если оно последнее, очевидно, нет.
ответил Doc Brown 3 +04002014-10-03T12:05:49+04:00312014bEurope/MoscowFri, 03 Oct 2014 12:05:49 +0400 2014, 12:05:49
16

Предполагаемое по умолчанию в просвещенных кругах ОК: «Если вы его не тестировали, значит, это не работает».

Как практический вопрос, который, как правило, является недостижимой целью стремиться во многом таким же образом, что инженеры-разработчики могут захотеть иметь единичные тесты для всего; но они не верят, что они когда-либо достигнут этого и выпустят по расписанию.

Однако на ваш вопрос можно ответить только или в сочетании с продажами и маркетингом. Вы предоставляете им затраты на тестирование, и они дают анализ рыночной выгоды. Если оценки на обеих сторонах были достаточно точными, ответ был бы простым

if B > C:
    test_32bit_version()

По моему опыту, все оценки затрат неточны. Что касается другой стороны уравнения, Дилберт однажды пародировал решение о том, что «я просто спросил свою кошку, Рукавицы». Чтобы сделать гораздо лучше, им понадобилась бы подготовка по методам антропологического поля.

ответил msw 3 +04002014-10-03T09:35:10+04:00312014bEurope/MoscowFri, 03 Oct 2014 09:35:10 +0400 2014, 09:35:10
6

Увидев, что 99% всех Windows-установок Windows 7 и выше, а также хорошая часть Vista, - 64 бит, почему, черт возьми, вы даже не считаете, что не тестируете эту платформу?
Это просто без проблем, если вы не делаете это специально для очень ограниченной группы пользователей, которых вы ЗНАЕТ, используете 32-битную Windows и будете продолжать делать это в течение всего срока службы вашего продукта.

Так что да, проверьте 64-разрядные проблемы. Фактически, разрабатывайте на 64-битных платформах и, возможно, поставляйте 64-разрядную версию в стандартной комплектации с 32-битной скомпилированной версией в качестве опции для тех немногих клиентов, которые не обновлялись до нового компьютера и ОС за последние 6-8 лет или около того .

ответил jwenting 3 +04002014-10-03T12:07:33+04:00312014bEurope/MoscowFri, 03 Oct 2014 12:07:33 +0400 2014, 12:07:33
2

Я бы тестировал любой установщик на как можно большем количестве различных настроек Windows, поскольку, по моему опыту, установщики, скорее всего, потерпят неудачу в разных системах.

В противном случае вы знаете из опыта с помощью заданного программного обеспечения, ошибки вряд ли будут просто отображаются на 32-битном или 64-битном уровне, и вы можете взять определенный расчетный риск.

Во-первых, у вас должно быть много циклов тестирования с очень небольшим изменением кода между более поздними циклами, когда вы приближаетесь к доставке. Каждый раз, когда вы можете сэкономить, вы можете использовать для создания большего количества тестовых примеров и /или допускать больше (и, следовательно, меньших) циклов, чтобы дать более быструю обратную связь. (Риск проведения тестирования времени X может быть больше, чем риск не тестировать Y, потому что вы слишком много тестируете X.)

Поэтому

  • Попробуйте протестировать «другую биттузу» на то, что вы использовали для тестового цикла.
  • Если вы знаете «битность», которую использует ваш разработчик, начните с тестирования на другом.
  • Разделите тестовые примеры между «битностью», чтобы обеспечить охват каждого
  • Но замените их между «бинами» на каждом тестовом цикле.
ответил Ian 3 +04002014-10-03T18:14:43+04:00312014bEurope/MoscowFri, 03 Oct 2014 18:14:43 +0400 2014, 18:14:43
2

Неа. Аналогичным образом, когда FDA проводится тестирование новых лекарств на мышах и крысах, они пропускают тестирование на обезьянах и просто продают его для потребления человеком.

& л; /Сарказм >

Да, да, да, да. Для вашего программного обеспечения нет ничего, кроме грусти, если вы не будете тестировать каждую платформу, которую вы, возможно, сможете. Вещи всегда разные, и предположения в голове дизайнера /кодера во время проекта обычно только приближаются к моделированию реальной жизни. Поэтому, пожалуйста, проверьте свое программное обеспечение. Пожалуйста.

ответил kmort 4 +04002014-10-04T04:39:55+04:00312014bEurope/MoscowSat, 04 Oct 2014 04:39:55 +0400 2014, 04:39:55

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132