自动化常用的测试场景
- 回归测试:在发布新版本之前,需要把多个特性进行整体大版本的回归以保证新的功能不能影响原有功能以及新功能实际实现。
- 场景测试:存在多个并发需要一起执行的场景,比如同时创建云主机快照和云主机备份,对实际云主机的影响。这些用户场景在前端中进行校验很难触发出同一时刻的创建多个功能的业务场景。可以在底层使用脚本的方式去触发
- 性能测试:在底层进行一些需要云主机保持运行状态执行的操作的时候,可以通过一些性能工具进行自动化的性能测试,来验证云主机在运行状态过程中的性能状况
场景测试
本文主要介绍场景测试过程中,分析场景进行脚本设计和实现。以列举的方式进行设计思路的分析
场景:云主机同时创建备份和快照
- 思路一:使用两个shell窗口进行创建
需要同时创建备份和快照,在shell中直接下发命令还是存在前后的问题,开两个窗口进行分别执行。但存在如下问题:
- 创建后到下次创建的过程中需要查看磁盘状态是否处于正常的状态才能进行再一次创建的循环,在此过程中磁盘返回状态信息的时间无法确定
- 需要在磁盘处于正常状态下再进行下一步的执行,需要进行一个判断和重置
解决方式:
通过设置一个区间范围内不停循环的定时,在一定区间的时间取值过程中,足够大量在多次执行的过程中总会触发到能同时创建的场景
#创建备份
#!/bin/bash
read -p "please input the instanceid: " instance_id
read -p "please input the count of bcknum: " vm_count
random_number=$((RANDOM%5+175))#根据创建备份的大致时间确定一个区间范围,在这个范围中前后取正负值随机数进行等待
for i in `seq $vm_count`
do
#云主机备份命令
sleep $random_seconds;
done
#创建快照
#!/bin/bash
read -p "please input the instanceid: " instance_id
read -p "please input the count of snpnum: " vm_count
random_number=$((RANDOM%5+175))
for i in `seq $vm_count`
do
status_cinder=$(磁盘状态查询)
id_cinder=$(磁盘id查询)
if [ "$status_cinder" = “可用”" ];then
创建快照;
else
重置磁盘状态;
fi
sleep $random_seconds;
done
- 思路二:在一个shell中执行,使用&符号同时下发
每次并发执行完成后需要判断一个状态并且设置等待时间避免下一次执行的时候上一次还没有结束
#!/bin/bash
read -p "please input the instanceid: " instance_id
read -p "please input the count of snp&bcknum: " vm_count
read -p "please input the sleeptime " vm_time
for i in `seq $vm_count`
do
status_cinder=$(磁盘状态)
id_cinder=$(磁盘ID)
if [ "$status_cinder" = "in-use" ];then
快照创建命令&
备份创建命令&
else
重置磁盘状态
fi
查看虚机状态
date "+%Y-%m-%d %H:%M:%S"
echo $status_cinder
sleep $vm_time
done
引入自动化原因:同步下发过程中,用手动的方式无法触发同步、并发的下发命令的场景,故使用shell脚本的方式,关注返回和等待时间便可以实现并发的这个测试业务场景验证