目前我计划在32位,64位,Windows XP Home,Windows XP Pro,Windows Vista Home Basic,Windows Vista Ultimate,Windows 7 Home Basic和Windows 7 Ultimate上进行测试...最新的服务包。
但是,现在我想知道在上面列出的所有场景中是否值得对AMD和英特尔进行测试,还是浪费时间?
注意:这是日常普通用户的安全应用程序。
答案 0 :(得分:9)
我的感觉是,如果您拥有许多最先进的手工编码汇编语言或某种令人难以置信的紧凑时序(无论如何您都不会满足这些操作系统),这只会是值得的。
如果您使用的是现成的商业编译器,那么您可以合理地确定它们将生成在所有普通处理器上运行的代码。
当然,没有人能证明他们不需要在特定平台上进行测试,但我认为平台差异的原因要比CPU品牌(所有各种多核/超线程排列,例如,它可能以不同的方式暴露所有多线程代码错误)
答案 1 :(得分:4)
仅当您使用汇编编程并使用扩展的特定于供应商的指令集时。但是,由于AMD和英特尔签署了交叉许可协议,这比现在的问题更具历史性。
在所有其他情况下(例如使用高级语言),编译器编写者的工作是确保代码符合x86并在每个CPU上运行。
哦,除了FDIV Bug处理器供应商通常不会犯错误。
答案 2 :(得分:1)
我认为你正在寻找测试方案的错误方向。
是的,您的代码可能适用于英特尔但不适用于AMD,或Windows Vista Home但不适用于Windows Vista Professional。但是除非你在第一种情况下做一些与低级编程非常紧密相关的事情,或者在第二种情况下执行OS实现的细节,否则可能性很小。你可以说测试每一个可以想象的场景都没有伤害。但在现实生活中,必须对可用于测试的资源进行一些限制。在大多数情况下,对不同处理器或不同操作系统的测试不会测试您的程序,而是测试编译器,操作系统或处理器。你有多少时间来测试别人的工作?我认为您可以更好地花时间在自己的代码中测试更多场景。您没有详细说明您的应用程序的功能,但只是采用我自己的一个示例,花一天时间测试销售我们自己公司制造的产品与我们从其他制造商转售的产品相比,或者更高效测试不同州或其他州的销售税规则。
在实践中,我甚至很少测试在Windows上进行部署而不是在Linux上进行部署,更不用说不同版本的Windows了,我很少会被烧毁。
如果我正在编写低级设备驱动程序或其他类似设备驱动程序,那将是另一回事。但是正常的应用?不要浪费你的时间。
答案 3 :(得分:0)
当然听起来对我来说是浪费时间 - 你的程序是用哪种语言编写的?
答案 4 :(得分:0)
我会说不。除非您使用汇编程序编写应用程序,否则应该远离处理器,不必担心差异。处理器将支持Windows操作系统,其API是您正在接口的(取决于语言)。如果您正在使用.NET,那么您将遇到的唯一可预见的问题是,如果您使用的是这些平台不支持的框架版本。鉴于它们都是XP或更高版本,你应该没问题。如果您想担心某些问题,请确保您的应用程序能够很好地与Vista及更高版本的安全模型配合使用。
答案 5 :(得分:0)
问题可能是“你在测试什么”。任何测试都不太可能测试AMD和英特尔硬件平台之间可能存在差异的东西。可能会在驱动程序级别上出现差异,但您似乎并未针对可用的每个现有PC硬件对您的软件进行平面测试。最有可能的是,不同级别的Windows服务包之间的差异将远远超过AMD和英特尔处理器之间的差异。
答案 6 :(得分:0)
我认为您的代码中可能存在某些功能(无论您是否知道),可以利用某些可能对结果产生严重影响的处理/优化。关键字可能。
我会说一般你不太可能担心它。如果您打算在多台机器上进行,请将它们混合在一起。但我不会强调它。
答案 7 :(得分:0)
我永远不会对AMD和英特尔进行所有的回归测试,除非我特别修复了一个独有的问题。这就是回归测试。
另一方面,单元测试...我不希望有任何区别。所以,在我实际看到AMD或英特尔特有的问题之前,我再也不打算对两者进行单元测试。
答案 8 :(得分:0)
如果您依赖于准确/一致的浮点结果,那么肯定是。