Shell脚本在测试工作中的应用点滴

简介

自动化测试在当前测试行业中可谓大火,作为一个测试工作者不会写个自动化测试框架已经不好意思在这行里混了,面对林林总总的开源工具,其实如何选择最合适的工具用在自己工作中?如何最高效的展开测试?是大家应该考虑的,笔者就发现其实在你日常使用的不起眼的工具就可以派上用场的,现在把我自己测试中遇到的一点闪光点与大家分享,以飨读者。

比如在奇云项目数据库RDS的测试中,有大量的表单需要生成,有数据库动态需要监控,我们就可以写shell自动操作数据库的脚本来实现。

01

案例背景

我们知道有关数据库的测试中,如果手工的进行一系列表单的建立,修改,是相当费时的,更不用说还要测试数据库运行过程中的监控状态是否正常,所以在测试中很有必要编写一下脚本来进行自动化测试的。当然了工具的选择可以选择一点现成的,比如Loadrunner,笔者在这里因为环境全是部署在Linux下的,所以直接尝试使用shell脚本。这里把使用的一个shell小脚本分享给大家,以便以后如果遇到类似场景可以直接使用。

02

Shell简介

Shell不仅仅是我们平时所见的把一部分命令收集在一起,就像一个bat文件一样,而且是一门很好的编程语言。你能通过使用shell使大量的任务自动化,这正是我们测试工作看重的。

下面,我们简单看看shell是怎么工作的,其实很简单的:

建立一个脚本

Linux中有好多中不同的shell,不过通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且非常容易使用。所以在本文中笔者所提供的脚本都是使用bash。

如同其他语言相同,通过我们使用任意一种文字编辑器,比如vi,vim等来编写我们的shell程序。

程序必须以下面的行开始(必须方在文件的第一行):

#!/bin/sh

符号#!用来告诉系统他后面的参数是用来执行该文件的程式。在这个例子中我们使用/bin/sh来执行程序。

运行脚本

当编辑好脚本后,还有一点切记的用下边的命令将自己的文件有可执行权限。

chmod +x filename

然后,你能通过输入: /filename 来执行你的脚本。

03

脚本实例

本项目中所涉及到的数据库方面的测试主要包括两个方面,第一个方面:数据库功能是否正常,也就是增,删,改,查。第二个方面:动态监控数据库运行状态,包括,容量大小,参数动态变化等,所以单纯用手工来测试,实现第二个方面的测试就非常困难。所以有必要采用自动化测试的技术,权衡时间目的的投入产出比,最终决定采用shell 脚本来实现自动化测试。

整体思路:这里需要注意的是,为了表单有变化,需要引入变量, 然后再在循环里读取这个变量,让这个变量每执行一次自动加1,达到变化的目的。具体shell的语法,mysql语法大家在网上都可以搜到,这里不再赘述。下面仅分步呈现给大家一点关键点,看完之后是不是觉得很简单呢?

1. 我们登录其数据库,创建一个表名为temp1,如下图:

图1.1 创建表

2. 我们为了得到,insert, update, replace, 等参数值,特别在脚本循环中加入类似语句。

insert into temp1 values($i,'Tom','dkdkkdkdkdksldfk',123456789);

select * from temp1 where id=$i+3;

replace into temp1(id,name,info,mobile) values ($i,'Yujun','124324dsdfs',48484848);

select * from temp1 where name='Yujun';

update temp1 set name='Suyujun' where id=$i;

3. 为了得到针对临时表,慢查询的操作,必须加入如下类似语句。

CREATE TEMPORARY TABLE tmp_table1 (id int,name varchar(10)) select * from temp;

select sleep(3);

4. 运行脚本。

sh testtemp1.sh

图1.2 运行脚本

5. 监控数据表。

通过运行,很快我们就看到监控图表里有所反映了,如下图

04

总结

自动化测试其实不必拘泥于一个多牛的框架,适当的利用现成的,系统自带的小工具,还是可以起到事半功倍的效果的。

下面附上详细脚本:

#! /bin/sh

echo "Run the test script of mysql!"

for i in ; do

mysql -h192.168.0.153 -P3306 -usuyujun -pSuyujun123456 -e"

use yujun;

insert into temp1 values($i,'Tom','dkdkkdkdkdksldfk',123456789);

insert into temp1 values($i+1,'Tomssl','dkdkkdkdkdksldfk',123456789);

insert into temp1 values($i+2,'Tomieie','dkdkkdkdkdksldfk',123456789);

insert into temp1 values($i+3,'Tom333','dkdkkdkdkdksldfk',123456789);

select * from temp1 where id=$i+3;

replace into temp1(id,name,info,mobile) values ($i,'Yujun','124324dsdfs',48484848);

replace into temp1(id,name,info,mobile) values ($i+1,'Yujun','124324dsdfs',48484848);

replace into temp1(id,name,info,mobile) values ($i+2,'Yujun','124324dsdfs',48484848);

replace into temp1(id,name,info,mobile) values ($i+3,'Yujun','124324dsdfs',48484848);

select * from temp1 where name='Yujun';

update temp1 set name='Suyujun' where id=$i;

update temp1 set name='Suyujun' where id=$i+1;

update temp1 set name='Suyujun' where id=$i+2;

update temp1 set name='Suyujun' where id=$i+3;

select * from temp1 where id=1000;

select sleep(3);

CREATE TEMPORARY TABLE tmp_table1 (id int,name varchar(10)) select * from temp;

CREATE TEMPORARY TABLE tmp_table2 (id int,name varchar(10)) select * from temp;

CREATE TEMPORARY TABLE tmp_table3 (id int,name varchar(10)) select * from temp1;

CREATE TEMPORARY TABLE tmp_table4 (id int,name varchar(10)) select * from temp1;

quit;"

done

Qtest是360旗下的专业测试团队!

是WEB平台部测试技术平台化、效率化的先锋力量!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180810B1LASG00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券