临沂网站制作报价抓取微博 Wordpress
2026/1/13 13:26:53 网站建设 项目流程
临沂网站制作报价,抓取微博 Wordpress,智慧团建手机登录端口,天猫商城在线购物Jmeter 是Apache基金会下的一款应用场景非常广的压力测试工具#xff0c;具备轻量、高扩展性、分布式等特性。Jmeter已支持实现随机数、计数器、时间戳、大小写转换、属性校验等多种函数#xff0c;方便使用人员使用。如果在使用过程中存在和业务强耦合的常用功能函数#x…Jmeter 是Apache基金会下的一款应用场景非常广的压力测试工具具备轻量、高扩展性、分布式等特性。Jmeter已支持实现随机数、计数器、时间戳、大小写转换、属性校验等多种函数方便使用人员使用。如果在使用过程中存在和业务强耦合的常用功能函数在Jmeter不支持的情况下那就需要单独开发自定义函数实现特定功能。本文介绍如何开发Jmeter自定义函数实现快速生成京东宙斯下单标准sign同时深刻理解Jmeter的插件化机制及高扩展性特性。开发准备Java基础开发Maven基本使用开发依赖版本JDK 1.8.0Maven 3.6.3Jmeter 5.4.3自定义函数核心实现新建项目新建maven项目这里项目名为JSF_Sampler因为是基于Jmeter的扩展需要依赖包Jmeter两个核心包分别是ApacheJMeter_coreApacheJMeter_javaApacehJMeter_functionspom.xml文件核心配置如下groupIdcom.jd.jmeter.jsf/groupId artifactIdJSF_Sampler/artifactId version1.0-SNAPSHOT/version properties maven.compiler.source8/maven.compiler.source maven.compiler.target8/maven.compiler.target project.build.sourceEncodingUTF-8/project.build.sourceEncoding jmeter-version5.4.3/jmeter-version /properties dependencies dependency groupIdorg.apache.jmeter/groupId artifactIdApacheJMeter_core/artifactId version${jmeter-version}/version /dependency dependency groupIdorg.apache.jmeter/groupId artifactIdApacheJMeter_java/artifactId version${jmeter-version}/version /dependency dependency groupIdorg.apache.jmeter/groupId artifactIdApacheJMeter_functions/artifactId version${jmeter-version}/version /dependency /dependencies继承实现AbstractFunction类实现类依次实现以下几个步骤1新建实现类并继承AbstractFunction注意实现类的包名必须包含 xxx.functions.xxxJmeter 使用命名规则实现实现类的加载。2重写以下方法每个方法的用途见下方代码注释execute()setParameters()getReferenceKey()getArgumentDesc()/** * 京东宙斯 下单标准字段常量 */ private static final String APP_KEY app_key; private static final String APP_SECRET app_secret; private static final String ACCESS_TOKEN access_token; private static final String TIMESTAMP timestamp; private static final String V v; private static final String METHOD method; private static final String BUY_PARAM_JSON 360buy_param_json; /** * Jmeter中自定义的函数名在Jmeter的函数助手中可以看到 */ private static final String FUNC_NAME __GenSignFunction; /** * 自定义函数的描述入参出参方便使用人员参考使用 */ private static final ListString desc new ArrayList(); static { desc.add(This function is used to generate the JDs JOS sign value); } /** * 此为自定义函数核心实现类其中入参SampleResult为上次运行的结果Sampler为当前的采集器 * 返回值为该函数的返回值 * param sampleResult * param sampler * return * throws InvalidVariableException */ Override public String execute(SampleResult sampleResult, Sampler sampler) throws InvalidVariableException { // 入参处理 String param String.valueOf((CompoundVariable)paramValues[0]); String signResult paramHandler(param); return signResult; } /** * 按京东宙斯sign加密规则生成标准sign * param param * return */ public String paramHandler(String param){ MapString,String valueMap new HashMap(); // 按符号分割 String[] paramArray param.split(); for (int i 0; i paramArray.length-1; i) { String key paramArray[i].split()[0]; String value paramArray[i].split()[1]; valueMap.put(key,value); }; // 京东宙斯标准sign String josGign EncryptUtil.getSignature(valueMap.get(app_secret)BUY_PARAM_JSONvalueMap.get(360buy_param_json) ACCESS_TOKENvalueMap.get(access_token) APP_KEYvalueMap.get(app_key) METHODvalueMap.get(method) TIMESTAMPvalueMap.get(timestamp) VvalueMap.get(v) valueMap.get(app_secret)); return josGign; } /** * 配置入参jmeter函数助手入参 */ Override public void setParameters(CollectionCompoundVariable collection) throws InvalidVariableException { paramValues collection.toArray(); } /** * 此方法返回自定义的函数名称 */ Override public String getReferenceKey() { return FUNC_NAME; } /** * 此方法返回函数描述信息 */ Override public ListString getArgumentDesc() { return desc; }最终项目结构Jmeter 加载扩展包以上开发完成打包此项目注意这里的打包要包含依赖包。maven构建配置build finalName${project.artifactId}/finalName defaultGoalinstall/defaultGoal plugins plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-compiler-plugin/artifactId configuration source1.8/source target1.8/target /configuration /plugin plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-assembly-plugin/artifactId configuration descriptorRefs descriptorRefjar-with-dependencies/descriptorRef /descriptorRefs /configuration executions execution idassemble-all/id phasepackage/phase goals goalsingle/goal /goals /execution /executions /plugin /plugins /build项目打包打包指令如下 mvn package -Dmaven.test.skiptrueAI写代码bash12Jmeter加载扩展包将打包后的扩展包放置到 Jmeter 的ext目录apache-jmeter-5.4.3/lib/ext/启动 Jmeter 后Jmeter 会自动加载 ext 目录中的扩展包打开Jmeter函数助手后可以看到本次实现类中打印的相关日志自定义函数调用调试打开Jmeter函数助手选择自定义函数京东宙斯接口验证这里使用京东快递获取预制运单号接口输入GET请求后直接点击运行函数【Generate Copy to clipboard】出参返回32位 sign 值。GET请求入参 methodjingdong.etms.waybillcode.getapp_key349559FAE87E66826499890862E40A44access_tokenc8c2bdc8d1684630bb771a503d5b5a7fkyzh×tamp2022-01-28 15:10:00360buy_param_json{preNum:1,customerCode:10K43816,orderType:0}v2.0signEBB52C6CEDA34703ADE72D4AA4D8F316app_secret29959e4cadc14ff4998d4fc26d1e5063总结本文通过自定义函数实现了京东宙斯下单标准sign的生成希望通过本项目大家可以学习到如何二次开发Jmeter实现自己特有的自定义函数。理解为何官方介绍Jmeter是插件化的高扩展性特性。更好地理解Jmeter内部处理机制。总结感谢每一个认真阅读我文章的人作为一位过来人也是希望大家少走一些弯路如果你不想再体验一次学习时找不到资料没人解答问题坚持几天便放弃的感受的话在这里我给大家分享一些自动化测试的学习资源希望能给你前进的路上带来帮助。软件测试面试文档我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。视频文档获取方式这份文档和视频资料对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你以上均可以分享点下方小卡片即可自行领取。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询