函数助手的二次开发

1)下载JMeter源代码,并且把它导入到Eclipse中。然后导入JMeter产品代码中lib目录下的所有jar包(ext目录下的不要管)和JUunt5。(虽然项目中有许多红叉叉,但是只要保证src/function/src/main/java和src/function/src/test/java下没有红叉叉即可)。如图4所示。
图4 载入JMeter源代码

2)建立SHA256.java文件,代码如下。

package org.apache.jmeter.functions;import org.apache.jmeter.engine.util.CompoundVariable;import org.apache.jmeter.samplers.SampleResult;import org.apache.jmeter.samplers.Sampler;import org.apache.jmeter.threads.JMeterVariables;import org.apache.jmeter.util.JMeterUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Collection;import java.util.LinkedList;import java.util.List;public class SHA256 extends AbstractFunction{private static final Logger log = LoggerFactory.getLogger(SHA256.class);private static final List<String> desc = new LinkedList<>();    //描述private static final String KEY = "__SHA256";  //方法描述,必须双下划线static {     desc.add(JMeterUtils.getResString("SHA256_Str_param")); //这个以后会在JMeter参数输入时提示}private Object[] values;public SHA256() {}private static String byte2Hex(byte[] bytes){StringBuffer stringBuffer = new StringBuffer();String temp = null;for (int i=0;i<bytes.length;i++){temp = Integer.toHexString(bytes[i] & 0xFF);if (temp.length()==1){//1得到一位的进行补0操作stringBuffer.append("0");}stringBuffer.append(temp);}return stringBuffer.toString();}@Overridepublic String execute(SampleResult previousResult, Sampler currentSampler) throws
InvalidVariableException {JMeterVariables vars = getVariables();String varName = ((CompoundVariable) values[values.length - 1]).execute().trim();MessageDigest messageDigest=null;String encodeStr = "";try {messageDigest = MessageDigest.getInstance("SHA-256");messageDigest.update(varName.getBytes("UTF-8"));} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();}encodeStr = byte2Hex(messageDigest.digest());if (vars != null && varName != null) {vars.put(varName.trim(), encodeStr);log.info("varName:", vars.get(varName.trim()));}return encodeStr;}@Overridepublic void setParameters(Collection<CompoundVariable> parameters) throws
InvalidVariableException {//对入参进行检查,最小1个参数checkMinParameterCount(parameters,1);values = parameters.toArray();}@Overridepublic String getReferenceKey() {return KEY;}@Overridepublic List<String> getArgumentDesc() {return desc;                                                    }}

其中下列四个该函数是必须有的。

public String execute(SampleResult previousResult, Sampler currentSampler) throws
InvalidVariableException:执行,真正函数算法所在。

public void setParameters(Collection parameters) throws InvalidVariableException:设置参数。
public String getReferenceKey():获得参考关键字。
public List getArgumentDesc():获取参数描述。
3)书写完毕,可以建立JUnit5文件进行测试。建立SHA256Test.java文件,代码如下。

package org.apache.jmeter.functions;import static org.apache.jmeter.functions.FunctionTestHelper.makeParams;import static org.junit.Assert.assertEquals;import static org.junit.jupiter.api.Assertions.*;import java.util.Collection;import org.apache.jmeter.engine.util.CompoundVariable;import org.apache.jmeter.threads.JMeterContextService;import org.apache.jmeter.threads.JMeterVariables;import org.junit.jupiter.api.AfterEach;import org.junit.jupiter.api.BeforeEach;import org.junit.jupiter.api.Test;class SHA256Test {@BeforeEachvoid setUp() throws Exception {JMeterContextService.getContext().setVariables(new JMeterVariables());}@AfterEachvoid tearDown() throws Exception {JMeterContextService.getContext().clear();}@Testvoid test() throws InvalidVariableException {SHA256 sha256 = new SHA256();Collection<CompoundVariable> params = makeParams("123456");sha256.setParameters(params);String totalString = sha256.execute();assertEquals("8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92",
totalString);}}

4)测试通过后把SHA256.java产生的SHA256.class打成jar包放在%JMETER_HOME%\lib\ext目录下(参见第1节第2)-6)步)。
5)打开JMeter,在函数助手中找到SHA256这个函数了,如图5所示。


图5 从函数助手中获得SHA256函数

6)最后把商品列表HTTP请求中的password参数值改为:{__SHA256({pram_g1})},运行保证运行正常。

最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!

这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……

如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。

点击文末小卡片领取

敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。

自学推荐B站视频:

零基础转行软件测试:25天从零基础转行到入职软件测试岗,今天学完,明天就业。【包括功能/接口/自动化/python自动化测试/性能/测试开发】

自动化测试进阶:2022B站首推超详细python自动化软件测试实战教程,备战金三银四跳槽季,进阶学完暴涨20K

腾讯资深软件测试工程师通过案例带你轻松玩转JMeter相关推荐

  1. 【EasyNLP】带你轻松玩转CLUE榜单

    重磅来袭!EasyNLP正式成为CLUE榜单的官方工具! 1.导读 EasyNLP是一款简单.易用.高效的NLP开发工具,其完全基于Pytorch实现,提供了包括预训练语言模型(Pre-trained ...

  2. 带你们轻松玩遍吃遍张家界

    来张家界的朋友一般都会去的景点是国家森林公园.天门山.玻璃桥.凤凰等等,玩遍这些景点至少需要4天-5天的时间.很多朋友虽然想一次性玩遍张家界的各大景点,但是由于时间.距离关系,只能选取几个最想去的地方 ...

  3. Kubernetes Pod篇:带你轻松玩转Pod

    本文将对Kubernetes如何发布与管理容器应用进行详细说明,主要包括Pod概述.基本用法.生命周期.Pod的控制和调度管理.Pod的升级和回滚,以及Pod的扩容机制等内容,并结合具体详细的示例,带 ...

  4. 揭密字节跳动薪资职级,资深软件测试工程师的收入你想象不到

    哪家互联网公司薪资最'厉害'? 下面的评论多为字节跳动,还炸出了很多年薪40W的测试工程师 我只想问一句,现在的测试都这么有钱了吗? 前几天还有朋友说,从腾讯跳槽去了字节,一开始我还不理解,以为他是在 ...

  5. 软件测试工程师笔试题带答案(二)

    如何对web系统进行全面测试? 一. 功能测试 1.链接测试 链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段.链接测试可分为三个方面.首先,测试所有链 ...

  6. 一个在职阿里6年的资深软件测试工程师的心声

    简单的先说一下,坐标杭州,15届本科毕业,算上年前在阿里巴巴的面试,一共有面试了有5家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少) 其中成功的有3家,另外2家失败的原因在 ...

  7. 自动化工程师与python_软件测试自动化工程师用案例带你进入Python数据类型,数据结构等代码实现...

    一.有这样的一个需求:判断学生成绩是否及格 二.拿到这样的一个需求如何进行需求分析呢?做为测试人员,我们只有明确需求后,才不容易漏测. 需求分析阶段: (一)看到这样的一句话之后我们有几个问题需求和产 ...

  8. 阿里资深软件测试工程师推荐—混沌工程(Chaos Engineering)初识

    Chaos Engineering is the discipline of experimenting on a distributed system in order to build confi ...

  9. 转正报告不会写?资深软件测试工程师手把手教学,赶紧收藏

    转正报告不知道怎么写?为大家写了个模板,可能写的不好,给各位参考参考\ 进入公司的三个月时间里,在领导和同事们的悉心关怀和指导协助下,使我在较短的时间内适应了公司的工作环境,也熟悉了公司的支付业务流程 ...

最新文章

  1. Oracle Database基础
  2. 12 求1+2+...+n
  3. 如何更改从Outlook发送的电子邮件中的“答复”地址
  4. 解析一个C语言俄罗斯方块游戏,包你看了就会
  5. UnixBench算分介绍
  6. Servlet的Cookie和Session机制
  7. 在linux环境下启动es,linux上Elasticsearch 安装配置、网页访问
  8. “我有必要写技术博客吗?” 写技术博客一年,谈谈其得失优劣
  9. php redis 查询,Redis慢查询日志 PHP中使用redis – 安装扩展模块
  10. 英特尔固态硬盘测试软件,SSD固态硬盘检测测试软件(Intel SSD Toolbox)
  11. 企业图纸共享办公系统哪个好
  12. Oracle Coherence中文教程四:构建一个Coherence 应用
  13. 搭建nfs调试arm开发板
  14. Python干货 | 制作遥感影像图
  15. EST封面: 南方科技大学夏雨团队
  16. 历年计算机一级笔试考试真题及答案解析,全国计算机等级考试上机考题全真笔试历年题...
  17. 探寻红色印记,传承红色基因
  18. hbase基于solr配置二级索引
  19. PL/SQL Developer中拼接超长clob字段sql示例
  20. PCIe 均衡技术介绍(电气物理篇)

热门文章

  1. qt包含头文件时显示fix available
  2. 对象空指针中的成员的值是0x8是怎么回事?
  3. 软银计划大幅减持阿里巴巴;美国将12家中国芯片贸易商纳入“实体清单”;知乎发布中文大模型“知海图AI”丨每日大事件...
  4. WIN10 Hyper_v安装Ubuntu进行分辨率调整。
  5. php输出熊猫图案,如何用CSS实现一只带帽子的大熊猫(附代码)
  6. PHP对于数据库的基本操作——插入
  7. JS代码写简单购物车
  8. APP 申请微信支付时提示:你输入的APPID认证主体名称与实际认证主体不一致,请检查修改后重试
  9. 如何持续改善你的开车技术?
  10. Java实现商品sku属性组合