来源:领测软件测试网 TPCC-MYSQL是由percona发布一个用来测试数据库的压力工具,模拟一个电商的业务, 主要的业务有新增订单,库存查询,发货,支付等模块的测试 1.下载 2. tpcc_start 进行压力测试 [root@mysql-centos6 src]# make cc -w -O2 -g -I. /tpcc_load 127.0.0.1:3306 tpcc1000 root 123123 10 5.执行测试 # . /tpcc_start -h127.0.0.1 -P3306 -d tpcc1000 -uroot -p123123 -w 10 -c 12 -r 120 -l 15 -f tpcc_mysql_20160512 [warehouse]: 10 [connection]: 12 [rampup]: 120 (sec.)
小贴士:TPC组织(摘自百度百科) TPC是“事务处理性能委员会”的简称,,是由数10家会员公司创建的非盈利组织,总部设在美国。该组织对全世界开放,但迄今为止,绝大多数会员都是美、日、西欧的大公司。 任何厂家或其它测试者都可以根据规范,最优地构造出自己的系统(测试平台和测试程序)。 该批发公司有N个仓库,每个仓库供应10个地区,其中每个地 区为3000名顾客服务。在每个仓库中有10个终端,每一个终端用于一个地区。在运 行时,10×N个终端操作员向公司的数据库发出5类请求。 N是一个可变参数,测试者可以随意改变N,以获得最佳测试效果。TPCC值可以反映出系统的性能价格比。TPCC测试系统每分钟处理的任务数,单位为tpm,(transactions per minute)。 系统的总体价格(单位为美元)除以TPCC值,就可以衡量出系统的性价比(单位为$/tpm),系统的性价比值越小,系统的性价比越好。 2.
Tpcc-mysql是percona基于tpcc衍生出来的产品,专用于mysql基准测试,可运行于 Windows、GNU/Linux、UNIX 以及 Mac OS 系统之上。 下面是在ubuntu上安装tpcc具体步骤: 安装make工具,执行sudo apt-get install make 安装git,执行sudo apt-get install git 安装mysql-server 一些共用文件),执行sudo apt-get install libmysqlclient-dev--否则会出现‘/bin/sh: 1: mysql_config: not found ’错误 下载tpcc-mysql 源码,执行git clone https://github.com/Percona-Lab/tpcc-mysql.git 进入tpcc-mysql/src目录,执行make命令
1、概述 TPC-C是专门测试OLTP系统的规范,tpcc-mysql是percona基于TPC-C(下面简写成TPCC)衍生出来的产品,专用于MySQL基准测试。 上级目录生成tpcc_load和tpcc_start 2个二进制文件) 3、创建库表、生成测试数据 mysql> create database tpcc1000; mysql> use tpcc1000 /tpcc_load -h127.0.0.1 -d tpcc1000 -u root -p "" -w 10 -w 表示warehouse个数,10表示10个仓库 4、压测 . /tpcc_start -hlocalhost -P3306 -dtpcc1000 -uroot -p xxx -S /tmp/mysql.sock -w10 -c32 -r10 -l100 参数含义 : -w 仓库数 -c 连接数 -r 预热时间 -l 压测时间 5、压测结果解读 10 - 从基准测试开始的秒数; trx: 2132- 在给定时间间隔内执行的新订单交易数量(在这种情况下,为前10秒
第45讲:POC-TPCC测试PostgreSQL第45讲:3月2日(周六)19:30,钉钉群& 视频号(数据库老陈)直播内容1:TPC-C介绍内容2:TPC-C测试部署内容3:TPC-C报告TPC背景介绍 对实时性要求不高,数据量大测试标准-OLTPOLTP测试模型一直是TPC组织的重点测试标准,TPC-C测试模拟了一个比较复杂的OLTP应用环境, 是一个在线零售公司,此公司对10W种商品进行销售,TPC-E ,则有W条记录 3)Stock 库存表:每个仓库有10W条商品的库存信息,因此总数目为W*10w 4)district区域表: 每个仓库管理10个区域,因此有W*10条记录 5) custoer客户表: user=tpcc password=123456 //warehouses与后面生成数据时指定的warehouses值要一致,根据客户实际的需求设置 warehouses=10 //并发客户端 terminals 数据库以及tpcc用户,密码为1234567、建立测试库,并加载数据 .
Percona版sysbench-tpcc - 模拟真实电商业务场景压力测试工具 可以为MySQL/Percona/MariaDB,以及MySQL协议的国产数据库选型,做性能参考。 --mysql-db=sysbench_tpcc --time=300 --threads=64 --report-interval=1 --tables=10 --scale=100 --db-driver =mysql prepare 注:业务表被水平分割为10张(用户表、订单表和商品表),数据会产生大约100G # 模拟真实业务场景压力测试 shell> . --mysql-db=sysbench_tpcc --time=10 --threads=64 --report-interval=1 --tables=10 --scale=100 --db-driver =mysql run 注:1)压测10秒 2)并发64个线程 3)每间隔1秒钟输出TPS信息 4)TPS数值越高,代表吐吞量就越高,性能就越好
fkey_stock_2 ON stock (s_i_id); CREATE INDEX fkey_order_line_2 ON order_line (ol_supply_w_id,ol_i_id); 三、测试 生成数据 cd tpcc-mysql-master . /tpcc_load -h172.18.10.66 -P3307 -d sharding_db -u root -p "123456" -w 10 # 在底层库验证数据分片 mysql -u wxy - 执行测试 . /tpcc_start -h172.18.10.66 -P3307 -d sharding_db -u root -p "123456" -w 10 -c 32 -r 60 -l 300 *******
话接上回(测试基础10问-上),继续问答之旅,答案是什么并不重要,重要的是引发一些思考。学问学问,边学边问。 06 测试是否需要过早的参与产品需求讨论? 很多测试人员会以挖掘出一个经过N个步骤(N大于10之类的),才会出现的缺陷为荣。个人并不是很认可这种观点。从用户的操作行为来看,可能永远无法发现这类问题。 10 测试有没有钱途 这个问题本来想放在第一问的,毕竟是大家最关注的问题。但个人觉的这也不是个问题。 测试的天花板也没有你们想的那么低。没事多看看招聘信息,多和行业高手互动。测试还是大有可为的。 10问聊完,大家对测试是否有新的认知呢? 在整理这10问题的时候,自己也做了更多的思考,测试这份职业还是比较好玩的。个人从事测试10多年,还是热爱这个行业的。测试相关的问题,欢迎沟通交流。 END 标星、点赞、关注三连走起,感谢支持。
什么时候进行性能测试? 在功能测试完成,所有的功能都比较稳定的时候,才可以做功能测试,一般在测试的中后期执行 性能测试术语 1.并发数: 广义并发数:同一时刻向服务器发送Http请求的用户数量;(有可能不是同一个功能) 在线用户数 性能测试类型 1.负载测试: (运行15min左右) 并发测试:在一定的软硬件环境下,系统的其他指标不变,测试系统在不同用户量访问级别下,系统性能的表现 容量测试:在一定的软硬件环境下,系统的其他指标不变 ,测试系统数据库数据量在不同的级别下,系统性能的表现 2.压力测试: 高于系统的最高负载,去运行系统,查看系统的表现 3.可靠性测试(疲劳测试): 低于系统的最高负载,去运行系统,查看系统的表现 4.配置测试 ,比较每次测试结果,从而确定各个因素对系统性能的影响。
/tpcc-mysql 目录下生成两个可执行文件 tpcc_load、tpcc_start tpcc_load是导入数据的脚本 tpcc_start是执行测试的脚本 b. 加载数据 1. /tpcc_load -h 127.0.0.1 -d tpcc1000 -u tpcc -p "tpcc" -w 10 下面就开始加载数据了: 指令会创建10个 warsehouse,加载完成后显示如下 开始基准测试 tpcc_start工具用于tpcc压测,基础测试指令也要根据自己建立的内容进行修改,比如仓库-w建了10个,那么这里-w后面就接10 # 开始基准测试 . /tpcc_start -h 127.0.0.1 -P 3306 -d tpcc1000 -u tpcc -p "tpcc" -w 10 -c 32 -r 10 -l 20 # |主机名| |端口| | - 从基准测试开始的秒数 trx: 12920 - 在给定的时间间隔内(在本例中为前 10 秒)执行的新订单交易。
测试通过执行软件的一系列操作,旨在发现潜在的错误、缺陷或问题,从而确保软件能够按照预期工作。而软件测试往往覆盖了不同的层次和类型,其中单元测试是针对软件中最小的独立单元(通常是函数或方法)进行的测试。 单元测试通常由开发人员编写,用于验证代码的正确性。 2、单元测试 单元测试是软件开发中的一种测试方法,用于验证代码中的最小单元(通常是函数或方法)是否按照预期工作。 单元测试旨在隔离和测试软件的各个独立部分,确保每个部分的行为都是正确的。 Python 中,单元测试是通过使用 unittest 模块来实现的。 这两个方法在每个测试方法执行前后分别被调用,以确保测试环境的准备和清理。 setUp:在每个测试方法执行之前调用。 通常用于准备测试环境,例如初始化变量、建立测试数据等,或在测试之前创建对象或设置必要的资源。 tearDown :每个测试方法执行之后调用。
最近在找资料的时候,翻出了早期从别的地方看到的关于测试基本知识30问。重新看了一遍,有很多感慨,原来自己也踩过那么多坑。故重新梳理了下,精简成10问,一起来看看那些看似小白,但又不太好回答的问题。 01 我适合做软件测试么? 个人认为,没什么合适不合适的。测试不需要天赋异禀,只要你努力,达到中上水准的测试能力基本没啥问题,还到不了拼天赋的情况。 02 软件测试很简单么? 在软件测试的初期,你可能只是需要按照别人给定的测试用例,机械地去执行就可以了,那是相对简单的。但是接下来,你需要形成自己的测试思维,结合业务去做用例设计。 3~4年之后,你要学习从整体上把控项目的测试进度,根据版本特性去制定测试策略,考虑测试的有效性和充分性。同时,需要通过一定的技术手段去提升测试效率。 去做更多的测试左移和右移。测试人员不应当把自己局限在测试的职责范围内,不断扩充自己的边界,不好么?测试难不难,取决于你的自我要求,市场会给你真实的答案,没事多看看相关的招聘信息。
本文链接:https://blog.csdn.net/wzy0623/article/details/102840342 本篇使用tpcc-mysql压测工具对实验环境的三节点Galera集群进行一系列性能测试 修改后的tpcc_test.sh文件内容如下: [mysql@hdp1~/tpcc-mysql]$more tpcc_test.sh # 初始化tpcc数据 mysql -uwxy -pP@sswo2d like 'wsrep_last_committed';" --skip-column-names | awk '{print $2}' | sed "s/\\\n//g") # 节点1执行压测,10 个仓库,32个并发线程,预热1分钟,压测5分钟 tpcc_start -h172.16.1.125 -d tpcc_test -u wxy -p "P@sswo2d" -w 10 -c 32 -r 60 三、测试过程 每次测试只需要执行tpcc_test.sh即可。 1. 缺省配置 获得缺省配置的测试结果,作为后面不同配置的对比基准。
to store SQL from the private SQL area 02 — 传输STS 有时我们需要在另外一个数据库上对STS进行优化,比较常见的是在生产库上收集需要优化的SQL,然后再测试库上进行优化 使用传输工具(如ftp)将.dmp文件从生产主机传输到测试主机。 在测试数据库中,使用Oracle Data Pump从.dmp文件导入STS到一个临时表中。 /tpcc@pdb1 DIRECTORY=DATA_PUMP_DIR DUMPFILE=sts.dmp TABLES=my_10g_staging_table ... /tpcc@pdba DIRECTORY=DATA_PUMP_DIR DUMPFILE=sts.dmp TABLES=my_10g_staging_table 使用DBMS_SQLTUNE.UNPACK_STGTAB_SQLSET pagesize 200 SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK(:sts_task) FROM DUAL; 注意这个优化任务要用到数据库中的对象,也就是说测试环境的数据要和生产环境的数据尽量一致
实验测试数据库表结构: 运行Sysbench工具创建TPCC 1000DW的表结构和初始数据。 --mysql-password=yourpassword --mysql-db=tpcc --time=0 --threads=16 --tables=10 --scale=1000 --db-driver 优化后测试: 修改MySQL配置,引入多队列线程池机制,并重复上述测试步骤:sysbench /usr/share/sysbench/tpcc.lua --mysql-host=127.0.0.1 -- 1000 --tables=10 --scale=1000 --report-interval=10 --db-driver=mysql run同样记录TPS和TpmC值,并与基线测试结果进行对比。 扩展测试: 将并发连接数提升至3000,观察优化后线程池在更高并发负载下的表现:sysbench /usr/share/sysbench/tpcc.lua --mysql-host=127.0.0.1
MySQL实例,创建测试账号 mysql> grant all on tpcc.* to hammerdb@'%' identified by 'hammerdb'; Query OK, 0 rows schema创建完成之后,我们可以登录数据库中简单查询以下数据(注意:如果以下三个语句任意一个查询到无结果,说明造数失败,会导致后续load测试无法进行): # 查询表中的数据 mysql> use tpcc Non_unique: 0 Key_name: PRIMARY Seq_in_index: 1 Column_name: w_id Collation: A Cardinality: 10 使用hammerdb进行oltp基准测试 前面2.1小节已经按照tpc-c模型(oltp模型)创建好了测试库tpcc,现在,我们基于tpcc库进行oltp测试 造数完成之后,我们点击"Destroy Virtual 3、总 结 我们平时测试MySQL时,大多数时候都是使用的sysbench、tpcc-mysql等基准测试工具,现在,你可以尝试着使用hammerdb来对MySQL做一做基准测试,虽然HammerDB测试工具大多数时候我们听到的都是用于
验收测试 为了消除这些问题,就需要验收测试。 所说的验收测试更偏重于需求确认,对需求的跟踪。 要与客户保持沟通,是客户对可交付成果的验收测试,开发与 QA 做能覆盖所有需求的自动化测试。 测试不是额外工作,是节省时间和金钱的方法。 不要被动接受别人提供的测试,不能因为测试这么要求,就必须这么办。 持续集成,从测试角度来说,单元测试,功能测试,系统测试,验收测试一整套流程。 验收是项目阶段末或收尾做的,开发过程中要经常单元测试,集成测试。
星云测试 http://www.teststars.cc 奇林软件 http://www.kylinpet.com 联合通测 http://www.quicktesting.net
下面是最流行的连续测试资源列表: continuous Testing eBook: 持续测试提供与开发中的应用程序相关的业务风险的实时、客观评估。 The Relationship Between Risk and Continuous Testing:了解业务风险和持续测试之间的关系,对持续测试的误解,以及如何帮助业务和技术经理在发布范围、时间和质量之间做出更好的权衡决策 学习关键的开发测试过程,以增加您的持续交付系统,以减少软件缺陷的自动发布的风险。 持续测试将带来三大商业利益。 1)连续测试驱动SDLC的中央决策系统,提供对应用程序健康状况的实时、可量化的评估。 2)持续测试建立了一个安全网,使软件开发人员能够更快地将新特性推向市场。 3)持续测试可以让管理者做出更好的权衡决策。
TDD 的三项法则 先写单元测试代码,然后再编写被测试代码。 一个单元测试失败,就停止编写测试代码,即保证每一次都是成功的,从这角度说,可以保证后续集成测试出现的 bug 变少。 产品代码恰好能够让当前失败的单元测试成功通过即可,不要多写。即写了必要的产品代码,就别写了,再先写测试代码,再写产品代码,不要多余。 TDD 的优势 确定性:就是无论改了什么,只要保证单元测试都覆盖到,只要保证单元测试都通过了,就可以确定代码没什么问题了,可以交付。 缺陷注入率:因为每写一点代码都要先测试,所以能够减少引入的缺陷。 文档:单元测试即文档,如果是遵循 TDD 的程序,只要看到单元测试,就能明白函数如何调用,什么参数,对象如何创建。 设计:比如一个函数调用其他函数,因为要单元测试,必须将两个函数解耦。 测试先行,会迫使你去考虑什么是好设计。事后写测试是防守,先写测试是进攻,强迫自己必须写出能够单元测试的解耦的代码。 专业人士的选择:TDD 是专业人士的选择。