图 2. 自动化测试环境框图
用一台运行 Red Hat Enterprise Linux 系统的 x Server 作为 Test console,上面安装 IBM Rational Build Forge 用于测试的执行和管理。Test console 通过以太网络与各个 server,switch,physical-layer switch 和 storage 进行通信,包括测试脚本的传送,测试命令的信息交互。
这里说明一个测试用例,从而讲述一个典型测试过程。“主机和光纤交换机之间的光纤断开测试”:
Test console 发命令到所有的主机,让每个主机发现存储磁盘,分区,格式化文件系统,mount 或者分 windows 盘符,配置 IO 程序等;然后检查各个被测应用程序以及系统的运行状态,把结果返回 Test console;
Test console 发命令到所有的光纤交换机,让每个光纤交换机检查自身当前的运行状态,然后返回结果到 Test console;
Test console 发命令到所有的存储,让每个存储机器检查自身当前的运行状态,然后返回结果到 Test console;
Test console 在保证所有主机,交换机和存储设备都进入要求的测试状态后,开始进入测试,否则退出;
Test console 发命令让每个 physical-layer switch 开始进行相关的光纤连接的断开,然后等待一定的时间,再合上;
Test console 发命令到所有的主机,检测它们的状态,等待所有的主机都恢复正常;
重复 5、6 两步,测试持续 24 小时,完成。
可见,在这样的自动化测试过程中,很多次需要 Test console 和几十个或者几百个机器进行命令交互,检查状态或者执行任务。这些操作当然可以是一个系统接着一个系统的执行;但是大多数任务是可以并发的,或者是可以同时进行从而提高测试效率的,比如同时访问多个主机去启动 IO 程序、检查机器状态,在登录存储上执行一个脚本的同时在多个主机上面执行一些应用程序,同时登录所有的光纤交换机执行一些配置命令等。
另外,Test console 和被测系统(Server、Switch、Storage 等)之间的命令交互操作,需要使用 Perl Expect 模块,或其它基于 Expect 的模块例如 Perl::SSH::Expect, Perl::Telnet::Expect 等。很可惜,Expect 模块并不是线程安全的。
显然,这就需要应用 Perl 的多进程技术到自动化测试中。
应用 Perl 多进程技术到自动化测试脚本
在自动化测试中,利用 Rational Build Forge 作为测试管理和监控工具,90% 以上的测试脚本都采用 Perl 脚本。采用了模块化编程,并大量使用 CPAN 提供的 module。由于很多 module 都不是线程安全的,同时为了提高脚本开发效率,也会在一个脚本中直接调用另外一个脚本,所以选择在自动化测试框架中应用 Perl 多进程。
文章来源于领测软件测试网 https://www.ltesting.net/