和中间件有关的测试怎么做?

作者&投稿:温逸 (若有异议请与网页底部的电邮联系)
如何进行中间件测试~

J2EE和CORBA我不知道。
COM/COM+/DCOM我略微知道点。
学这个,C语言是必须的。MS的所有API都是以C的形式提供的。
工具,建议VC++或VC++.net.当然了,用别的语言也可以写。但是总有些小问题。(现在的VC++或VC++.NET都集成了向导,所以楼主只要掌握编程知识就可以了。)
需要学的技术,ATL。
推荐给你几本书吧。不过都是老书了,很经典
《ATL高级编程》
《COM本质论》
《COM高级编程》
学上面这些东西,最起码楼主要对VC++有一定的基础。也就是说楼主要有编程的基础。
总之,楼主说的,不是初学者可以直接学的。如果楼主是初学者,而且想精通这个领域,请先把基础学好,而且你要领悟中间件的精华,你必须要有一定的项目经验。你才能体会到它的好处。
好好的打基础吧。

手机中间件?什么意思 按键吗? 要是按键就是黑盒测试。。简单多啦 就是测试下功能 能不能用、、、

性能测试的一些(我们用的)方法 * 2


1.观测, 观测, 观测

-eBPF/Systemtap

-中间件自身提供观测

-USE


2.测试工具校准

关于观测:

第一,推荐两种观测工具,eBPF或Systemtap;

第二,我们自己也做中间件,我们中间件自身是提供了一些观测指标的,向大家介绍一下这种方法;

第三,有一种线程是对于资源消耗的观察手段,即USE;


l  eBPF 操作系统级的观测

eBPF此处引用我的同事洪斌在今年的PHPCON的演讲,他的演讲主题是《MySQL性能诊断与实践》,其中详细的介绍了一下这个工具能给大家带来什么好处,列举其中几个,如:

1.   延迟分布,比如MySQL请求的延迟,VFS延迟,Ext4的延迟,块设备的延迟等;

2.   MySQL的文件IO压力分析;

3.   临时表的生命周;

4.   短连接的分析;


举一个例子,下图是eBPF的一个脚本,可观察MySQL的延迟,它会给大家列出延迟的分布曲线:

左边这一类是延迟,从零到一,二到三,四到七,它是指数级增长,单位是微秒,可以看到的是 压力打在数据库上的平均延迟,大量的数据压力在128微妙到255微妙之间,这个数据库的整体延迟还是不错的。

这张材料引用自Breddan Gregg的项目BCC,是eBPF的实用脚本集,它能观测操作系统的方方面面,来帮助大家做压力观测。

l  中间件自身提供观测

操作系统的观测已经很全了,为什么中间件本身也要提供一些观测点,我们自己的中间件DBLE,是一个开源项目,GitHub上可以搜到,在DBLE中我们提供了这样的一种观测方法,如下:

DBLE把一个压力下来分成了六个阶段:

- 开始梳理

- 完成解析

- 完成路由分配

- 从数据库回收结果

- 后置处理

- 反馈处理

每个阶段提供了时间分布,这样我们可知道压力到底在中间件的哪一个阶段变慢。

比如在这个数据下,中间件的性能其实不错,是因为从第三个点到第四个点之间是后端数据库的处理,它占了整个处理时间的70%以上,所以在这种情况下可以判断后端数据库已经慢了,而不是中间件产生了什么太大的问题,所以中间件本身应该提供观测。

在这个项目的文档中, 我们把画了中间件的压力处理流程,其实对于大部分的中间件都是这样的,这张图在DBLE开源的文档上都可以找到。安利一下我们自己的中间件DBLE,大家有兴趣的话可以去看一下,文档齐全,分析方法也很齐全。

中间件本身的观测与操作系统的区别在于: 中间件提供的视角是站在压力处理的视角来提供的,操作系统视角是站在资源的视角来提供,这两个视角缺一不可。如果只知道操作系统说IO压力大,但是并不知道是哪个环节造成的压力大,那诊断瓶颈的成本会比较高. 这就是为什么中间件要补充一个视角。

 

l  USE

对于资源来说,强烈推荐《性能之巅》这本书,它介绍的分析方法叫USE,就是使用率、饱和度、错误率这三个指标就足以评估一个资源,IO资源也好,网络资源也好,足以评估一个资源现在的使用状况。

举一个例子,为什么使用率和饱和度得分开,如果现在操作系统告诉我们内存占用率是100%,内存能不能再申请出来一块?是可以的,因为内存的使用率100%,其中比如说有50%是分给buffer和cache, 操作系统会自动回收,这种情况下内存的使用率是100%,但饱和度并没有达到饱和,我们可以继续使用内存,直到它的饱和度上升到100%为止,这个内存就再也申请不出来了。

所以这就是为什么这本书将使用率和饱和度一定要拆开的原因。强烈推荐! 

我们在DBLE中间件内部也提供了类似这样的观察机制,有点像Linux的Load average. 我们对于它的每一个线程的使用都提供了一分钟、五分钟或者是十五分钟这三种使用率的评估。通过使用率就可以观察到在并发压力下中间件的运行状况到底是死在了一根线程上,还是每根线程上承载的压力差不多。之前关于线程公平性的问题也可以通过这个指标来诊断。

2.测试工具校准

测试工具校准,举个例子,BenchmarkSQL,是Java版的TPCC,不少银行都在用它检验一个数据库或者是检验一个中间件能不能正常表现,但是我们碰到了这样一个问题:在测试压力中, 测试脚本要删一个记录,如果删不掉我就一直的删,一直删,但是这个工具在RR的隔离级别下造成一个死循环。

 


这个死循环是这样的:

第一句话它把auto commit设成0;

第二句select就会开启一个事务;

第三句话在这个压力下跑过一段逻辑之后再select看看这行数据还在不在,如果在就去删掉它。如果隔离级别是RR的,在第二三句之间把这行数据删掉,那么此时还能看到这行数据对吧. 但之后的delete回应没有影响数据行,所以BenchmarkSQL就会陷入上面的这条死循环,看到数据, 删除, 没删掉, 然后就一直会去删,但是一直能看到这行数据,所以就会陷入这个死循环。

换句话说BenchmarkSQL,在RR的隔离级别下就会造成这样一个死循环。 很难想象这个工具是在银行客户中被大量使用. 有一天项目经理告诉我,友商的中间件好着啊,然后我们就必须要去研究这款中间件,为什么它没有问题,原因是设置了RR的隔离级别, 它实际下到数据库的压力是RC隔离级别,RC隔离级别错在第三步看不到这条数据,它就不会跑下面这个循环,所以人家的中间件的错误将测试工具的错误抵消了。我们呼吁在测试时保持科学的态度.

在开始演讲之前姜老师的笔记本在这个环境下工作是好的,我说能不能换我的笔记本做这个演讲,我就把线插入我的笔记本然后两边都显示不出来了. 这个时候姜老师最应该说的一句话是什么呢?在我的环境下它是好的啊,但他并没有说,这是一个很科学的态度。

关于性能测试,我们推荐两个方法:

第一个方法,性能测试一定要去观测,观测的目的是什么,看到瓶颈,看到瓶颈的目的是什么?解决掉它以获得一个完全可以重复的正确的性能测试值来获得正确的结论。

第二个方法,测试工具一定要校准,业界常用的测试工具有很多,不要相信一些小众的测试工具,每一种测试工具都一定要校准。校准的话可以用多种测试工具同时去跑,去校准,或者是去分析测试工具的压力类型,刚才的观测过程就足以分析一个测试工具实际下发到后端的压力到底是什么,足以看到它的压力类型是什么,分析它的压力模式是不是正确的,以做测试工具校准。 

所以在我们的公司ISO流程里边有一个规定是半年用这个测试工具做一次校准,因为测试工具也在面临着升级,我们面临的测试工具很多,这是我想讨论的第二个部分。



我个人的想法:
1,考虑中间件和工程之间的编码问题
2.考虑中间件能否符合项目的性能方面的应用要求.
中间件本身是不需要我们进行的测试.


和中间件有关的测试怎么做?
比如在这个数据下,中间件的性能其实不错,是因为从第三个点到第四个点之间是后端数据库的处理,它占了整个处理时间的70%以上,所以在这种情况下可以判断后端数据库已经慢了,而不是中间件产生了什么太大的问题,所以中间件本身应该提供观测。在这个项目的文档中, 我们把画了中间件的压力处理流程,其实...

如何LoadRunner进行中间件的性能测试
1、接到项目时,首先了解系统架构,是B\/S,还是C\/S,使用什么应用服务器(即中间件),什么数据库?2、熟悉系统的功能、业务流程,明确项目的性能需求是什么?有哪些性能指标?3、编写性能测试计划。(有些公司不要求写)4、设计性能测试用例。(按场景设计思路来写比较清晰)5、准备测试数据,如一些...

服务器端测试主要包含什么?
服务器端测试,一个看似庞大却深藏玄机的话题。它涵盖了两种关键领域:直接针对Web或App服务端的测试,以及对数据库、缓存系统、中间件和文件系统等核心后端组件的测试。让我们一一深入解析。首先,直接服务端测试,如同Web或App开发团队的亲密伙伴。测试人员与前端测试团队协作,主要关注为前端提供数据支持的...

如何用LoadRunner对消息中间件ActiveMQ进行并发性能测试?
MQ的东西我测过,得使用JAVA自己写一段MQ的程序,调试成功后复制到LOADRUNNER脚本里面执行。你可以到网上找一段java是用MQ的代码参考一下

软件测试包括哪些?
最好是你自己做过的项目,简单的比如学生管理系统,把你怎么设计测试,怎么完成测试写上去就行,面试的时候,会问你具体问题的。 软件测试的方法一共有几种 1、按是否查看程序内部结构分为: (1)黑盒测试(black-box testing):只关心输入和输出的结果 (2)白盒测试(white-box testing):去研究里面的源代码和程序结...

软件测试人员必须得知道的软件开发工具、中间件、web服务器、操作系统...
总体上说,测试人员应该至少:1、熟知1-2门编程语言,最好能熟知过程化程序设计语言和面向对象程序设计语言各1种;2、掌握上述1-2们语言的相对应的可视化编程工具;3、中间件一般是.net、java开发用的较多,可以了解其中1种的就可以,但是必须了解中间件的基本知识,如中间件定义、原理、使用的基本方法...

常见的中间件有哪些
常见的中间件简介在软件开发中,中间件扮演着至关重要的角色,它们简化了复杂的服务和架构。以下是四种常见的中间件,各有其独特的优势和适用场景。首先,Tomcat,作为Java开发的首选,它是一款轻量级的服务器软件,适用于本地开发和个人项目。它支持最新的Java Servlet和JSP标准,更新快速且跨平台。虽然在...

计算机技能有哪些
计算机技能有测试专业技能、软件编程技能、网络,操作系统,数据库,中间件等软件测试的技能。1、测试专业技能:主要以测试人员应该掌握的基础专业技能为主。测试专业技能涉及的范围很广,既包括黑盒测试,白盒测试,测试用例设计等测试技术。2、软件编程技能:软件编程技能实际应该是计算机工作人员的必备技能...

gin 实践四 中间件(上)
在 routers\/middleware 文件夹下新建文件 recovery.go 修改 router.go 文件,引入刚刚写的中间件 简单测试一下随便修改之前的一个接口,然后访问 在没有引入中间件时,将会出现以下情况,前端没有返回,后台报错 引入中间件后,前端获取到了信息,后端也正常 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 为...

测试类型有哪些
功能测试,性能测试,压力测试,长时间测试,安装\/升级测试,兼容性测试,界面测试,数据库测试,中间件\/接口测试,回归测试,a测试,b测试,

玉泉区19795679861: 和中间件有关的测试怎么做? -
初郊和安: 我个人的想法: 1,考虑中间件和工程之间的编码问题 2.考虑中间件能否符合项目的性能方面的应用要求. 中间件本身是不需要我们进行的测试.

玉泉区19795679861: 如何LoadRunner进行中间件的性能测试 -
初郊和安: 1、接到项目时,首先了解系统架构,是B/S,还是C/S,使用什么应用服务器(即中间件),什么数据库? 2、熟悉系统的功能、业务流程,明确项目的性能需求是什么?有哪些性能指标? 3、编写性能测试计划.(有些公司不要求写) 4、设...

玉泉区19795679861: 怎么知道中间件的性能状态? -
初郊和安: 用RichAPM Plugins可以知道.它主要是对中间件的性能监控,通过实时获取各个实例名称的指标数据情况,分析情能状况.使各种插件类型的服务性能更加透视化.

玉泉区19795679861: 软件测试如何做安全性检查呢,比如输入什么特殊字符 -
初郊和安: 针对应用安全(网站类型) 第一步 收集信息,你需要了解,一般有多少个url地址及页面、请求的情况等等(一般在你完成功能测试后,已经知道了) 第二步 分层检查 简单的来的话,分2层,页面层,针对输入框进行跨站、SQL注入等字符的进...

玉泉区19795679861: 软件测试都学习些什么内容? -
初郊和安: 第一步,测试基础:测试基础是软件测试最最最重要的部分,只要你是做测试,不管是什么测试,测试的基础、理论知识都是必须学会的.大概就包括:测试计划编写、设计测试用例、编写测试报告、编写BUG报告单、跟踪BUG修复情况、还...

玉泉区19795679861: 在软件测试中如何搭建测试环境 -
初郊和安: 1.所需要的计算机的数量,以及对每台计算机的硬件配置要求,包括CPU的速度、内存和硬盘的容量、网卡所支持的速度、打印机的型号等;2. 部署被测应用的服务器所必需的操作系统、数据库管理系统、中间件、WEB服务器以及其他必需组...

玉泉区19795679861: 如何在工作中做好软件测试? -
初郊和安: 对于测试的对象的业务一定要很熟悉啊,当然包括其工作流程.所以把所有可能的流程路径勾画出来,分成基本流程,支路流程,异常流程,以利于分清主次关系.也可以根据数据流向进行测试.

玉泉区19795679861: 关于软件测试工程师 -
初郊和安: 开发一个好的软件,40%以上的时间用在测试上,所以软件测试工程师非常重要,用我们的话来说很吃香.现在从事程序员的人有很多,做测试工程师的人少点,工作压力不太大测试工程师应该具备的三项基本素质[1] 很多年轻或者刚刚从事测...

玉泉区19795679861: 我想更深入的做测试,请问谁有测试必须掌握的数据库及中间件的知识 -
初郊和安: J2EE和CORBA我不知道.COM/COM+/DCOM我略微知道点.学这个,C语言是必须的.MS的所有API都是以C的形式提供的.工具,建议VC++或VC++.net.当然了,用别的语言也可以写.但是总有些小问题.(现在的VC++或VC++.NET都集...

玉泉区19795679861: 电脑端应用程序测试流程是怎么样的?客户端和服务器数据库是通过什么实现数据访问的?怎么实现的?有哪些 -
初郊和安: 客户端和服务器实现访问我知道的有这2种,客户端直接连服务器数据库,这是2层的;客户通过中间层再连数据库访问的,中间层有不少,常用的webservice、也可以做成服务类的

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网