Testing 自动化对许多程序的兼容性测试

Testing 自动化对许多程序的兼容性测试,testing,automated-tests,compatibility,Testing,Automated Tests,Compatibility,简短版本:自动化兼容性测试的最佳方法是什么 针对大量的第三方程序 详情如下: 我开发了一个应用程序,其核心功能是与各种 不同的音乐播放器软件通过各自的RPC 接口。RPC本身通常通过D总线或一些 特定于特定玩家的客户端库。因为每个音乐播放器 有自己独特的RPC接口,我的程序需要特殊的代码 各就各位 对我来说,测试所有这些代码越来越成为一个问题。最后计数 有十五个不同的音乐播放器,我的程序知道如何交谈 到,界面详细信息可能因播放器的不同版本而异 下一个根据以下各项的最新版本手动测试我的程序 我试图

简短版本:自动化兼容性测试的最佳方法是什么 针对大量的第三方程序

详情如下:

我开发了一个应用程序,其核心功能是与各种 不同的音乐播放器软件通过各自的RPC 接口。RPC本身通常通过D总线或一些 特定于特定玩家的客户端库。因为每个音乐播放器 有自己独特的RPC接口,我的程序需要特殊的代码 各就各位

对我来说,测试所有这些代码越来越成为一个问题。最后计数 有十五个不同的音乐播放器,我的程序知道如何交谈 到,界面详细信息可能因播放器的不同版本而异 下一个根据以下各项的最新版本手动测试我的程序 我试图支持的播放器,以及一些旧版本,是 繁琐且容易出错,所以我正在寻找一种方法来自动完成这项工作 尽可能的

测试用例本身不是问题;那只是个问题 在播放器的RPC接口上调用一系列函数并检查 预期结果的返回值和/或异步回调。 不,问题是有一个自动运行测试的框架

以下是我看到的挑战:

  • 每个播放器都保持持久状态,通常作为 用户的主目录。国家由音乐之类的东西组成 库、播放列表等。这些文件需要还原为已知的 每次试验前的初始状态。(完全删除它并不总是一个好主意 选项,此后基于GUI的播放器将显示安装向导 下一次它们将启动,而不是正常运行。)

  • 这些初始状态可能是部分动态的。例如,一种音乐 库将包含指向其中音乐文件的完整路径,但 用于测试的实际“音乐”文件的路径因 机器对机器,直到运行时才知道

  • 要测试的玩家可能会安装在 非标准位置因系统而异,顺序如下 并行安装每个版本的多个版本。框架 可能需要知道它测试的是哪个播放器和版本 在播放器启动之前,它可以初始化播放器的状态 相应地归档

  • 因为我对音乐播放器的开发没有任何控制权 程序与交互,我不能修改他们的行为使其更容易 让我来测试他们

我想做的是用一堆不同的玩家(和 一堆不同版本的播放器)安装,然后可以 自动对每个程序依次进行测试。理想的, 其他人可以设置自己的VM来运行测试 就其本身而言,大概只需要告诉测试框架 播放器安装在哪里

那么,针对大型应用程序自动化兼容性测试的最佳方法是什么 第三方程序的数量(几十个)?

如果它影响建议,我的程序是用Python编写的,
我使用GNU autotools作为构建框架。

如果这只是windows环境,那么还有一条路要走,那就是使用MS Hyper-V

链接()

他们支持创建Vista安装的映像,并通过脚本创建新的映像副本,将安装推送到新映像中,并在几分钟内启动并运行基本安装+添加的软件

MS Office团队使用此功能,测试工程师可以在几分钟内订购任何版本、语言版本的windows以及任何版本的Office

最大的问题是,这要花很多钱,而Hyper-V是一个非常复杂的产品


另一种方法可能是使用VirtualBox(开源)并编写自己的脚本,使用新版本的测试软件自动安装映像。我使用标准的图像读取脚本从网络文件夹启动,安装任何软件进行测试。。它不是完全自动化的解决方案,但为我的团队节省了很多时间。

这是Linux,因此Hyper-V不是一个选项。我最终设置了一个VM(使用kvm),并行安装了我的各种目标,并使用自定义测试线束为每个测试重置它们的配置。我希望会有一些现有的工具来实现这一点,因为线束是一个非平凡的东西来创建。