一、安装相关软件
JDK、maven、pip、robotframework以及所需要的扩展库,Python,IntelliJ IDEA,Mysql,pyftpdlib(FTP server )
二、自动化框架搭建
准备工作:shell脚本的学习http://www.runoob.com/linux/linux-shell.html
自动化测试框架的搭建主要包括三个部分:环境的部署、测试数据的准备、自动化用例的编写
1、规范存放目录和ftp
定义变量,将文件夹名和变量关联,并建立相应的文件夹,方便统一后面有条理的读取存放。(env.sh)
建立以下几个目录:
/data/webapps
/data/appdatas
/data/applogs
2、部署环境
环境部署方面的代码主要在/run.sh和/deploy.sh里面,主要包括预处理、打包、解压、更改bizer、searcher、indexer的配置。
(1)预处理:
将前一次打的包放到/data/webapps/bak目录下进行备份;
停掉当前目录下的所有服务;
杀掉当前机器正在进行的相关进程,防止影响到本次自动化结果;
删除当前目录下上一次服务的包。
(2)打包:
通过mv clean package -Pdist完成本次打包;
(3)解压:
清楚该业务是否有自己的indexer、searcher、bizer,以及针对某些集群,在该集群下可能包含小业务的searcher。
(4)更改配置
更改bizer配置:
(a)更改JVM参数,如最大堆、最小堆、新生代的大小。
JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。最小堆的大小可以设置与最大堆相同,以避免每次垃圾回收完成后JVM重新分配内存。合理的调整JVM的参数,可以适当的调整JAVA程序的工作效率。
(b)更改bizer中的Arts数据库为自动化专用库。
(c)bizer通过pigeon找可用的searcher,修改当前bizer注入的pigeon节点名和其所需要调用到的searcher服务的pigeon节点名。这里通常要注意 一个服务可能需要调用多个searcher,记得调用到的searcher节点名要对应上,此外还可以修改超时时间。
更改searcher配置:
(a)更改JVM参数,如最大堆、最小堆、新生代的大小。
(b)更改searcher中的Arts数据库为自动化专用库。
(c)针对集群或者如suggest下面包含多个小业务,如果小业务有自己的searher,更改小业务当前所注入pigeon节点名
更改indexer配置:
(a)更改JVM参数,如最大堆、最小堆、新生代的大小。
(b)更改indexer中的Arts数据库为自动化专用库。
3、建索引
此处的代码主要在/index.sh 里面
(1)设置JVM相关参数生成GC日志
(2)获取schema文件和csv文件,利用java语句建立索引,将建好的索引放到对应searcher的文件目录下,起服务时会被加载。
三、安装好自动化测试的诸多软件后,接着即可拉取代码,尝试跑自动化。
1.首先是利用:
git@code.dianpingoa.com:arts-repo/search-it-automation.git
git学习:git相关操作
2.在跑代码之前:
(1)切换为jenkins用户,新建文件夹:/data/appdatas, /data/webapps, /data/applogs,并且确保这三个文件夹所属的用户为同一个用户。
在此过程中,学习ssh的用法。
(2)在mac上的data/目录下新建上述是几个文件夹。定义变量,将文件夹名和变量关联,并建立相应的文件夹,方便统一后面有条理的读取存放。
3.拉取具体项目代码:
网址为:http://code.dianpingoa.com/public/projects?utf8=%E2%9C%93&search=arts
此处需要注意的是,项目代码要与自动化测试的代码在同一路径下。
4.执行测试用例
有两种方式:
(1)进入~/Desktop/search-it-automation
执行./run.sh arts-red tuangourec beta search
(2)首先将要用到的服务search和bizer服务启动。
接着进入测试集所在的目录,利用pybot命令执行相应的测试用例。
四、自动化测试用例的编写
在此之前要熟悉Robot Framework语法
(1)首先要熟悉Robot Framework自动化测试框架,以及它所支持的文件格式。
(2)抓请求。通过APP或者PC端发请求到相应的beta机器,登录bata机器到/data/webapps/{BIZNAME}_bizer/logs/query.log
中抓请求。
tailf query.log | grep "3507"
(3)通过Url查看请求结果。
拼请求:curl "$ip:$port/search/$app?query=${queryStr}"
ip/port是提供服务的机器ip地址
$app即用户查询的业务名称,
${queryStr}是查询的字符串。
示例: curl "192.168.0.1:6123/search/shop?query=all()"
(4)编写测试用例。
(5)执行测试用例
有两种方式:a: ./run.sh arts-tuangou beta search 默认pigeon节点 跑testcase
./run.sh arts-tuangou tuangou beta index 跑indexcase
./run.sh arts-tuangou beta search -p it.arts 指定pigeon节点
b: 将要用到的服务启动之后,利用pybot命令执行测试用例
pybot --loglevel debug --pythonpath $DIR/Library -d $DIR/../report-$repo-$casetype-tests --exclude onlyForProduct --exclude ignore --exclude biz -v APP_ROOT_DIR:$APP_ROOT_DIR $casesuit/$repo
在执行测试用例的过程中可能会出现诸多问题,如果是测试用例的问题,可以通过查看report来找问题出现的原因,如果是配置的问题,可以通过查看log来找问题出现的原因。