IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> JMeter测试JDBC应用的实例 -> 正文阅读

[开发测试]JMeter测试JDBC应用的实例

一、项目基本背景

某游乐园为应对春节入园高峰,需对入园的闸机检票系统进行针对性的性能测试,然后依据测试结果对系统的软硬件等进行相应的调整。

此闸机检票系统是由国外开发团队基于Dephil开发并运行在Windows系统中的一个系统,有关于业务流程和业务逻辑并没有相应的文档进行说明。由于比较清楚此闸机系统是与数据库直连,所有的操作都是直接对数据库进行读写等操作,所以最终确定对该系统的性能测试主要就是对数据库的性能测试

二、测试基本流程

01、 工具的选取

目前针对JDBC应用进行性能测试的工具比较多,LoadRunner作为一款比较成功的商业软件,能通过VirtualUser Generator生成代理和虚拟用户来模拟业务流程和真正用户的操作行为,而且后期的数据处理和报表生成功能十分强大。JMeter作为一款开源软件,安装简单,不依赖于界面,脚本维护方便,作为性能测试工具功能比较完善。

就软件功能的优缺点而言,LoadRunner自然是最好的选择,但是LoadRunner免费版的只提供50个Virtual User,无法满足客户需求,所以性能测试执行的工具还是选择了开源免费的JMeter。不过LoadRunner依旧可以作为我们脚本制作的辅助工具,比如抓取系统操作过程中调用的SQL语句。

此闸机检票系统有一个比较突出的特点是会跟一些外接硬件进行交互,在交互过程中也会执行一些SQL语句。由于LoadRunner自身的缺陷,导致系统与硬件交互时调用的SQL语句无法被抓取,此时必须使用DB Trace将LoadRunner未抓取部分的SQL语句找到,填充到我们编辑的脚本中。

基本思路确定后,接下来就是将思路付诸行动

02、抓取并提取SQL语句

打开LoadRunner创建一个COM/DCOM协议的脚本

在这里插入图片描述
在LoadRunner的录制功能中完成配置

在这里插入图片描述
开始录制后在检票系统中完成所有实际需要进行的操作,结束录制并等待记录生成

在这里插入图片描述
通过LoadRunner中的搜索功能搜索出所有的SQL语句,提取后按照先后顺序进行排列

在这里插入图片描述
然后通过DB Trace抓取LoadRunner未能抓取部分的SQL语句,将其整理到LoadRunner获得的SQL语句列表中去。至此我们已经获得了全部我们想要的SQL语句。

03、完成脚本的编写及调试

前期已经已经确定了具体执行性能测试的工具是JMeter,接下来就是进行一系列的配置及将得到的SQL语句移植到JMeter脚本中。

首先添加数据库的配置文件并修改相应的参数

在这里插入图片描述
然后创建线程组,将得到的SQL语句按照先后顺序放到JDBC Request中

在这里插入图片描述
最后提供相应的数据并运行,进行必要的调试

在这里插入图片描述
04、 JMeter脚本的一些情况说明

  • Q:脚本中有大量的JDBC Request,为什么不是将所有的SQL语句放到同一个Request中?

  • A:由于下边的SQL语句可能需要从上边的SQL语句中获取相应的值,所以需要分开并将上边SQL语句中得到的某些字段结果进行参数化处理。

  • Q:如何实现脚本中字段的参数化处理及传递?

  • A:首先在Variable names中对获得的不同的数据分别进行定义并命名,然后在后续的JDBC Request中使用

    在这里插入图片描述

  • Q:进行参数化调用时为何需要加上“_1”?

  • A:同一条SQL语句可能会搜索出多条记录,那么参数化后的字段名称会代表多个值,加上“_1”表示取这些值中的第一个。

  • Q:Timer加在JDBC Request内和外有什么区别?

  • A:Timer加在JDBC Request外表示对所有的Request都起作用,每执行一个JDBC Request都会首先执行一次Timer。Timer加在JDBC Request内表示只对当前Request起作用,执行当前的request时会首先执行一次Timer,不会对其他的Request有任何的影响。

在这里插入图片描述

三、 典型问题及解决办法

  1. 问题:系统调取硬件执行指令部分的操作无法被LoadRunner捕获。

解决办法:尝试过使用软件来替代硬件的方式,仍旧无法解决。最后使用DB Trace获取相应的SQL语句来补全LoadRunner所缺失的那部分。

  1. 问题:JMeter脚本完成后无法成功运行并报错。

解决办法:根据报错的具体情况进行处理,很大的可能性是因为没有将sqlserver的jar包放到JMeter文件夹的lib目录下。

  1. 问题:JMeter 脚本中只有一条SQL语句时是可以成功运行的,但是多条SQL语句就无法正常运行。

解决办法:在配置JDBC Connection Configuration文件时,Database URL中应当添加上“allowMultiQueries=true”。

  1. 问题:当一个JDBC Request中只有select语句时可以成功运行,但是含有其他类型的SQL语句时就无法成功运行。

解决办法:将JDBC Request中的Query Type修改为“Callable Statement”

四、心得体会

  1. 并不是所有的不清楚详细业务逻辑的系统都是不可以进行性能测试的,性能测试对于业务逻辑的知情度要求会低一点。

  2. 性能测试不是功能测试,在进行性能测试时要进行思维的转变,它不要像功能测试那样要求面面俱到。在进行性能测试时有些不重要的点是可以舍弃的。

最后也为大家准备一份软件测试学习资源:

囊括了:

  • 2021.9月最新版软件测试全套完整视频
  • 500套软件测试面试题+面试讲解视频
  • 10套典藏版 超高价值的软件测试试卷
  • 300套软件测试项目简历模板
  • 80套各类软测用例的设计模板合集

有需要的朋友可以关注我的公众号:程序员二黑,直接获取!

最后一句话送给大家:机会只垂青有准备的人,这是一个靠本事的社会。有时候,你之所以发展得不好,不是因为没有机遇,而是因为你没有准备好,导致机遇与你擦肩而过。如果你想要学习,什么时候开始都不晚,而不是瞻前顾后,你只要用尽全力,剩下的交给时间!

加油吧,测试人!路就在脚下,成功就在明天!

精彩推荐:

公司新来的阿里p8,看了我做的APP和接口测试,甩给了我这份文档…

腾讯二面:web测试问题被虐哭了,直到学长给了我这些知识点…

面试滴滴科技,被按在地上摩擦,鬼知道我经历了什么?

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-11-18 11:28:03  更:2021-11-18 11:28:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 4:25:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码