《jmeter 实战》实践中遇到的问题 1

上一篇 / 下一篇  2017-01-03 14:55:08 / 个人分类:jmeter

问题1:
使用badboy录制的脚本无法登陆jforum
页面报错信息:
org.apache.coyote.http11.AbstractHttp11Processor.process Error parsing HTTP request header
 Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
 java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
        at org.apache.coyote.http11.InternalAprInputBuffer.parseRequestLine(InternalAprInputBuffer.java:239)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2508)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2497)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)

解决方法:
step1:
网上查资料说是tomcat问题,找同事换了个正常运行的tomcat
step2:
依然报错,报错信息变为:
java.net.URISyntaxException: Illegal character in path at index 11
百度资料时说,说有可能是访问的路径/地址存在空格或非法字符,查看了下报错的http request,链接中存在非法字符,将报错的http request访问的url换成了脚本中其他可以正常访问的url。
错误的url:
http://localhost/jforum-2.1.9/jforum.page;jsessionid=${jsessionid}
可以正常访问的url:
http://localhost/jforum-2.1.9/forums/show/1.page
step3:
再次运行之前报错的tomcat,可以正常访问,登录jforum,所以报错与tomcat无关
原因分析:
使用badboy录制的过程中url信息存储有问题,但其他参数是ok的,只需要将url信息换成可以正常访问的url就好啦

问题2:
当以HTML形式展示Jmeter响应的数据时,并没有展示admin的登录信息
解决方法:
将implementation从Java改成httpclient4【没理解】

问题3:
未找到后台管理页面
解决方法
jforum后台目录
jforum后台目录

jforum后台目录
jforum后台目录

新建版面
新建版面


问题4:
CSV data set config 无法取数据,怀疑跟本机的csv数据格式有关系
结论与昨天的判定相同,将excel转换为csv格式时,采用另存为以csv格式保存,而非手动修改后缀名

问题5:
在提交信息的页面,如登录页面,写博文页面中,http request 中设置为“跟随重定向”,这样可以在“查看结果树”中查看到返回的数据页面 <后期再体会自动重定向和跟随重定向>

问题6
6.1 正则表达式提取器未提取到固定的版面信息
在解决完这个问题之后,我将这个问题的表述进行如下修改:
正则表达式未提取到值

解决方法:
6.1.1 将“进入板块”请求进行禁用,依次调整正则表达式,模板,匹配数字这三个选项,并在察看结果树中察看正则表达式的提取数。
6.1.2 通过正则表达式检测软件证明编写的正则表达式是可以匹配到具体的数值,模板为$1$,匹配数字为1的情况下可以提取到数值

分析原因:
对正则表达式,模板,匹配数字概念不清晰,现将概念总结如下:
模板:如果正则表达式中只有一个正则表达式,模板为$1$;如果正则表达式中有两个正则表达式,并要这两个正则表达式都进行调用,模板为$1$$2$;由此类推,当需要调用第n个正则表达式时,模板为$n$
匹配数字:-1表示调用所有的符合正则表达式的值;0表示随机调用;1表示调用第一组;n表示调用第n组,前提是第n组存在;若第n组的值不存在,则无法调用

关于正则表达式提取的一组函数值现提炼如下:
例如:变量名为parkid
parkid=2  //提取值的集合
parkid_g=1  //提取值得个数
parkid_g0="id":2, //从响应文件中提取符合正则表达式的内容
parkid_g1=2  //按照模板提取匹配值

6.2 访问的板块页面一直在报错,正则表达式没有提取到数量
在解决完这个问题之后,我将这个问题的表述进行如下修改:
“进入板块”请求无法调用到正则表达式提取的值,页面报错

解决方法:
6.2.1 将调用的${变量名}修改为${变量名_g0}形式

分析原因:
对于正则表达式提取的一串值概念很模糊
官方解释如下:
正则表达式函数可以使用正则表达式(用户提供的)来解析前面的服务器响应(或者是某个变量值)。函数会返回一个有模板的字符串,其中携带有可变的值。

函数(__regexFunction)还可以被用来保存值,以便供后续使用。在函数的第6个参数中,测试人员可以指定一个引用名。在函数执行以后,测试人 员可以使用用户定义值的语法来获取同样的值。例如,变量名:refName
${refName}/${refName_g0}来引用第2个参数(Template for the replacement string)/模板 的计算结果,这依赖于函数的解析结果。
${refName_g0}来引用函数解析后发现的所有匹配结果。
${refName_g1}来引用函数解析后发现的第一个匹配组合。
${refName_g#}来引用函数解析后发现的第n个匹配组合。
${refName_matchNr}来引用函数总共发现的匹配组合数目。

其余问题:
1.初始的错误无法找到,需要回南京翻书看下究竟是哪边的问题
==》对于问题的保存
回南京后照着书本又再次实践了一遍,还是没能找到原来的问题
2.从jmeter的运行结果来看,一共提取了6组值,但从响应文件来看,只有三组值
3.为什么从jmeter的测试结果来看,提取的数值以数组的形式存在,这是什么样的机制?
4.关于解决问题花费的时间问题,有兴趣解决问题是优点,但是花费的时间不能过长,这次花了>9*25分钟依然未解决该问题,下次要给自己设定一个时间限制了

问题7:
整体的执行次序循环与否,例如step1登录一次,step2 or step3 循环登录

问题8:
利用百度进行正则表达式测试时发现需要添加“HTTP信息头管理器”,在其中添加User-Agent
如何查看浏览器的User-Agent?
F12->network

问题9:
ForEach Controller:
从响应文件中无法理解正则表达式
响应文件:<a href="AssertionTestPlan.jmx"
正则表达式:<a href="([^"]+)"

问题10:
Include Controller:
运行时没有返回值

问题11:
While controller为otherwise时没有进行实践

问题12:
执行interleave controller时,节点下的取样器没有交替执行
解决方法:
将线程组的循环次数修改为n次
分析原因:
原谅我是个小白,当看到执行n次是,我下意识的是运行整个线程组n次,而文中描述的是“执行1个线程,执行3次”,执行即循环,^_^

问题13:
if controller未跑通
解决方法:在不勾选Interpret Condition as Variable Expression?时,设置condition的变量表达式为“${变量名}”==“变量值”(变量值为字符型时)
分析原因:
阅读书本之后,对于condition的设置的两种方式并不了解,查了下资料,有如下两种方式
不勾选Interpret Condition as Variable Expression?时,设置condition的变量表达式为${变量名}”==“变量值”(变量值为字符型时),注意变量名的引号,变量值为数字时还未验证,不知道变量名要不要加引号
②勾选Interpret Condition as Variable Expression?后,需要设置User defined Variables,现在使用的方式是condition设置为变量名,User defined Variables设置具体的数值 /*待确定*/

问题14:
jmeter3.0中Module Controller中是无法调用workbench中的测试片段,调用test fragment中

TAG:

 

评分:0

我来说两句

Open Toolbar