
出版社: 清华大学
原售价: 79.00
折扣价: 60.83
折扣购买: 大话软件测试--性能自动化及团队管理
ISBN: 9787302511809
第3章JMeter脚本开发实战精要 LoadRunner学习完之后我们趁热打铁来学习另一款热门的测试工具JMeter,虽然它没有LoadRunner那么好理解、易使用,但仍有让人爱不释手的优点,比如,开源和插件丰富、扩展性强、做接口功能自动化也非常好用等,本章就将带领大家进行学习。需要提醒的是本章不会涉及基础的知识和操作,大家可自行到我的博客或附录中的参考资料中查看。 3.1JMeter介绍 JMeter是一款开源的测试工具,既可以做性能测试,也可以做功能测试,在很多朋友的认知里,JMeter和LoadRunner都是做性能测试的工具,但其实JMeter做接口功能自动化测试也非常好用,而且现在很多企业也都在这么用。 JMeter的优点很多,比如,扩展性非常好,有丰富的插件。因为是开源的,所以源代码也可以看到,如果有特殊需求你可以自己去二次开发JMeter。有优点必然会伴随着缺点,易用性不高,参考资料多数为英文,尤其对于小白朋友来说,里面的概念太复杂,操作也有点别扭,入门并不轻松,这也是为什么我一般建议小白朋友们先去学习LoadRunner再来学JMeter的原因之一。 更多的介绍就不多说了,大家可自行查看官网https://jmeter.apache.org。我们这里使用的是JMeter 3.0最新版。 扫右侧二维码可以观看视频,1秒安装JMeter。 3.2使用JMeter完成业务级脚本开发 这里继续以2.2节中的项目为例进行讲解。因为之前我们已经了解了项目背景、需求等信息,所以此处不再讲述,直接进行脚本的开发。 1. 登录脚本 本脚本的逻辑较为简单,大致思路是: 在线程组下新建两个HTTP请求,一个是完成访问登录页,另一个是完成登录的数据提交,其中对用户名进行参数化。大致实现步骤如下。 (1) 访问登录页的HTTP请求如图3.1所示。 图3.1访问登录页 (2) 提交登录数据的HTTP请求,如图3.2所示,其中对username进行了参数化。 图3.2提交登录请求 (3) 用户名参数化,如图3.3所示。除此之外,还可以根据实际情况来适当添加检查点等操作。 图3.3参数化 2. 浏览单品页脚本 此脚本也较为简单,用一个HTTP请求即可,其中对商品ID进行参数化,从而模拟访问不同的单品页,如图3.4所示。 图3.4浏览单品页脚本 3. 搜索脚本 本脚本也是利用一个HTTP请求完成,但有一点需要注意,就是必须勾选“自动重定向”。因为搜索业务存在一个跳转,而勾选“自动重定向”后如果请求的HTTP得到的响应是301或者302时,JMeter会自动重定向到新的页面,如图3.5所示。 图3.5搜索脚本 4. 下单支付脚本 本脚本也是使用HTTP请求来模拟完成对每个业务的操作。很多小白朋友在初次使用的时候过度依赖于录制,即利用Badboy进行脚本录制,之后导入JMeter中。这种方式带来的好处显而易见,但缺点也很明显,你没办法清楚地知道每个请求对应的业务是什么。在本项目中如采用录制的方式会丢失部分请求数据,造成脚本无法运行,所以个人建议还是手工编写请求较为妥善。因为脚本过长,这里我们只举例讲解具有代表性的步骤。比如,加入购物车,如图3.6所示。 图3.6加入购物车脚本 本脚本中需要注意的有两点。 路径字段的填写一定要正确,明确使用的是哪个方法。 goods参数填写一定要正确,这里传递的就是JSON串。如果你不知道这个JSON串怎么来的,可以通过抓包等手段来分析。具体的含义已经在2.2节中讲解过,此处不再讲述。 对于不少朋友来说,类似加入购物车这样的请求就是个天大的难题,在小强性能测试班的学员中也得到了证实。基础的匮乏、常识的缺失都是导致我们进步缓慢的元凶,尤其是初次看到一些“不正常”的数据时往往会不淡定,没有主动思考的习惯,这是大家需要特别注意和提升的地方。 所有脚本的大致框架编写完成后,对部分脚本做一些优化即可进行测试了。这里特别指出,如果你利用JMeter来完成较大并发量的性能测试,建议使用分布式,这样得出的数据较单点式更加准确。 小 强 课 堂 对于业务级的脚本我们还是建议更加真实地模拟用户的请求操作,所以像LoadRunner一样,也需要加入一定的思考时间,在JMeter中可以使用固定定时器或者高斯随机定时器来实现。 除此之外,如果想在JMeter中达到业务比例的分配,一般有三种实现方式。 建立多个线程组,分别设置运行策略。 使用逻辑控制器下的吞吐量控制器,可设定固定次数或百分比模式。 使用逻辑控制器下的if控制器,类似2.7节中LoadRunner的控制分配比例代码。 通过本节讲解,更加确定了熟悉业务以及业务对应的请求是多么重要。也再次说明了一件事情: 不论你是做性能测试还是自动化测试,永远脱离不了业务,不要觉得做手工测试就枯燥,这正是你学习业务、深入理解业务请求的绝佳时机,永远不要小看你看不起的工作,你看不起只能说明你没看透。 《大话软件测试——性能、自动化及团队管理)》是一本系统性的软件测试参考书,从性能测试和自动化测试的方方面面以及测试团队建设、职业发展等热门话题展开,能帮助新手深入理解性能测试和自动化测试的意义,也能帮助有多年工作经验正处于迷茫阶段的从业人员排忧解难,还能给那些刚刚步入管理岗位的菜鸟们提供指导(尤其是团队建设、绩效管理等),可以说是测试工程师必读的一本书籍。