Web应用程序测试工具/框架对比及Jmeter的入门级使用

【注】图片显示不出来,请移步个人有道云笔记:

文档:各种·软件自动化测试工具.note
链接:http://note.youdao.com/noteshare?id=26324df7b908c39c7eff55bf8ea004fb&sub=0D3CF0F8220A4BDEB8311FCA2DAC3FE0

Web应用程序测试工具/框架对比:

功能

种类

自动录制动作

自动生成测试脚本

支持并发/压力测试

结果分析

是否免费

不依赖浏览器

侧重点

可在linux下测试

Selenium

Y

Y

 

Y

Y(开源)

 

WebUI、接口

Y

Postman

 

Y

 

Y

Y

Y

接口

Y

Soapui

 

Y

Y

Y

Y(开源)

Y

接口

Y

Robot Framework

 

Y

Y

Y

Y

Y

WebUI、接口

Y

QTP

Y

Y

Y

Y

  

WebUI、接口

 

Jmeter

Y

Y

Y

Y

Y(开源)

Y

接口、性能

Y

Loadrunner

  

Y

Y

 

Y

性能

Y

Jenkins

   

Y

Y

分析结果以邮件通知

持续集成

 

Katalon Studio

Y

Y

 

Y

Y

Y

WebUI、接口

Y

Watir

 

Y

 

Y

Y

 

WebUI

 

TestComplete

Y

Y

 

Y

  

WebUI、接口、性能

 

Selenium:

Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,支持多种开发语言:ruby,python,java,perl,c#等,同时Selenium 测试直接自动运行在浏览器中,就像真正的用户在手工操作一样。selenium最简单的使用方式就是IDE录制脚本。录制完毕后生成python脚本,将该脚本运行并调试就完成一个测试用例的测试。

 

Soapui:

针对一个 soapUI 的 TestCase, 可以建立一个或多个 LoadTest, 这些 LoadTest 会自动的把 TestCase 中的所有步骤都添加到其中, 在运行的时候,soapUI 会自动的使用多个线程来运行这些 TestStep,同时也会监控它们的运行时间, 例如最短时间,最长时间,平均时间等等。这样用户能够很直观的看到 REST 服务的响应时间,从而对性能进行调优。

几个策略还允许您在执行期间更改线程数,从而使您可以在LoadTest进度时交互地更改负载并监视结果。

在执行期间,LoadTest工具栏有两种类型的图表可供选择:统计和统计历史。这些的主要目的是随着时间的推移可视化选定的统计数据,以便能够发现突发和意外的变化

 

Jmeter:

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测 试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。

 

Postman:

linux上用newman+postman进行自动化测试。

第一步:导出postman文件

Postman就是根据collection和enviroment这两个json文件来自动化运行的!

所以从Postman中导出collection和enviroment文件,上传到linux主机。

第二步:安装node/npm。

第三步:安装newman

 

SoapUI、Jmeter、Postman三种接口测试工具的比较

1、支持的接口类型与测试类型

 

 

SoapUI可以创建Soap Project或者Rest Project(但Project中添加什么类型的Step则不受影响),可添加wsdl、wadl资源,并能在TestCase里添加Rest或Soap的Step。

Jmeter可以在线程组里添加HTTP、TCP或WebSocket的Sampler。

Postman仅支持Rest接口。

2、结果解析、展示

 

3、脚本扩展能力

SoapUI:Groovy脚本

Jmeter:Bean shell(Java)

Postman:JavaScript

4. 团队协作

SoapUI:本身一个project是一个xml文件,但是可以通过配置变成一系列文件夹,每个Case、每个Suite均是独立的文件,这样可通过svn/git进行团队协作。支持性较好。

 

Jmeter:一个TestPlan也是一个jmx(xml)文件,无法分割,但Jmeter有一个合并的功能,允许将多个文件合并在一起。只能每个团队成员自己建立一个TestPlan,分功能块进行测试。最后整理合并。

 

Postman:有团队协作的功能,需要付费。

 

Robot Framework:

Robot Framework是一款python编写的可扩展的关键字驱动的自动化测试框架。主要用于轮次很多的验收测试验收测试驱动开发

自动化测试框架分为几种类型:

  • 关键字驱动框架: 将测试过程的操作方法抽象为关键字;
  • 数据驱动框架: 将测试中用到的数据在自动化测试过程中自动加载;
  • 混合型框架: 数据驱动、关键字驱动等多种技术融合的框架;

 

loadrunner:

LoadRunner是一款专业级别的应用负载测试工具,它可以模拟上千万用户对企业应用进行真实的负载测试,通过大量实时监测器和精确的分析来得到最真实的数据,并且支持自动重复测试,以确保数值稳定和准确。

 

Jenkins:

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作。开发工作流程分为以下几个阶段:

编码 → 构建 → 集成 → 测试 → 交付 → 部署

 

持续集成(CI)能持续地获取新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构建。构建可持续的自动化测试 :构建检查的扩展部分,构建后执行预先制定的一套测试规则,完成后触发通知(Email,RSS等等)给相关的当事人。 

优点:1、Jenkins一切配置都可以在web界面上完成;

2、测试报告聚合,所有模块的测试报告(HTML格式)都被聚合在一起,结果一目了然,使用其他CI,这几乎是件不可能完成的任务(这样可以结合其他的测试工具更方便的显示测试结果).

 

Katalon Studio:

它是基于selenium 和appium的框架。不需要用户去操心框架背后的逻辑。Katalon Studio 支持Web,Mobile,API 类型的自动化测试,它同时可以管理页面元素、测试数据、测试案例、生成自动化测试报告,可以集成到 CI/CD 过程中,兼容流行的质量处理工具,包括qTest,JIRA等。Katalon 存在的不足:

不支持中文,相关中文文档少。目前国内 Katalon 的用户非常少,相关的使用文档也很少,但官方的文档还是很详细的,遇到问提可以查阅用户手册.

Watir:

Watir和Selenium都是直接在浏览器中执行测试,并且可以在浏览器最小化的状态下运行。Watir只支持IE浏览器,支持的语言只有ruby

TestComplete:

该工具最大的特点为支持多种脚本语言编译环境。支持VBScript 、 Delphi Script 、 J Script 、 C# Script 、 C++ Script 多种脚本语言,这些语言基本上涵盖了较为主流的测试语言,提高工具可用性。测试人员可以选择自己熟悉的脚本语言进行编写。

QTP和TestComplete在录制时都能针对特定的浏览器产生特定的脚本,但QTP在IE中录制的脚本能在所有支持的浏览器上回放。从这点看来,QTP在浏览器兼容性测试方面更胜一筹。和QTP相比,TC最大的优势在于其低廉的价格。

 

最终选择的方案:Jmeter+Jenkins+ant持续集成

Jmeter的使用:https://www.cnblogs.com/imyalost/p/7062784.html(经典教程)

 

●【1】利用badboy录制脚本

 

录制完成后,点击file→save或者export to jmeter,将文件保存为jmeter的脚本格式:.jmx;启动jmeter,打开刚录制保存的文件,就可以进行测试了。

●【2】利用jmeter代理服务器录制脚本

启动jmeter:在测试计划中添加线程组,线程组中添加逻辑控制器→录制控制器->添加非测试元件→http代理服务器右键单击,添加定时器→高斯随机定时器(告知jmeter在其生成的http请求中自动增加一个定时器)定时器会使相应的取样器被延迟:上一个请求发送被响应且延时指定时间后,下一个被定时器影响的取样请求才会被发送如果在代理服务器中使用了高斯随机定时器,则应在其中的固定延迟偏移里添加:${T}:用于自动引用记录的延迟时间。打开浏览器,网络设置,将局域网设置中的代理服务器设为localhost,端口设置为8080。代理服务器配置后之后,点击启动,代理服务器就会开始记录所接受的http请求。

在浏览器地址栏输入需要测试的地址并进行相关操作,录制完成后,停止http代理服务器,在录制控制器上点击右键,保存录制的脚本。

●【3】HTTP请求

启动jmeter,建立一个测试计划然后,新建一个线程组

 

然后,添加一个http信息头管理器(JMeter不是浏览器,因此其行为并不和浏览器完全一致。这些JMeter提供的配置元件中的HTTP属性管理器用于尽可能模拟浏览器行为,在HTTP协议层上发送给被测应用的http请求)

 

http信息头管理器添加好之后,需要填入信息头的名称以及对应的值,如下

 

Content-Type意思可以理解为参数名称、类型,值下面输入对应的参数类型就行了,这里我测试时候需要传输json类型,因此就填入了application/json

接着,添加Sampler(取样器)→http请求

 

接下来可以给这个测试计划添加一个监视器,常用的监视器有“查看结果树”和“聚合报告”

 

如上,测试结束后,如果我们的请求成功发送给服务器,那么结果树里面的模拟请求会显示为绿色,可以通过取样器结果里面的响应状态码信息来判断

●【4】参数化

前置处理器——User Variables

点击线程组添加前置处理器——User Variables(用户参数):

 

如上图所示,在该参数组中已经设置了两个参数,username和password分别有2组不同的取值,通过页面下方的四个按钮,可以增加删除参数的可能取值。

●【5】关联之正则表达式提取器

如果有这样的情况:一个完整的操作流程,需要先完成某个操作,获得某个值或数据信息,然后才能进行下一步的操作(也就是常说的关联/将上一个请求的响应结果作为下一个请求的参数);在jmeter中,可以利用正则表达式提取器来帮助我们完成这一动作。

首先:在默认的测试计划中添加一个线程组,然后添加取样器,这里我以JDBC请求做例子。然后:右键添加后置处理器→正则表达式提取器,正则表达式提取器界面如下:

 

后置处理器:在请求结束或者返回响应结果时发挥作用;

正则表达式提取器:允许用户从服务器的响应中通过使用perl的正则表达式提取值。该元素会作用在指定范围取样器,用正则表达式提取所需值,生成模板字符串,并将结果存储到给定的变量名中。提取到的参数,调用时用${SOCIAL_NO_1},${SOCIAL_NO_2}...

●【6】逻辑控制器

jmeter中逻辑控制器(Logic Controllers)的作用域只对其子节点的sampler有效,作用是控制采样器的执行顺序。

jmeter提供了17种逻辑控制器,它们各个功能都不尽相同,大概可以分为2种使用类型:

①.控制测试计划执行过程中节点的逻辑执行顺序,如:Loop Controller(循环控制器)、If Controller(如果if控制器)等;

②.对测试计划中的脚本进行分组,方便JMeter统计执行结果以及进行脚本的运行时控制等,如:Throughput Controller(吞吐量控制器)、Transaction Controller(事务控制器)等

●【7】生成HTML性能测试报告

如果已经有经过测试生成的.jtl文件,可以利用该文件直接生成HTML可视化测试报告。进入jmeter的bin目录下,输入如下命令:

jmeter -g test.jtl -o /path # -g:后跟test.jtl文件所在的路径 # -o:后跟生成的HTML文件存放的路径

如果还未生成.jtl文件,则可以通过如下命令,一次性完成测试执行和生成HTML可视化报告的操作,进入jmeter的bin目录下,输入如下命令:

jmeter -n -t test.jmx -l test.jtl -e -o /path # -n:以非GUI形式运行Jmeter # -t:source.jmx 脚本路径 # -l:result.jtl 运行结果保存路径(.jtl),此文件必须不存在 # -e:在脚本运行结束后生成html报告 # -o:用于存放html报告的目录

执行完毕后,用浏览器打开生成的文件目录下的index文件,效果展示如下

 

详细信息图表有点多,这里我挑几个性能测试过程中比较关键的图表:

①、Response Times Over Time(脚本运行期间的响应时间变化趋势图)

②、Response Time Percentiles Over Time (脚本运行期间成功的请求响应时间百分比分布图)

③、Bytes Throughput Over Time(脚本运行期间的吞吐量变化趋势图)

④、Transactions Per Second(每秒事务数)

①、 Response Time Percentiles(响应时间百分比分布曲线图)

②、Time Vs Threads(平均响应时间和线程数的对应变化曲线)

●【8】常用插件

jmeter的第三方插件

 

TPS:每秒事务数,性能测试中,最重要的2个指标之一。该插件的作用是在测试脚本执行过程中,监控查看服务器的TPS表现————比如整体趋势、实时平均值走向、稳定性等。某次压力测试TPS变化展示图:

 

TRT:事务响应时间,性能测试中,最重要的两个指标的另外一个。该插件的主要作用是在测试脚本执行过程中,监控查看响应时间的实时平均值、整体响应时间走向等。

 

具体操作实例会放在后续博客中演示。

linux下搭建Jmeter+Ant+Jenkins集成:https://blog.csdn.net/om934257/article/details/88707726

参考:

https://blog.csdn.net/wangjie0925/article/details/79740370

https://blog.csdn.net/github_27109687/article/details/71968662

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值