00:02
然后呃说完那个性能,嗯测试的时候,我们大多数的性能测试工具,或者说是呃使用场景吧,一般也都是在呃本地啊起去执行一些呃脚本啊,或者是用解密或者说这种,但是我觉得像N格的这种框架的形式还是啊非常不错的啊,因为我们可能。自己在本地执行的时候啊,有些很多因素需要人为的去控制啊,比如说就我说的刚才说的那个监控啊,比我一旦发现把CPU超过70%或者80,我就把嗯测试用力给停掉啊,是这样的,嗯,所以说反特的测试框架,因为它是纯Java的,包含了一些格位,但两者都是兼容的,所以说它在做成Java服务这块啊,是非常方便的啊,所以这是压引擎的。
01:00
呃,结构图这个最上层,我们虽然说是写了这个压测服务啊,呃,但是其实他本地执行和在做成压测服务去执行,就是上面的sleep节点啊,都是可以的啊,打包方式有一点点的差别啊,服务的话是用spring,它自带了一个打包插件,它不支持,呃把spring项目打包成一个假包被。呃,原来的其他项目所依赖这样的形式,所以嗯,它默认的不支持,但是我们稍微改一下就可以了。所以说存在两种打包形式,然后我们首先看最底下的啊,也是反台式的车的框架啊,就是最基础的那版转台式车的框架啊,因为这两个框架是,嗯,我觉得。是呃,分布式的要包含fantastic,再加上呃这个项目框架,项目框架就不便于分享啊,因为是跟公司的项目业务是有关系的啊,所以我分成了两个啊,仓库啊,大家有兴趣的话可以去我仓库里面去看一下啊,原来的叫fantastic,呃分布式的那个叫DCS fantastic,嗯,DCS fantastic呢,没有集成NAS,是纯用HTTP请求去管理的,它要求就是呃,Master节点和六节点能够相互访问。
02:24
然后我们看泛的框架主要都做了什么?呃,什么工作?第一就是对协议API的进行封装,呃,包含了HTTP,呃,像double socket这些都可以,框架它是不挑协议的啊,主要是Java语言可以实现的,它都是可以的啊。前一段时间我还写了一个red呃的性能测试的一个系列啊,下一个阶段会写一些my circle的这样。然后就是压测模板,嗯,这个压测模板是。比较重要的吧,也也没有几个,一般常用的就一两个,我常用的就一个,然后呃,后面会单独的再介绍一下,然后性能执行引擎,嗯,性能执行引擎的话,这块嗯,优化了一些,然后现在目前有两个,然后可用的执行引擎,它是跟模板有一个一对二的关系,这样我常用的也只有一个啊,就是后面也会讲到,就是一个是呃现成的,一个是QPS的啊,有一个比较新的动态的。
03:35
啊,还在写啊,没有写太好,这就是呃反的测试框架整体的一个它需要实现的一些功能,它给上面的项目测试框架啊提供一些基础能力,然后项目测试框架嗯就比较简单了,就是说呃,我们首先对用户以及配置,包括一些登录啊,这些通用的啊head啊嗯,用户的签名怎么签啊,这些都需要在这一块去完成,这一块基本上是啊项目测试框架的一个基础,然后我们经常需要维护的就是模块,然后我们对整个项目的接口和模块进行呃分类,分成某几个模块,某几个模块下有多少个接口,然后把这些接口的参数封装成一个,把接口分成一个方法,把接口的参数当做啊方法的参数。
04:25
啊,去这样做一些封装,然后我们去把呃侧接口。改为测方法。这样就呃嗯避免了一些呃比较乱的一些情况,还有就是调用起来会比较方便啊,然后我们不用去关心接口URL接口参数的,呃怎么传啊,我们只需要调这个方法,把相应的参数给他就可以了。这里面有一个,嗯,有一些就是粉丝会问,就这个模块的一些,嗯,实现是怎么去做,然后怎么去把那个呃用户的呃,比如说登录的头N验证信息去怎么传递给接口的,因为这些都是自动的嘛,我们在测接口的时候,比如说这个接口只有一个int参数,我们只需要传这个int参数,把新建一个用户对象,然后传一个int参数就可以执行请求。
05:22
去,然后怎么去把用户的签名呃,以及用户登录信息,呃去呃,连带的把那个包括cookie啊,都带着发起啊,请求的时候都带起来啊,这个都是在。啊。哦。这个都是在用户呃配置这个呃模块去做的,嗯,这个我觉得是比较简单的,然后我最近在写一个就公共的项目的测试框架啊,大家有兴趣的话也可以去我仓库里面去看一下啊,但是不是特别全,但应该能比较理解人pan对HTTP协议呃做了一些简单的一些功能上的封装,他会把呃cookie啊或者说一些header的话内容呃底能能力提供出来,在这里面直接调用就可以了啊,这个就这里就因为涉及到项目框架的项目内容的话,不太方便展示啊,大家可以去看一下我的DEMO那个项目,然后流量模型呢。
06:29
嗯,这个就是,嗯,应该是前段时间做的一个功能,就是说我接口,比如说刚才提到的就这个接口只有一个int类型的参数,但是我们在做性能测试的时候,嗯,这个int类型的参数可能嗯范围可能就123。只能串一二或者三,但是在模拟实际流量的时候,这三个并不是平均的啊,有可能是一产,呃一占了50%,二占了20%,三占了30%这样的一个比例,然后我们就可以通过流量模型这个功能啊,这个实现这个对这个接口参数的比例进行一些设置啊这个功能,嗯比较简单嘛,就是啊分段的随机,这种随机的话,呃,有一种尾随机,有一种是真随机,嗯主要实现的思路就是嗯,把这个它的比例转化成int值,比如说就是一的就是五次,然后啊二的就是两次,三的就是三次,这样,然后再随机的按照这个模型,呃按照这个比例去取这个值,然后就发起这个请求的信息是这样。
07:42
然后一个接口的流量模型是这样的,然后对于针对一个模块,比如说U的模块,它可它有十个接口,十个接口呃,相互之间的比例模型,我们也是可以通过日志或者是统计的工具或者平台拿到的,而且这个流量模型的话。
08:04
Oh。针对于不同的时间,它流量模型是不一样的啊,有可能我们呃是比如抢购这种场景下。那嗯,查询的接口可能就是就是最多的了,查询下单这些就是最多的,然后其他的一些就可能比较少,然后我们平时的业务模型的话,就可能降低一些,就是我们会梳理啊不同的典型的业务模型,然后去拿到这些模型的流量,去实现这些流量,然后再拿着这些流量实现的脚本去到服务端发起。测试啊,测试服务在不同的场景下,它具体的一个性能指标啊,达不达到我们的预期,呃,因为这块应该来说是,呃,纯加密的内容,跟业务没有多大关系,而且技术上也比较难,哎,比较简单,就是实现起来会比较麻烦,因为不同的模型你都得写不同的脚本去实现。
09:04
然后OK,这就是啊项目测试框架的一个内容,然后呃测试服务呢,它就是呃测试服务就是把我们本地,因为我们实现,比如说我们实现了一个场景的接口测试用例,呃这个用例是一个隔位脚本的形式,然后我们去把这个脚本同步到服务器上,然后在服务器上去执行啊然后就接下来的工作大家都比较知道了,但是嗯,这个压测服务呢,就是把这个过程转化成服务,就是我们拿到写完一个脚本之后,把就呃写完一个用例之后,把用例提交,然后再上去执行这个用例。我们可能是应该是直接去调HTTP接口去执行这个用例,但是呃,这里面就涉及到任务的分发与执行,分发的话就是刚才提到这个master节点的工作,然后执行的话就六节点的工作,嗯,这个也比较简单。然后用力数据对应的就是啊,LA用力库和这个数据中心。
我来说两句