本发明涉及计算机测试技术领域,特别涉及一种基于linux下多台机器批量执行测试的方法。
背景技术:
随着互联网的到来,服务器已经应用到各个行业领域,各类应用的需要造就了不同集群的产生。数据的时代服务器需求数量呈现出直线上涨的趋势,各行各业对服务器产生了不同的应用需求及需求数量的增加。为满足产品可靠性、稳定性测试需求需要,服务器研发测试分析阶段需加大测试样本量,研发测试分析输出对应批量部署测试方法。
随着互联网的飞速发展,服务器集群应用及市场占用量持续上升,产品测试机分析过程中样机需求数量也需同比增加,避免繁琐的部署与测试执行工作,编写批量部署及测试执行脚本。基于此,本发明提出了一种基于linux下多台机器批量执行测试的方法,以实现在linux系统下对多台测试机进行批量部署,批量执行测试,批量日志搜集,减少逐台部署的繁琐操作,避免造成人力时间浪费。
技术实现要素:
本发明为了弥补现有技术的缺陷,提供了一种简单高效的基于linux下多台机器批量执行测试的方法。
本发明是通过如下技术方案实现的:
一种基于linux下多台机器批量执行测试的方法,其特征在于,包括以下步骤:
(1)选择一台测试机作为控制机,将测试脚本文件放入指定目录;
(2)使控制机与多台测试样机置于同一个测试局域网中,先把所有待测试机器的ip写入到一个ip清单中;
(3)在控制机上执行对所有待测试机器的自动运行测试;
(4)测试完成后log存放到指定目录的ip命名的文件中。
所述步骤(2)中,保持测试局域网网络连接正常,确认每台测试机ip,并更新ip到配置文件ip_list.txt中。
所述步骤(3)中,在配置文件test_script.sh中批量更新测试的工具/脚本/命令,执行部署与测试脚本auto-run.sh和日志批量搜集脚本collect.sh。
所述步骤(3)中,遍历ip清单,通过expect工具登陆到待测试机器并把/mnt目录通过nfs的方式挂载到本地指定目录,在/mnt目录下创建以本机ip命名的文件夹,在/mnt目录下后台执行测试脚本。
所述步骤(4)中,并把结果写入到/mnt/$ip目录下以当前日期命名的log文件。
本发明的有益效果是:该基于linux下多台机器批量执行测试的方法,操作简单,自动化程度高,实用性较强,通过shell与expect语言实现了对多台测试机器的批量部署、批量测试执行、批量日志搜集的动作,减少了大样本的情况下逐台操作的繁琐作业造成的时间浪费,保证了批量测试的稳定性。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合实施例,对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
该基于linux下多台机器批量执行测试的方法,包括以下步骤:
(1)选择一台测试机作为控制机,将测试脚本文件放入指定目录;
(2)使控制机与多台测试样机置于同一个测试局域网中,先把所有待测试机器的ip写入到一个ip清单中;
(3)在控制机上执行对所有待测试机器的自动运行测试;
(4)测试完成后log存放到指定目录的ip命名的文件中。
所述步骤(2)中,保持测试局域网网络连接正常,确认每台测试机ip,并更新ip到配置文件ip_list.txt中。
所述步骤(3)中,在配置文件test_script.sh中批量更新测试的工具/脚本/命令,执行部署与测试脚本auto-run.sh和日志批量搜集脚本collect.sh。
所述步骤(3)中,遍历ip清单,通过expect工具登陆到待测试机器并把/mnt目录通过nfs的方式挂载到本地指定目录,在/mnt目录下创建以本机ip命名的文件夹,在/mnt目录下后台执行测试脚本。
所述步骤(4)中,并把结果写入到/mnt/$ip目录下以当前日期命名的log文件/share/$ip。
该基于linux下多台机器批量执行测试的方法,具体实现脚本内容如下:
#!/bin/bash
#mountsharepathtolocalhost
passwd='111111'
testscript=test-script.sh
while((1));do
read-p"pleaseinputthecontrollerserverip(eg:192.168.49.254):"cip
["$cip"==""]&&continue
echo$cip
break
done
foripin`catip-list`
do
/usr/bin/expect<<-eof
settime-1
spawnsshroot@$ip
expect{
"*yes/no"{send"yes\r";exp_continue}
"*password:"{send"$passwd\r"}
}
expect"*#"
send"mount-tnfs$cip:/share/mnt\r"
expect"*#"
send"mkdir/mnt/$ip\r"
expect"*#"
send"cp/mnt/$testscript/mnt/$ip\r"
expect"*#"
send"cd/mnt/$ip\r"
expect"*#"
send"./$testscript>>`date"+%y-%m-%d-%m"`.log\r"
expect"*#"
send"exit\r"
puts"$iprun$testscriptsuccessful!!"
expecteof
eof
done