• 你看看报错信息,应该提示你 sampler 没有 sampler() 这个方法,sampler 用的是 org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy 这个类的实例,可以查看 api 文档来知道它有什么方法
    https://jmeter.apache.org/api/org/apache/jmeter/protocol/http/sampler/AccessLogSampler.html

    021-03-29 20:11:16,702 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval  Sourced file: inline evaluation of: ``sampler.sampler().getUrlAsString();'' : Error in method invocation: Method sampler() not found in class'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
    
  • 我在 5.4.1 版本试了一下,直接用 sampler.getPath() 就可以取到,如果要取整个 url,可以用 sampler.getUrl().toString()

  • 日志权限不能把写日志目录的权限改一下解决吗?权限问题还通过代码解决?

  • 深圳第三期管理沙龙 at 2018年08月03日
    仅楼主可见
  • 深圳第三期管理沙龙 at 2018年08月03日
    仅楼主可见
  • 可以先把包编译到 archive 目录,用 python 生成本地 apk 包的 http 地址的二维码,手机扫描就会提示下载,再安装

  • 有两点疑问
    1、抓取的时候还是要人工操作,抓取部分整理的接口,并不能覆盖到所有请求和元素
    2、接口参数化的细节没有说明清楚,要怎么参数话才能覆盖全参数的各种组合?有些不能重复提交的接口数据又怎么参数化?

    另外,原文好像在这里:
    http://tmq.qq.com/2016/05/http_api_test/

  • 试试这个方法修改一下 yum 源

    阿里云Linux安装软件镜像源
    阿里云是最近新出的一个镜像源。得益与阿里云的高速发展,这么大的需求,肯定会推出自己的镜像源。
    阿里云Linux安装镜像源地址:http://mirrors.aliyun.com/
    CentOS系统更换软件安装源
    第一步:备份你的原镜像文件,以免出错后可以恢复。
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    第二步:下载新的CentOS-Base.repo 到/etc/yum.repos.d/
    CentOS 5
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
    CentOS 6
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
    第三步:运行yum makecache生成缓存
    yum clean all
    yum makecache
    
  • #33 楼 @ebuluo
    测试脚本和测试用例,都在/data/loadtest/目录下,主要文件和作用说明如下:
    .
    ├── genHTML.sh # 生成 HTML 文件脚本
    ├── index.html # 生成的 HTML 测试报告
    ├── jmeter.log #jmeter 执行生成的日志文件
    ├── loadtest.sh # 测试的主流程脚本
    ├── log # 存放执行日志的目录
    ├── monitor # 存放监控结果文件的目录
    ├── monitor.sh # 监控脚本
    ├── monitor.txt # 监控记录汇总
    ├── sendmail.py # 发送邮件脚本
    ├── serverlist # 监控服务器列表文件
    ├── style.css # 测试报告样式表
    ├── summary.txt # 测试汇总报告
    ├── testcase # 测试用例目录
    └── testResult.txt # 测试结果临时文件

    脚本执行流程:loadtest.sh ->monitor.sh-> genHTML.sh-> sendmail.py

  • #39 楼 @glimjoe 事务成功率和你设置的断言有关,检查一下你的 jmeter 用例中断言判断

  • #36 楼 @liugee 是的,用 python 可能更合适,我是对 shell 更熟悉一点,首先想到 shell 实现了。代码还有很多改进的地方,这里只是分享一下思路,大家可以根据自己的项目情况和自己擅长的语言来实现

  • #32 楼 @mark 一台服务器就只监控一台服务器性能数据呗,可以把其他的列去掉,修改一下生成 html 的脚本

  • #30 楼 @mark 这个是打印 tomcat 应用日志的,如果接口性能有问题,可以直接看到当时错误日志中的最后 300 行,方便定位接口是否有报错

  • #28 楼 @shadow000902 我是在 jmeter GUI 里编辑的,因为每个接口都要试跑一下,用这个还是挺方便的。当然我是直接把调试成功的接口另存为新的接口用例,再稍微修改一下地址和参数就行,编辑效率也不会特别低吧。想过做个 web 管理用例的界面,但是对前端技术不熟悉,短时间搞不定,这个也是后续可以搞的一个方向,如果搞好了从 web 页面编辑和执行测试用例,就是个自动化测试平台了吧

  • #24 楼 @mark 环境中服务器只有一台服务器的话,就只监控一台服务器,就用一个,这里填的就是需要监控的服务器的 ip 地址

  • #25 楼 @shadow000902

    1、如果我在接口请求中进行了参数化,那这个用例导入测试服务器的话就没法用了,这个有什么办法处理呢?

    参数化,照样可以用,如果你的参数化是文件的话,就用相对路径,比如你的脚本在/data/loadtest/testcase/xxx.jmx,参数文件也放到这个目录下,比如是 xxx.dat 调用的时候直接写 xxx.dat 就行

    2、文件调用的时候会出错,请问下你的各个脚本文件是如何放置的?

    文件路径是这样的:
    脚本都放在/data/loadtest/
    测试用例 testcase 目录也在这个目录下,所以用例目录的绝对路径是/data/loadtest/testcase/

  • #21 楼 @mark 里面直接写上各个服务器的 ip 地址,格式像这样:

    -bash-4.1$ cat serverlist 
    10.1.1.53
    10.1.1.54
    10.1.1.55
    10.1.1.235
    10.1.1.52
    
  • #17 楼 @mark 是的

  • #12 楼 @mark 因为相对于总数 280 万请求,失败的 78,在保持两位小数的情况下就被忽略了😄

  • #8 楼 @ansonwoo 我是看『末日坍塌』才知道她的,身材一级棒,看来你才是真『奶粉』😄

  • #3 楼 @shadow000902
    1、这里调用的 jmeter 测试用例是 jmeter 里导出的 jmx 文件么?
    // 是的,用 jmeter GUI 生成的用例就行

    2、要自动化执行的话,这些脚本是不是也有一个配置文件一样的来处理脚本的执行顺序?还是直接执行主流程脚本的 sh 就可以了?

    // 直接执行主流程脚本就行,脚本会去搜索指定目录下的用例,在主流程脚本中指定。我这里是:/data/loadtest/testcase/
    就是这个语句:

    for i in `find ./testcase/ -name *.jmx|awk -F '.' '{print $2}'`
    

    3、这个脚本是跑在一个单独的服务器上么?需要什么配置么?
    // 是在单独机器上跑,系统环境是 centos 6.7 的,需要配置的环境就是设置 JDK 和安装 python

    4、然后这个测试脚本的执行时间如何设置?还是按次数来跑?
    // 脚本中设置的是跑 5 分钟,脚本中也做了判断,如果 5 分钟还没跑完会杀掉,不影响结果
    我的 jmeter 设置是这样的