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 查看详细信息

    or avocado 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的更多相关文章

  1. 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础

    第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1    初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...

  2. 基于 SWTBot 进行 Eclipse GUI 自动化测试

    背景简介 在软件开发领域,持续集成和部署对于软件测试自动化提出了越来越高的要求,基于 Eclipse 应用在这一需求中仍然占据重要的组成部分.目前主流的测试自动化工具主要以录制回放的功能为主,辅助以脚 ...

  3. nightwatchjs 基于nodejs&& webdriver 协议的自动化测试&&持续集成框架

    nightwatchjs 是基于nodejs&& webdriver 协议的自动化测试&&持续集成框架 参考架构 参考资料 http://nightwatchjs.or ...

  4. 技术实战:基于 MHA 方式实现 MySQL 的高可用(转)

    转自:http://os.51cto.com/art/201307/401702_all.htm MHA故障转移可以很好的帮我们解决从库数据的一致性问题,同时最大化挽回故障发生后的数据.本文分享了基于 ...

  5. 基于Appium、Python的自动化测试

    基于Appium.Python的自动化测试环境部署和实践   第一章 导言 1.1 编制目的 该文档为选用Appium作为移动设备原生(Native).混合(Hybrid).移动Web(Mobile ...

  6. 基于Selenium+Python的web自动化测试框架

    一.什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.S ...

  7. 基于GTID搭建主从MySQL

    目录 基于gtid搭建主从MySQL 一.GTID的使用 二.GTID的简介 三.GTID的构成 四.查看GTID的执行情况 4.1 gtid_executed 4.2 gtid_own 4.3 gt ...

  8. 基于Python的HTTP接口自动化测试框架实现

    今天我们来讲一下基于Python的HTTP接口自动化测试框架的实现,范例如下: 一.测试需求描述 对服务后台一系列的http接口功能测试. 输入:根据接口描述构造不同的参数输入值 输出:XML文件 e ...

  9. 如何基于Azure平台实现MySQL HA(方法论篇)

    我们都知道,相较于传统的数据中心,Pulic cloud也有劣势,比如说数据库的HA,很多熟悉公有云平台的读者都知道,因为出于安全性性考虑以及一些技术条件的限制,很多本地数据中心的mysql HA方法 ...

随机推荐

  1. PHP页面间的参数传递

    我们定义page01.php和page02.php两个php文件,将page01中的内容想办法传递到page02,然后供我们继续使用.--------------------------------- ...

  2. HDU - 1043 A* + 康托 [kuangbin带你飞]专题二

    这题我第一次用的bfs + ELFhash,直接TLE,又换成bfs + 康托还是TLE,5000ms都过不了!!我一直调试,还是TLE,我才发觉应该是方法的问题. 今天早上起床怒学了一波A*算法,因 ...

  3. 【BZOJ2095】 Bridge

    Time Limit: 1000 ms   Memory Limit: 128 MB Description YYD为了减肥,他来到了瘦海,这是一个巨大的海,海中有n个小岛,小岛之间有m座桥连接,两个 ...

  4. postman 中调试接口的小记录

    1.form-data:  就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开.既可以上传键值对,也可以上传文件.当上传的字段是文件 ...

  5. 使用sed删除拼音的音调

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  6. 基础--Redis在Windows环境下的安装

    1. 安装Redis 1.1 下载安装包 https://github.com/ServiceStack/redis-windows#3-run-the-redis-serverexe-using-t ...

  7. SecureCRT + Tmux 分屏 高效开发

    最近发现了SecureCRT的一些好玩的功能, 具体如下: 1. 发送消息到所有的终端 首先选中查看-->交互窗口 此时会看到下面出现一个输入窗口 然后, 右击选择"发送交互到所有标签 ...

  8. PCI9054 DMA设置流程

    1.设置方式寄存器:设置DMA通道的传输方式,寄存器DMAMODE0或者DMAMODE1的位9:0-表示块传输,1-表示散/聚传输: 2.设置PCI地址寄存器:设置PCI总线侧的地址空间. 3.设置L ...

  9. 通过地址获得经纬度(百度Geocoding API)

    1.什么是Geocoding? Geocoding API 是一类简单的HTTP接口,用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,用户可以使用C# .C++.Java等开发语言发送HT ...

  10. 芝麻HTTP: Learning to Rank概述

    Learning to Rank,即排序学习,简称为 L2R,它是构建排序模型的机器学习方法,在信息检索.自然语言处理.数据挖掘等场景中具有重要的作用.其达到的效果是:给定一组文档,对任意查询请求给出 ...