• 你说的有道理。不过我还没写网页版的性能测试平台呢,这里仅是在看 Locust。
    @debugtalk 他阿里同事实现了 GO 语言的 Locust 客户端 boomer,我未来还会继续分析 GO 语言的可行性的。boomer 的源码我也在学习。

  • 我写的是 Locust 的你竟然来问我 Jmeter 的问题……让我一阵心酸啊。
    我开始以为你问的是 Threads(users) 的数量,后来仔细看了一下,是问的 sampler 即用例中的请求数。
    最终能设置多少个 sampler 确实是依赖内存的消耗的,这里解释一下。
    Jmeter 编辑用例增加 sampler 的时候,用例是会保存成 jmx 用例文件的,jmx 用例文件中即包含了每个 sampler 的信息。
    而 Jmeter 性能测试时,会将正常状态(没有灰化隐藏)的 sampler 信息(很多个)加载到本身的内存中,确切说是 JVM 的 Heap 中,用来当做原始测试数据。
    那么这会遇到第一个内存障碍,如果你的有效的 jmx 用例文件就 100MB,Jmeter 的内存 Heap 才设置了 50MB,那这个用例可能是加载不起来的。
    性能测试时,由于不能污染原始的内存中的 jmx 文件,比如做参数化等细节,每一个 jmx 会被复制出去,由于具体 Jmeter 是使用线程来实现压力机制的,所以复制的 jmx 文件会到线程的内存中,这次是在 JVM 的永久代中,而每个线程的内存可以使用-Xss 参数配置。
    那么这回遇到第二个内存障碍,如果 jmx 有效的比较大,而-Xss 设置的比较小,那么性能测试时也是有可能失败的。
    注意:
    1.Jmeter 加载/运行 用例/sampler 时,如果遇到问题,都会抛出 JVM 级别的异常的,肯定是会打到日志上的,这部分定位问题十分简单,而解决也比较简单,增加内存就好了。
    2.真正的用例在内存中不会像 jmx 文件那么大的,Jmeter 会提炼用例数据的,内存占用会比文件占用的空间小得多。(具体提炼多少需要看源码,这里无法尽述)。
    总结:
    sampler 多少确实是内存决定的,内存够大就没事,有问题就看日志,注意调整-Xms -Xmx -Xss 参数。

  • 1.你到底什么理解,我到底什么误解,你说出来,想喷我就勇敢点儿。
    2.“locust 更新的少可能是因为没有太多高并发场景能达到 locust 应用级别,jmeter 就足够了”。这句暴露了你的实力。我可以这么讲,Jmeter3.3 目前的功能,甩开 locust 太远,基本就没有 locust 什么事情了。locust 的作者是有自知自明,不更新很明智。

  • 你直接用 Jmeter 就都有这些功能了。

  • 号前段时间丢了,导致一直挖坟……
    楼主是很有激情的,一直在不断解决问题的路上,看你搞 docker,服务器监控,那就是把运维的活也干了。
    测试开发的工作还是比较杂的,我的观点还是测开做的都是开发没时间搞的事情,比如应该自测阶段完成的用例,比如整个流程的串通,然后测开闲下来的时候还要做各种工具,把开发没时间搞的事情做的更高效。
    那么测试面对的,比开发接触的要广的多很多,同样工龄的开发和测试,接触的肯定不一样,不同的语言,比开发多得多的工具,运维工作,很多开发集合起来的业务,还有你说的 bug 平台,各种用例平台,性能测试平台,云平台等等。
    工作就是这样,楼主也一直在这条路上有激情的奔跑着,很棒。
    如果说技术的 x 轴是广度,y 轴是深度,那么测试偏向于 x 轴,开发偏向于 y 轴。(x,y) 的值是你的技术能力。
    在此我就是希望楼主多关注一些深度的东西吧。
    2 年就到管理层,甚至让手下面试你,各种嘲讽,至少说明,这个团队的能力真的太弱了,你说的,如果每一个人专注不同的业务,不同的技术,那么问住你是分分钟的事情,这说明,或者他们没有你深入,或者他们就没深入,或者你们就没啥值得骄傲的东西。你们团队每个人的特点很弱,也就是说,人员太弱,没有技术深度。
    当然你都跳出来了,希望楼主能感受到更大的挑战。
    从楼主的字里行间也看出来了,想做创业者,也就是要带领一些人,这没啥不好,不是说非得技术如何如何才有资格带人,这是错的,带人也是要一步一步学的,这没什么。
    我只是想说,希望楼主在热心于技术的广度,带人的热情,也不要忘了技术的深度,多看一些底层的东西。
    底层的东西并非多么难,你有代码基础,再看一些比如 CPU,磁盘,计算机原理,各种协议原理,简单算法,linux,数据库原理,缓存原理,数据结构,应该就差不多了。
    楼主的经理也在激励着我,共勉。

  • 我还以为你弃用 Jmeter 是业务不对头呢……对接口测试,现阶段的 Jmeter 比 httprunner 好多了。你还来了一句操作不方便……别误导别人了好不好。说些肯定能遇到的:httprunner 面对循环重复请求要怎么做?断言的正则表达式怎么做?出了问题怎么 debug?怎么搞定时器?不是 http(s) 协议怎么办?遇到需要校验数据库/缓存变动,只需要一个简单的 SQL,并不是 http 请求怎么弄?怎么实时看到访问结果,如果有 1000 个请求前 2 个就失败了而不需要执行后面的 998 个以免脏数据 httprunner 要怎么做?
    这些问题你要打开 IDE,自己造轮子了?
    我都不用说 locust 的测试性能有硬伤,协程 + 脚本语言性能的硬伤,上面这些你都搞不定,要二次开发。
    别简单一句这些更好,你到底做没做过接口测试,我都怀疑。
    如果是你业务不符合,就说业务的问题,别扯工具能力。

  • 呵呵了,我能发现这个 bug 你就庆幸吧,要不然上线出了问题,你更惨,除了加班纠正,如果有错误数据更完(内存 bug 等更是致命伤)。
    我才赚多少钱,我可不陪你加班。
    这种 bug 就是你自己都没验过功能,你要是嫌不好改发邮件,抄送你们项目经理,抄送我老大。

  • 楼主这套框架很值得学习借鉴,好东西。
    测试数据的痛点,docker 的学习,楼主加油。

  • 正好我也有需求要做 Jmeter+ant+Jenkins 的自动化接口测试。
    不同的是我的用例信息保存在数据库里,数据来源不同,搞了一天。

    楼主最主要的细节没写:获取测试数据对应行。
    我的做法是:获取 count 循环数量的同时,获取数据的 ID 主键集合,用逗号分隔保存在一个变量里。
    获取测试数据对应行时,同时保存及设置用户变量 index,index 从 0 开始计数。
    index 是 ID 主键集合的索引,由于已经根据逗号分隔过了,很容易取到。
    再根据得到的 ID 主键来获取数据行,完成用户参数的初始化。

    再说一下,其实报告的模板我没修改得像楼主这么麻烦,我就是把 beanshell samper 的名称改成了空格,自动就过滤掉了。

    还有 if 逻辑控件,注意是 == 号。

    有时间我也出一个 JDBC 的接口测试实践。

  • 招聘还是更多的看这个人适不适合这个岗位吧,要多少钱,值不值这个钱,还有没有培养的潜力。说点儿不同的,这个 10 年 QA 都回答上来你的问题,那早就面试你了啊,人家入行早,肯学,还轮的着你面试他。再说,工具的使用怎么就没有价值了呢,你还来一句算法语法不用问,已经跨过这个 level 了。如果他跟你大侃特侃架构,可能就是读了几本架构的书,你就满意了?找到知己了?算法语法的不同,不说深扣有多少用,至少避免踩坑吧。
    好了,你按照你的要求招到了跟你侃架构的人,那你能提供给他一个搞架构的环境么?你能满足这种人的薪资要求么?你文章中什么都没提,让我们怎么判断。
    做事情是需要耐心的,楼主先入为主的思维比较严重,就觉得 10 年 QA 就应该怎么样怎么样,完全是个小年轻的思维啊。再说回来,人家 10 年工作经验,面对架构流程侃侃而谈,是面试你的好吧。你出发点是不是偏了啊?
    再说,要难住一个人其实比较容易,人家也可以难住你。
    对于新技术有接触,对于自己的工作有深入理解是好事情,我也并不是说这个 10 年的 QA 是合格的,楼主应该招他。我就是单纯的从招聘的角度。你如果觉得这个岗位对流程和技术前沿要求比较多,那筛选简历完全可以做到,没必要把人叫过来整一遍,刷一遍荣誉。