基于Avocado 的 QData MySQL自动化测试.md
qdata-mysql 自动化测试概要设计
```
│ ├── 1. 依赖环境
│ │ ├
│ │ └─────
│ ├── 2. 配置文件
│ │ ├
│ │ └─────
│ ├
│ ├── 3. 测试流程
│ │ ├
│ │ └─────
│ ├
│ ├── 4. 输出格式
│ │ ├
│ │ └─────
│ │
│ ├── 5. 命令行参数
│ │ ├
│ │ └─────
```
#### 依赖环境
python2.7.9
avocado-framework (52.0)
ssh
avocado需要插件:
avocado-framework-plugin-result-html (52.0)
avocado-framework-plugin-runner-remote (52.0)
avocado-framework-plugin-varianter-yaml-to-mux (52.0)
```
前提条件
- qdata_mysql 版本 1.2.2
- 集群正常
- sysbench 压测工具
- ntp 服务正常(ntp.conf 配置正常 pool.ntp.org)
- ssh 长连接
- master 配置数据库sbtest的权限
- 配置文件 qdata.conf, qdata_for_mysql.conf, qdata_conf_default, 需要备份一份,在恢复集群时,恢复配置文件,再gen_conf
grant all on sbtest.* to sbtest identified by 'sbtest';
flush privileges;
配置文件
用户配置
- yaml参数配置文件,配置集群master_ip
#cat data/cluster1.yaml
master_ip: '10.10.30.101'
测试流程
集群测试
- 支持多套集群测试
- 在data目录下新建参数配置文件,配置每套集群的master_ip,配置方法如下:
配置文件名称依照cluster1,cluster2,cluster3.....等以此类推
参数配置集群的master_ip即可,例如master_ip: '10.10.30.101'
指定第一套配置文件执行集群测试后,可新开窗口,再次指定其他配置文件进行测试
- 通过指定配置文件来进行集群测试:
avocado run --mux-yaml data/cluster1.yaml -- cls.py ha.py lb.py db.py - 若测试中断,可以从中断的案例开始执行(指定中断任务的job id)
avocado run --replay 56b4aab --replay-test-status INTERRUPTED - 支持只执行测试失败的案例,会跳过执行成功的案例(指定刚执行过的任务job id)
avocado run --replay 56b4aab --replay-test-status FAIL - 测试cancel的案例
avocado run --replay 56b4aab --replay-test-status CANCEL
屏幕输出
#avocado run --mux-yaml data/cluster2.yaml -- ha.py db.py lb.py
JOB ID : eec9fe46c4aee730ee0e4433967244d7781e5c8e
JOB LOG : /root/avocado/job-results/job-2017-07-27T15.19-eec9fe4/job.log
(1/9) ha.py:HATest.test_qmcls_start;run-7599: PASS (0.00 s)
(2/9) ha.py:HATest.test_qmcls_stop;run-7599: FAIL (0.04 s)
(3/9) ha.py:HATest.test_qmcls_show;run-7599: PASS (0.00 s)
(4/9) db.py:DBTest.test_db_stop;run-7599: PASS (0.00 s)
(5/9) db.py:DBTest.test_db_start;run-7599: FAIL (0.04 s)
(6/9) db.py:DBTest.test_db_backup;run-7599: PASS (0.00 s)
(7/9) lb.py:LBTest.test_lb_join;run-7599: PASS (0.00 s)
(8/9) lb.py:LBTest.test_lb_kickout;run-7599: PASS (15.02 s)
(9/9) lb.py:LBTest.test_set_kickout_time;run-7599: PASS (0.00 s)
RESULTS : PASS 7 | ERROR 0 | FAIL 2 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB TIME : 16.65 s
JOB HTML : /root/avocado/job-results/job-2017-07-27T15.19-eec9fe4/results.html




- 定位FAIL案例的具体失败信息
- 打开/root/avocado/job-results/job-2017-07-27T15.19-eec9fe4/results.json,根据id,2和5是FAIL,找到对应信息如下:
{
"end": 1501139986.080578,
"fail_reason": "qmcls stop failed in 10.10.30.102",
"id": "2-ha.py:HATest.test_qmcls_stop;run-7599",
"logdir": "/root/avocado/job-results/job-2017-07-27T15.19-eec9fe4/test-results/2-ha.py:HATest.test_qmcls_stop;run-7599",
"logfile": "/root/avocado/job-results/job-2017-07-27T15.19-eec9fe4/test-results/2-ha.py:HATest.test_qmcls_stop;run-7599/debug.log",
"start": 1501139986.039281,
"status": "FAIL",
"test": "2-ha.py:HATest.test_qmcls_stop;run-7599",
"time": 0.041297197341918945,
"url": "2-ha.py:HATest.test_qmcls_stop;run-7599",
"whiteboard": ""
},
{
"end": 1501139986.487331,
"fail_reason": "qmcls db start all failed 10.10.30.102",
"id": "5-db.py:DBTest.test_db_start;run-7599",
"logdir": "/root/avocado/job-results/job-2017-07-27T15.19-eec9fe4/test-results/5-db.py:DBTest.test_db_start;run-7599",
"logfile": "/root/avocado/job-results/job-2017-07-27T15.19-eec9fe4/test-results/5-db.py:DBTest.test_db_start;run-7599/debug.log",
"start": 1501139986.447326,
"status": "FAIL",
"test": "5-db.py:DBTest.test_db_start;run-7599",
"time": 0.04000496864318848,
"url": "5-db.py:DBTest.test_db_start;run-7599",
"whiteboard": ""
},
输出格式
- 屏幕打印格式
#avocado run --mux-yaml data/cluster2.yaml -- ha.py db.py lb.py
JOB ID : eec9fe46c4aee730ee0e4433967244d7781e5c8e
JOB LOG : /root/avocado/job-results/job-2017-07-27T15.19-eec9fe4/job.log
(1/9) ha.py:HATest.test_qmcls_start;run-7599: PASS (0.00 s)
(2/9) ha.py:HATest.test_qmcls_stop;run-7599: FAIL (0.04 s)
(3/9) ha.py:HATest.test_qmcls_show;run-7599: PASS (0.00 s)
(4/9) db.py:DBTest.test_db_stop;run-7599: PASS (0.00 s)
(5/9) db.py:DBTest.test_db_start;run-7599: FAIL (0.04 s)
(6/9) db.py:DBTest.test_db_backup;run-7599: PASS (0.00 s)
(7/9) lb.py:LBTest.test_lb_join;run-7599: PASS (0.00 s)
(8/9) lb.py:LBTest.test_lb_kickout;run-7599: PASS (15.02 s)
(9/9) lb.py:LBTest.test_set_kickout_time;run-7599: PASS (0.00 s)
RESULTS : PASS 7 | ERROR 0 | FAIL 2 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB TIME : 16.65 s
JOB HTML : /root/avocado/job-results/job-2017-07-27T15.19-eec9fe4/results.html
结果导出文件格式:
- 查看详细测试结果:
/root/avocado/job-results/job-2017-07-25T09.14-56b4aab/results.json

- 查看日志信息:
/root/avocado/job-results/job-2017-07-25T09.14-56b4aab/job.log

- HTML格式结果:
/root/avocado/job-results/job-2017-07-26T14.49-020f341/results.html

- 查看详细测试结果:
命令行参数
avocado run/list / variants / config
- run 执行测试
- list 列出函数包含的测试案例
- variants 查看参数配置信息
- config 查看配置路径信息
avocado run --mux-yaml
- --mux-yaml 指定参数配置文件
执行命令可指定测试案例函数,即可执行测试案例,例如:
avocado run --mux-yaml data/cluster1.yaml -- ha.py lb.py db.py或
avocado run ha.py lb.py db.py --mux-yaml data/cluster1.yaml查看配置文件参数详细信息
avocado variants -m --mux-yaml data/cluster1.yaml --summary 2 --variants 2查看日志和结果文件位置
avocado config --datadir#avocado config --datadir
Config files read (in order):
/usr/local/pyenv/product/etc/avocado/avocado.conf
/usr/local/pyenv/product/etc/avocado/conf.d/gdb.conf
/root/.config/avocado/avocado.conf Avocado replaces config dirs that can't be accessed
with sensible defaults. Please edit your local config
file to customize values Avocado Data Directories:
base /var/lib/avocado
tests /usr/share/avocado/tests
data /var/lib/avocado/data
logs /root/avocado/job-results
avocado list nvmtest.py 列出具体的测试用例函数有哪些
avocado list -V/--verbose nvmtest.py查看详细信息
oravocado list nvmtest.py -V/--verbose#avocado list ha.py --verbose
Type Test Tag(s)
INSTRUMENTED ha.py:HATest.test_qmcls_start
INSTRUMENTED ha.py:HATest.test_qmcls_stop
INSTRUMENTED ha.py:HATest.test_qmcls_show TEST TYPES SUMMARY
==================
ACCESS_DENIED: 0
BROKEN_SYMLINK: 0
EXTERNAL: 0
INSTRUMENTED: 3
MISSING: 0
NOT_A_TEST: 0
SIMPLE: 0
基于Avocado 的 QData MySQL自动化测试.md的更多相关文章
- 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础
第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1 初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...
- 基于 SWTBot 进行 Eclipse GUI 自动化测试
背景简介 在软件开发领域,持续集成和部署对于软件测试自动化提出了越来越高的要求,基于 Eclipse 应用在这一需求中仍然占据重要的组成部分.目前主流的测试自动化工具主要以录制回放的功能为主,辅助以脚 ...
- nightwatchjs 基于nodejs&& webdriver 协议的自动化测试&&持续集成框架
nightwatchjs 是基于nodejs&& webdriver 协议的自动化测试&&持续集成框架 参考架构 参考资料 http://nightwatchjs.or ...
- 技术实战:基于 MHA 方式实现 MySQL 的高可用(转)
转自:http://os.51cto.com/art/201307/401702_all.htm MHA故障转移可以很好的帮我们解决从库数据的一致性问题,同时最大化挽回故障发生后的数据.本文分享了基于 ...
- 基于Appium、Python的自动化测试
基于Appium.Python的自动化测试环境部署和实践 第一章 导言 1.1 编制目的 该文档为选用Appium作为移动设备原生(Native).混合(Hybrid).移动Web(Mobile ...
- 基于Selenium+Python的web自动化测试框架
一.什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.S ...
- 基于GTID搭建主从MySQL
目录 基于gtid搭建主从MySQL 一.GTID的使用 二.GTID的简介 三.GTID的构成 四.查看GTID的执行情况 4.1 gtid_executed 4.2 gtid_own 4.3 gt ...
- 基于Python的HTTP接口自动化测试框架实现
今天我们来讲一下基于Python的HTTP接口自动化测试框架的实现,范例如下: 一.测试需求描述 对服务后台一系列的http接口功能测试. 输入:根据接口描述构造不同的参数输入值 输出:XML文件 e ...
- 如何基于Azure平台实现MySQL HA(方法论篇)
我们都知道,相较于传统的数据中心,Pulic cloud也有劣势,比如说数据库的HA,很多熟悉公有云平台的读者都知道,因为出于安全性性考虑以及一些技术条件的限制,很多本地数据中心的mysql HA方法 ...
随机推荐
- 【阿里聚安全·安全周刊】科学家警告外星恶意代码|新方法任意解锁iPhone
本周的七个关键词: 外星恶意代码 丨 任意解锁iPhone 丨 安卓9.0 丨 黑客攻击医疗设备 丨 仙女座僵尸网络 丨 苹果联合创始人被骗比特币 丨JavaScript -1- [恶意代码] ...
- Samba服务器的安装与配置
Samba服务器主要的功能是实现本地windows系统下方便读写局域网内虚拟机下的文件: Samba与window连接需要使用NetBIOS协议,请确认你的Windows系统已经安装了NetBIOS协 ...
- Java集合框架(六)—— Collections工具类
操作集合的工具类Collections Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了将集 ...
- 批标准化(Batch Norm)
BN作用: 加速收敛 控制过拟合,可以少用或不用Dropout和正则 降低网络对初始化权重不敏感 允许使用较大的学习率 一.如何加速收敛? 通过归一化输入值/隐藏单元值,以获得类似的范围值,可加速学习 ...
- hihoCoder 1044 : 状态压缩·一 状压dp
思路:状态压缩,dp(i, j)表示考虑前i个数且[i-m+1, i]的选择情况为j.如果要选择当前这个数并且,数位1的个数不超过q,则dp[i+1][nex] = max(dp[i+1][nex], ...
- ThreadLoacl,InheritableThreadLocal,原理,以及配合线程池使用的一些坑
虽然使用AOP可以获取方法签名,但是如果要获取方法中计算得出的数据,那么就得使用ThreadLocal,如果还涉及父线程,那么可以选择InheritableThreadLocal. 注意:理解一些原理 ...
- python语言基础语法笔记<note2--面向对象编程>
Python面向对象编程(OOP) 一.面向对象过程的优点特征: 封装 模型的特征和能力打包在一起 模型的改变由模型自身完成 隐藏模型的细节,外界只能使用,不能改变 继承 符合自然界分类规律 快速实现 ...
- php基本函数的学习(2)
chgrp chgrp — 改变文件所属的组 说明: bool chgrp ( string $filename , mixed $group ) 尝试将文件 filename 所属的组改成 grou ...
- [微信JSSDK] 解决SDK注入权限验证 安卓正常,IOS出现config fail
实测有效 解决微信游览器和企业微信游览器JSSDK注入权限验证 安卓正常,IOS出现config fail 一开始我们想到的是可能微信这边的Bug,但细想一下应该不是.因为可能涉及到了IOS的底层原理 ...
- webpack入门宝典
前提摘要 本文是经过二天自己学习总结出来的一些心得,本文是在最新版的webpack4x的基础上进行配置的(听说webpack4x比以往改变都很大有些插件可能有问题).如果你以前没怎么接触过Webpac ...