Jmeter面试题_软件测试的面试题及答案

Jmeter面试题_软件测试的面试题及答案最近有个学生反馈,自己在面试的时候,遇到一个jmeter题目,要我帮忙看下,题目如下:进入http://www.weather.com.cn/网站,用jmeter编写脚本实现如下操作(下列要求在同一个测试脚本):(1)编写获取北京天气紫外线、穿衣、洗车、感冒指数的压测脚本,要求将城市参数化10个(城市名字自定义),将城市的当前实时天气>10度作为断言,并将天气数字输出打印到日志,设置2…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

最近有个学生反馈,自己在面试的时候,遇到一个 jmeter 题目,要我帮忙看下,题目如下:

进入http://www.weather.com.cn/网站,用jmeter编写脚本实现如下操作(下列要求在同一个测试脚本) :

(1)编写获取北京天气紫外线、穿衣、洗车、感冒指数的压测脚本,要求将城市参数化10个(城市名字自定义),将城

市的当前实时天气>10度作为断言,并将天气数字输出打印到日志,

设置200用户并发持续运行3天

(2)编写获取周边景点的脚本,并景点返回的个数作为断言,并将各景点名字输出打印到日志,

设置200用户并发持续运行10分钟

第一个题目

粗看,其实没有什么难度,但是当你去访问了这个网站,然后看到网站数据结构时,才知道并不是那么简单。

当你去访问这个网站的时候,你会发现,这个网站并没有直接提供接口。

没有提供接口,哪怎么做呢?

抓包!是个不错的选择,所以,这个题目,首先考察的是:

你是否懂得用抓包工具住包 ?

通过抓包,你会看到有一个类似这样:http://d1.weather.com.cn/weather_index/101010100.html?=1595579781357 的地址,返回了我们第一问中的北京天气信息。看到这样一个地址,你会找出哪些信息?101010100 这个应该要想到,这个应该是城市代码,而”=”这个之后的值,应该是一个时间戳。这就在考察:你对于数据的敏感度;接下来,我们看下这个接口返回的消息体,数据类似“var cityDZ ={“weatherinfo”:{xxxx};xxxxxxxxx}” 咋一看,还以为是 JSON 格式,但又不像,仔细看响应头的 Content-Type,你又会发现是‘text/html’ 文本类型。也就是说,题目中要求获取的天气、紫外线…… 等等信息,不能简单一次提取,需要用到正则,所以这个又在考察:你对正则提取器的使用;题目要求获取多个信息,一直用所有的都用正则可以吗?可以,但是你如果所有的信息都通过正则提取器提取,那也从侧面反映你技术不咋滴。因为那是干劳动力的活,其实是在隐式考察:你对正则提取器和 JSON 提取器以及多提取器一起灵活使用的能力。把一个文本内容,通过正则提取器提取出一段 JSON,然后再用 JSON 提取器提取正则式结果中想要数据,这才是他的真正的目的。然后题目又来一个难题,实时天气大于 10 度作为断言。是不是一下又楞了,不知道怎么搞了?提取实时天气,这个可以提取出来,难点就在“大于 10 度”这个要怎么做呢?这又在考察:你对于断言中大小断言掌握情况, 首先我们要知道应该用什么断言?响应断言,没有比较大小功能。比较断言,是两个特定的比较,也不适用。那就只有“大小断言”这一个。题目中还有,要参数化 10 个城市,别小看这个参数化,为什么不是八个,不是九个,却刚好十个?这其实也隐藏了一个点,这个又在考察:你对于循环控制和 foreach 控制器的使用,当然这个点,可以取巧,用用户自定义 10 个城市,然后再用 foreach 控制器能简单解决。题目中,还要求“将天气数字输出打印到日志”,因为 jmeter 本身没有直接写参数到日志的元件,需要用函数或 Java 代码来实现,所以这个又在考察:你对 jmeter 函数或 Java 脚本的使用能力;至于后面的“设置 200 个用户持续运行 3 天”这个就非常简单了,考察:线程组进行性能场景的设置,这个可以用普通的线程组就能实现,当然,也可以使用其他的线程组。

看视一个简单的 jmeter 题目,只要有一定的 jmeter 使用经验,这个题目思路不复杂,但是难点在具体脚本的写法。下面把脚本截图,仅供参考。

foreach 控制器

26e47d0a8c4d9ab0c734ca69e0e61352.png

获取气温

d2fc62eb4189f5c1225511433b9f304a.png

查看接口响应数据

cf53de6b9783fab05b3f0dee3202811f.png

提取所有指数

27c6325ac9b7146dfcf7349832526c4d.png

提取题目所需要的指数

80c92407a484852802d2ffa3753f9a17.png

获取城市天气

cbd30b2a6e0749ea9b77aac8b6216e42.png

获取城市温度

c2f77d883df71b290d144dc5fe4f7c13.png

获取温度数值

ac993b70d647d10276c16a2a70eabe78.png

断言温度数值

38af87e9f3d86a159bdb4986eb9e87f8.png

日志显示温度

420446577def6bf2adfc2a5e9c777ad6.png

用户自定义变量

b0e13dcb0e63156cb4990a3364bab957.png

第二个题目

看题干,就知道比第一个要简单,第一个题目做出来了,第二个马上就能用上上面的技能。但是,却埋下了一个难题,哪就是获取景点个数,作为断言。为什么说还难点呢?仔细看过接口响应文本,就会发现,又不是简单的 JSON。数据是:var data=({key1:{xxx}},{key2:{xxx}},{key3:{xxx}})。如果不懂得 JSON 的相对提取法,这个题目就变得异常复杂。

下面是解题截图,仅供参考:

获取周边景点

20420ef1f9d5ca5a366f55f46dcbc60c.png

查看接口响应数据

6741cbbb41da1d88115672c0854437ef.png

正则提取响应数据

31b0a55a688c5ecf980321ef2e0cf976.png

获取景点名称

766c546a9a4b589f86bafe46742cec63.png

景点数量断言

c5811641af0432850b092442ca1e9f7f.png

foreach 循环

9f6fddd51c05cf372c9e87244510df06.png

日志显示景点名称

4f83bfa00c877b9adb458d71ea5d7ae2.png

好了,一个看似简单的 jmeter 面试题,却隐藏了这么多考察项,你是否都掌握了呢?

更多有趣又有料的软件测试相关知识,欢迎关注 柠檬班 微信公众号!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187554.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于lvm扩容的方式「建议收藏」

    关于lvm扩容的方式「建议收藏」服务器磁盘扩容在项目上很常见,这里总结下常见的几种lvm扩容的方式供大家参考。

    2022年6月20日
    72
  • TP传输的两种模式

    TP传输的两种模式

    2021年9月23日
    39
  • 开源在线客服系统源码(PHP开发的网页在线客服聊天系统源码)[通俗易懂]

    开源在线客服系统源码(PHP开发的网页在线客服聊天系统源码)[通俗易懂]开源在线客服系统源码是一个可以高度个性化定制客户支持管理系统,最初为IT支持公司开发,以管理和跟踪他们的支持案例、零售商店和业务客户。使用最新的编程语言和技术,是完全web启用。我们已经将它打包为一个VirtualBox映像,这样您就可以立即启动并运行它。  源码包及演示站:zxkfym.top    这个模块化系统对任何支持业务都具有很强的适应性,并且非常依赖核心模块,能够通过其开源库对其他模块进行调整和发展。    每天数以千计的用户使用轻量级开源客服系统软件跟踪、组织和解决客户问题,86%

    2022年7月19日
    71
  • vue 双向绑定原理及依赖搜集的过程「建议收藏」

    vue 双向绑定原理及依赖搜集的过程「建议收藏」双向数据绑定机制:官方:vue是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发响应的监听回调。第一步:需要observer的数据对象进行递归遍历,包括子属性对象的属性,都加上setter和getter,这样的话,给这个对象的某个值赋值,就会触发setter,那么就能监听到了数据变化第二步:compile解析模板令,将模板中的变量替换成数据.然后初始化渲染页面视图,并将每个令对

    2022年10月17日
    0
  • vs2008中向项目(以C#为例)添加要求管理员权限的属性(为了兼容vista的UAC)

    vs2008中向项目(以C#为例)添加要求管理员权限的属性(为了兼容vista的UAC)

    2021年8月23日
    88
  • 关于platform_device一些讲解「建议收藏」

    关于platform_device一些讲解「建议收藏」从2.6版本开始引入了platform这个概念,在开发底层驱动程序时,首先要确认的就是设备的资源信息,例如设备的地址,在2.6内核中将每个设备的资源用结构platform_device来描述,该结构体定义在kernel\include\linux\platform_device.h中:structplatform_device{constchar*name;u32id;structdevicedev;u32num_resources;structresou

    2022年7月24日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号