在之前的写过单链路性能测试实践中,部分接口的参数虽然有依赖性,但是由于部分接口是多次请求的,所以有一部分接口的参数比较随意,因为除了响应结果的基础验证之外没有任何其他校验部分。例如下面代码片段:
这里的方法就被调用了三次,三次的请求参数都是一样的,但接下来的逻辑处理只用到了某一次(这里用了第一次)请求的结果,提取参数作为下一次请求的参数。
下面分享几种我工作中常用到的增加参数多样性的方法。
这个是最常用到的,当部分的接口参数对接下来的用例没有实际影响的时候我通常会用一个随机的数字和字符串来设置参数。
这个相对简单,我是,分享一下简单的代码:
在做性能测试的时候,我经常会有在不同线程随机出某个唯一的量的需求,这里我一般采用两段组成:多线程唯一量和线程内唯一量。
举个例子来讲:
这里我用了一个全局的静态变量作为一个基础值,之所以这里也随机是想让每次运行的时候尽量都不一样,没有使用时间戳是因为时间戳太长了,现在这个比较满足需求。
下面每个对象创建的时候调用的构造方法:
这里就可以保证每一个线程拿到的值都是不一样的,当然这个功能还可以通过ThreadLocal在链路性能测试中实践中提到的方法解决,这里就不多说了。
这里我就可以通过获取一个线程内的唯一数字,然后和组合成为一个全局唯一的量。
这个好像没有特别大的需求量,之前写过一个的工具类来完成,一般为了生成一个固定长度的随机字符串,我都是调用一个方法:
或者:
同样这里也有线程安全的问题,可以采用上面的多线程唯一量和线程内唯一量的方式解决。如果是的唯一性要求严格的话,我一般采用时间戳的形式。这样做比较方便,如果的时间错不足以满足需求,可以采用纳秒的时间戳,自测完全没问题。
这里分享一下,业务相关的参数相关的多样性问题我的解决方案。还是以之前的文章单链路性能测试实践中例子。
这个主要场景指的是有指定的随机范围,比如说某个接口数值型参数的范围是0-7,那么我们就可以通过随机这个参数来丰富该接口的请求参数。
有的接口几个参数是关联性的,我们就需要从一个中随机或者是数组中随机出一个对象,FunTester通常会把多个关联参数封装成一个对象,例如:
这样我们就可以通过将可用的参数放到一个列表中获取,此方法跟下面的造数据有些区别,一个取是访问一下,一个取是取走了,各位可以待会对比一下。
分享一些代码片段:
其中
实现方法:
例如这个接口请求中,用到的对象是从上游接口中获取的,所有可用的对象都在接口中返回。
如果想丰富方法的请求参数的话,一定要将中的响应结果解析成的形式。
因为多层结构,我只解析了第一层的。
这里我没有提前将所以可用的参数都存起来,原因有二:用户不会这么做;数据可能会变动。在无数据驱动自动化测试文中我提到无数据驱动,这就是个例子,不给用例输入除账号密码外的数据。
这个比如收藏和取消收藏接口,正常来讲,首页可以收藏和取消收藏。在获取个人列表页可以取消收藏。这里我设置了先收藏,再去个人列表页,然后取消收藏。
这样既保证正常业务流程下,最后取消接口的是有足够的可用接口的。
这个就更常用了,有些时候我们在性能测试的时候,必须要进行前期大量测试数据的构造工作。关于这个话题,很多文章都写过了。我这里分享一下在多线程条件下,如何保证每个线程拿到参数唯一性的方法。
在之前的文章讲过如何对消息队列做性能测试,我先讲构造的数据通过配置文件(这里可以临时从数据库中查)读取到一个线程安全的中,然后每个线程每次获取都取走一个对象,这样就可以满足需求了。
存储和获取的方法:
这里需要提前预估消耗量,不然容易因为数据量准备不足导致测试失败。当然,也可以单独写一个线程,不断往队列中添加数据以保障测试用例顺利执行。
本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com
本文链接:http://www.ksxb.net/tnews/11521.html