性能测试数据如何准备?
1. 准备多少基础数据
数据库中的数据称之为基础数据,一个系统上线一段时间后库里都会有很多的基础数据,那么为了模拟性能测试真实环境,我们需要往库里插入一些基础数据后在做性能测试,那么插入多少数据呢?有几个点可以考虑:
第一个:可以参考具体系统的业务内容和使用规模
第二个:可以参考类似系统的数据量规模
第三个:尽可能多增加一定比例的冗余数据
具体来说就是可以跟项目团队一起分析预估出一个值,值的设定考虑到项目未来的发展和规模,如果存在竞品的情况下可以通过一些手段和途径获取类似系统的数据量规模,对于分析得到的值我们可以按一定比例来增加获取冗余数据,举个简单的例子我们分析得到某个系统预估是1年200万的量,那么我们可以按照一定比例如1:5设定我们的基础数据为1000万,让性能测试更加贴近真实场景又能保证未来数据量增加的情况下系统是否能够扛得住。
2. 用什么方法造测试数据
一般有以下几种:
第一个:
存储过程造数据,小技巧:批量插入,最后一次commit
优缺点:
造数据比较快,但是要对表之间关联结构很清楚,而且造出来的数据相对比较单一
另一个:
可以通过loadrunner或者jmeter等自动化工具从页面或者接口,调用写数据的接口或页面
优缺点:
造的数据更真实因为它是模拟用户入口去造数据的,但是造数据慢数据量大的时候耗时长
7
性能测试工具的选择?
1. 性能测试工具的选择
一般有以下几种:
Loadruner
自写的多线程压力测试程序
其他的第三方测试工具:webload、jmeter等
第一个Loadrunner虽然比较强大,但是它是收费的,很贵,据我了解身边很多用loadrunner的测试朋友大部分用的都是试用期或者盗版的,很少有公司愿意花这个钱买个正版的给测试用,盗版的一旦被查到,可能会被告死,特别是国际上的那些大公司被发现了使用盗版软件不说官司丑闻,就单单对公司形象的影响都是极为不利的。
第二个可以自己写一个性能测试程序,或者让开发帮你写
第三个用第三方测试工具来测试,目前比较流行的jmeter工具,它是开源免费的,支持自定义扩展,安装方便,但是本身的报表功能不是很强大,虽然有报表插件来弥补这一缺陷,但是用过loadrunner就知道对比jmeter的报表,jmeter还是没有loadrunner的报表方便和强大的
选择的标准:
能完成特定要求的性能测试要求即可,优先考虑使用强大图表和控制能力的loadrunner
8
Loadrunner的原理
Loadrunner(后面简称lr)主要由如下几个模块构成:
Vuser Generator(录制脚本编写脚本):
录制脚本、具备调试脚本的能力,如加关联、参数化等
Controller:
(场景设置):场景设定控制器,用于发起请求
load Generator:
(负载生成器)
Analysis:
漂亮的图表,进行测试结果报告分析
vuser generator支持录制或者手动编写脚本,支持进行优化调试脚本,controller负责安排load generator来运行脚本对被压测系统进行施压,load generator在测试结束会收集各自的脚本执行日志以及用户响应时间等数据,汇报给controller,由controller进行汇总测试数据
Analysis会针对汇总的测试数据进行分析展示,形成报表,让数据可视化,便利测试人员分析测试结果。
9
性能测试怎么做?
我们以loadrunner工具为例来进行说明,其他工具性能测试原理是一样的可以类推,我们讲的是具体的测试工具执行的一个流程,至于确定测试范围、测试环境搭建、测试数据准备等等这些在上面的章节已经讲过了,这里不再赘述:
1. 规划测试
顾名思义就是什么时间测什么,怎么测,规划好测试在什么时间进行,测试多少个场景,每种场景执行策略如何,保证后续性能测试工作有章法可循,而不是想到哪做到哪,这样容易漏测,该过程会出来性能测试方案和用例
2. 创建Vuser脚本
也就是测试脚本准备,lr是vuser脚本,jmeter就是线程组以及各请求的脚本编写,编写的脚本经过调试和优化后,保证独立模式运行能够成功,该过程会出来性能测试脚本
3. 创建测试场景
即按照测试方案和用例来配置脚本放到相应的场景中,为测试的运行做准备工作
4. 运行测试场景
即执行被添加到场景中的测试脚本对被压测系统进行施压的一个过程。
5. 监控测试场景
当我们执行测试场景的时候,还要监控测试过程,了解服务器等资源的消耗情况,监控收集请求响应时间、tps等性能指标
6. 分析测试结果
测试完成以后,对于收集到的测试日志和监控数据我们要进行分析,判定此次压测是否有效,被测试系统性能是否达标,该过程会出来性能测试分析报告。
对于以上的6步,当我们分析测试结果不达标以后,开发人员会对系统进行调优,调优完成后我们会进行再次的性能测试,也就是说上面的步骤可能不是一轮就结束了,会有循环的过程,而且在循环过程中测试脚本、测试策略以及加压方式都有可能会调整,目的都是为了更好的进行性能测试。(未完待续)