Testing 为其他操作系统重新编译软件时需要测试哪些内容?

Testing 为其他操作系统重新编译软件时需要测试哪些内容?,testing,migration,Testing,Migration,我们的软件供应商目前正在进行一个项目,将我们的企业级实验室系统从Tru64 unix迁移到Red Hat。 这显然意味着使用新编译器重新编译并执行大量测试 虽然供应商将自己进行测试,但我们也需要进行验收测试。 我们并不完全相信供应商会像我们希望的那样彻底地进行测试。 因此,我的任务是思考需要测试的东西。 这是一个实验室系统,所以诸如计算和舍入(以及普通数学)之类的东西需要测试 但我想我会向SO社区征求关于测试什么的建议,或者关于这类东西的过去经验?检查它在32位和64位CPU上工作,文件名中有空

我们的软件供应商目前正在进行一个项目,将我们的企业级实验室系统从Tru64 unix迁移到Red Hat。 这显然意味着使用新编译器重新编译并执行大量测试

虽然供应商将自己进行测试,但我们也需要进行验收测试。 我们并不完全相信供应商会像我们希望的那样彻底地进行测试。 因此,我的任务是思考需要测试的东西。 这是一个实验室系统,所以诸如计算和舍入(以及普通数学)之类的东西需要测试


但我想我会向SO社区征求关于测试什么的建议,或者关于这类东西的过去经验?

检查它在32位和64位CPU上工作,文件名中有空格,用户不需要管理员权限来运行它或更改配置


从一个unix到另一个unix并不是一个巨大的飞跃。

如果你能想出一套回归测试,你可以通过一个自动化工具将这些场景用于原始和移植的系统,以确保它们匹配。您当前针对系统运行的QA和UAT测试可能是一个很好的起点,然后您可以根据需要添加任何关键边缘案例(例如详细测试数学的案例)。Paul在上面关于编译器问题的建议也允许派生一些好的边缘情况;我建议从Tru64和RHEL编译器的角度来研究这个范围

我最近的大量经验都是关于,它有许多断言、前置条件和后置条件,可以对这些断言、前置条件和后置条件进行评估,以确保遵从性。若合适的话,此空间中的许多工具也允许您进行负载测试


如果您的系统没有远程可访问的接口(如基于web或基于套接字的接口),您可以使用脚本化工具做同样的事情。

十三或十四年前,我无法将Informix数据库从SCO OpenServer移动到Linux,因为SCO使用16位索引节点号,Linux使用32位索引节点号,Linux的“个性”远没有今天那么先进。我能理解你的怀疑

如果您可以使用保存的数据和结果重新运行旧的实验,那将是我首选的起点。给定简单的数据类型,在不同的编译器/平台上,操作的精度或范围可能会有很大的不同,因此,如果输出中的微小差异很常见,我不会感到惊讶,因此精确匹配可能不现实,但结果肯定应该足够接近,不会影响测试运行的较大“结果”


与其搜索测试用例,不如将其用于您已经使用过的测试用例。(顺便说一句,这也是为软件开发构建测试用例的好方法。)

标准数学库函数之间的精度差异。它们在不同的系统上是不同的。如果需要一致的计算,则需要替换它们。查看crlibm和/或fdlibm。

您需要测试所有内容。无论您在原始环境中测试了什么,都需要在新环境中进行测试


最终,您将获得信心,相信您的大多数测试在新环境中永远不会失败。只要新旧环境都是基于Unix的系统,肯定会有一组测试始终会成功。这很好-这是一组您不需要经常运行的测试。不过,为了安全起见,我还是会让这些测试在每次发布新操作系统或每次发布产品时运行一次。

问得好。我没有这方面的经验。然而,我非常关心与您的代码和编译器相关的单元测试级别。查看tru64编译器的bug报告,看看您的代码是否依赖于这些bug,可能会很有用。此外,请检查不同编译器、IMO的“实现定义”部分,并为它们编写测试。