将每周读书与学习相结合,可以有效地提升个人素养和知识水平。以下是一些建议,帮助您实现这一目标:1. **制定计划**: - 每周选择一本或多本书籍,涵盖不同领域,如文学、历史、科技、哲学等。 - 确定每天如早晨起床后、午休时间或睡前。2. **选择书籍**
摘要:每周读书与学习是由清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书的作者推出,分享作者多年的IT从业经历,希望对很多计算机科学技术IT类专业毕业生以及IT从业者有所帮助。 1、逻辑控制器 在Jmeter中,逻辑控制器顾名
每周读书与学习是由清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书的作者推出,分享作者多年的IT从业经历,希望对很多计算机科学技术IT类专业毕业生以及IT从业者有所帮助。
1、逻辑控制器
在Jmeter中,逻辑控制器顾名思义就是用来控制性能测试执行的逻辑,通常用来控制采样器的执行顺序,同时也可以对Jmeter中的元件的执行逻辑进行控制,因为在做性能测试时,可能经常会遇到一些比较复杂的业务场景,那么就可以使用逻辑控制器来完成一些特定的比较复杂的业务逻辑处理,如下图所示。
从图中可以看到,逻辑控制器通常主要包括:
IF控制器:通过IF条件判断来控制性能测试脚本的运行,通常只有满足IF控制器中的条件才会执行对应的测试脚本逻辑,如下图所示,只有满足图中的Expression表达式的执行结果为true时,才会执行该控制器下的元件。Expression表达式的常用场景包括:
对某个Jmeter中的变量判断其结果是否为True,比如判断取样器的最后一次执行结果是否成功,可以在Expression中输入${JMeterThread.last_sample_ok}。
通过比较的方式来判断某个变量是否满足一定的条件,比如"${VAR}"=="abcd"表示某个变量VAR是否为abcd。
使用脚本语言表达式的方式来判断某个变量的值是否正确,比如${__jexl3(${VAR} == 23)}表示通过Jexl脚本语言表达式来判断某个VAR变量的值是否等于23,比如${__groovy(vars.get("myMissing") != null )} 表示通过Groovy脚本语言表达式来判断某个myMissing变量值不为空,通常支持的脚本语言包括Jexl、Groovy、JavaScript、BeanShell等。
如果对于Jmeter支持的多种脚本语言不熟悉,因为毕竟学习一门脚本语言需要一定的编程基础,可以通过Jmeter中的函数助手来生成对应的脚本语言表达式,如下图所示,图中选中了Jexl3脚本语言,然后在JEXL expression to evaluate中输入了需要判断的条件,点击生成按钮即可生成对应的脚本语言表达式,Jmeter中的函数助手支持的脚本语言还包括了BeanShell、Groovy、JavaScript等。
事务控制器:主要用于统计该控制器节点下的取样器请求的处理时长等各种性能指标,该控制器界面包含如下两个选项:
Generate parent sample:如果勾选表示该取样器作为其他取样器的父取样器来生成性能测试的指标结果,简单来说就是当该控制器下有多个取样器时,会将所有的取样器的性能指标合并在一起进行统计,否则表示该取样器作为独立取样器来生成性能测试的指标结果,此时当该控制器下有多个取样器时,将会分别展示每个取样器的性能指标。
Include duration of timer and pre-post processors in generated sample:生成的取样器的处理时长中是否需要包含定时器、前置处理器和后置处理器的时长,默认为不勾选。
循环控制器:用于让该控制器下的取样器等元件可以循环执行,该取样器界面上支持设置循环的次数,如下图所示。
While控制器:用于让控制器下的取样器等元件在满足条件判断时持续执行,直到While条件为False时,退出While循环,在While控制器的条件判断表达式中支持Groovy、Jexl等脚本语言表达式,表达式的结果必须要返回一个True或者False类型的布尔值。
比如可以输入${__jexl3(${var_result}==10)},用于表示判断var_result这个变量的值是否等于10,如果不支持如何生成条件判断表达式,可以借助Jmeter中的函数助手来完成。
当不输入任何判断条件时,当最后一个While循环执行失败时,会直接退出循环,如下图所示。
当输入判断条件为LAST时,也是表示当最后一个While循环执行失败时,会直接退出循环,同时在执行While控制循环之前,如果上一个取样器请求执行失败,那么Jmeter将直接不会进入到While控制器进行任何执行,如下图所示。
临界部分控制器:通常用于在多线程并发处理时控制取样器等元件仅由一个线程来完成执行,因为该控制器支持使用锁定的方式来控制该控制器下的取样器等元件仅会让一个线程来运行,如下图所示,锁名称可以完全自定义,当在一个Jmeter测试计划中存在多个临界部分控制器时,建议每个临界部分控制器的锁名称不要重复。
