简短版本:自动执行兼容性测试的最佳方法是什么 针对大量第三方计划?
细节:
我开发了一个program,其核心功能是与各种各样的交互 不同的音乐播放器软件通过各自的RPC 接口。 RPC本身通常通过D-Bus或通过一些来实现 特定于特定玩家的客户端库。自每个音乐播放器 有自己独特的RPC接口,我的程序需要特殊的代码 处理每一个。
测试所有这些代码对我来说越来越成问题。最后算了 有十五个(!)不同的音乐播放器,我的程序知道如何说话 to,并且界面细节可以从播放器的一个版本到 下一个。根据每个版本的最新版本手动测试我的程序 我试图支持的玩家,以及一些旧版本,是 乏味且容易出错,所以我正在寻找一种方法来自动化这个 尽可能。
测试用例本身不是问题;这只是一个问题 在播放器的RPC接口上调用一系列函数并进行检查 预期结果的返回值和/或异步回调。 不,问题是有一个框架来自动运行测试。
以下是我看到的挑战:
每个玩家都保持持久状态,通常是作为点下的文件 用户的主目录。国家由音乐之类的东西组成 库,播放列表等。这些文件需要还原为已知文件 每次测试前的初始状态。 (完全删除它并不总是一个 选项,从那时起,基于GUI的播放器将呈现一个设置向导 下次他们开始而不是正常运行。)
这些初始状态可能部分动态。例如,音乐 库将包含其中音乐文件的完整路径,但是 用于测试的实际“音乐”文件的路径将有所不同 机器到机器,直到运行时才会知道。
可能会安装测试的玩家 非标准位置,因系统而异,因系统而异 并行安装多个版本。框架 可能需要知道它正在测试哪个播放器和版本 在播放器启动之前,它可以初始化播放器的状态 相应的文件。
由于我对音乐播放器的开发没有任何控制权 程序与之交互,我无法修改它们的行为以使其更容易 让我对他们进行测试。
我想做的是与一群不同的玩家建立一个虚拟机(和 安装了一堆不同版本的每个播放器,然后就可以了 依次自动测试我的程序。理想的情况下, 其他人可以设置自己的VM来运行测试 在他们自己,大概只需要告诉测试框架哪个 玩家安装在哪里。
所以,什么是针对大型自动化进行兼容性测试的最佳方法 数量(几打)的第三方程序?
如果它影响推荐,我的程序是用Python编写的, 我正在使用GNU autotools作为构建框架。
答案 0 :(得分:0)
如果只有Windows环境,那么有一种方法可以使用MS Hyper-V。
链接(http://www.microsoft.com/virtualization/en/us/solution-application-development.aspx)
他们支持拥有Vista安装的图像,并通过脚本创建它的新副本,并将安装推送到新映像中,并在几分钟内启动基本安装+添加软件。
MS Office团队使用此功能,测试工程师可以在几分钟内订购任何版本的Windows版本,语言版本。
很大的问题是,这需要花费很多钱,Hyper-V是一个非常复杂的产品。
作为替代方案,也许可以使用Virtual Box(开源)并编写自己的脚本来自动安装图像,使用新版本的软件进行测试。我从网络文件夹启动时使用标准图像读取脚本来安装任何软件进行测试。它不是完全自动化的解决方案,但为我的团队节省了大量时间。