JMeter与badboy进行性能测试

原文出处

摘要:性能测试是软件测试过程中必不可少的一项关键测试。面对复杂而繁琐的测试过程,易操作的JMeter、结合快捷录制测试脚本的Badboy,大幅度提高了测试人员对web性能测试的效率。本文通过介绍JMeter和Badboy两款软件的使用方法并结合具体案例对web软件进行性能测试,更直观和全面地反映出这两款软件的便捷性和高效性。

关键词:JMeter;  Badbo; 软件测试; 性能测试; web测试

 

Convenientand efficient web performance tests with JMeter and Badboy

MiaoWei Tao

Performance testing is a key and essentialtest in the process of software testing.In the face of complex and tedioustesting process,it can greatly improve the efficiency of the testers on webperformance test combing the easy to operate JMeter with the quick andrecording the testscript badboy. In this paper, it can more intuitively andcomprehensively reflect both convenience and efficiency of the software,throughly the introduction of the use of JMeter and Badboy software andcombined with the specific case of web software performance testing,

Key words: JMeter; Badboy;  software testing;  performance testing;  web testing

 

0引言:随着中国IT行业的快速发展及其竞争愈演愈烈,软件测试的效率直接影响企业的软件开发进度和公司业绩。因此,在web软件性能测试过程中,需要为测试人员提供一个快捷、高效率的测试软件以加快进度。在众多的web性能测试软件中,JMeter 由于它的开源、简洁、易操作、实用性极强等特点成为测试人员最常用的性能测试软件之一。再利用Badboy录制JMeter测试脚本的完美结合,极大地提高了软件测试人员的效率,降低企业软件开发成本。

 

1.认识JMeter:

1.1 JMeter介绍:

JMeter是Apache组织开发的基于Java的性能测试工具,它能够同时模拟大量的用户(或者请求)对web服务器等进行大规模的性能测试,并且根据添加监听器元件生成报告来快速分析测试结果。由于JMeter是一款桌面程序,解压压缩包即可运行,并且在酝酿好测试逻辑后,只需要通过鼠标右键添加相关元件就可以开始测试,使测试人员快速操作.

 

1.2 JMeter主要元件介绍

说明:由于本文注重的是JMeter与badboy的使用,故只对JMeter的主要元件和主要属性进行说明,其他未说明的元件和属性对一般性测试影响不大,故在此不做说明。

线程组:这是使用JMter测试的首要元件,一切的测试都建立在线程组之上。它的功能主要是:模拟用户(或者请求)数。添加线程组的方法:在“测试计划”上右键---“添加”---“Threads(Users)”---“线程组”。在线程组的属性中,名称和注释都可以自行更改,主要是方便阐述测试主题。线程数:指需要模拟的用户(或请求)数量,是必填属性。

Sampler:该类元件用来设置请求方式,比如HTTP请求、FTP请求、Java请求等。添加HTTP请求的方法:在“线程组”上右键---“添加”---“Sampler”---“HTTP请求”。HTTP请求有若干个属性。首先,按要求填写好服务器名称和端口号,点击“Parameters”的“添加”按钮,可以添加需要向服务器发送的参数,如登陆的最基本参数就是用户名和密码。

逻辑控制器:该类元件是负责控制测试流程的逻辑控制,经常使用到的元件是循环控制器。添加循环控制器的方法:在“线程组”上右键---“添加”---“逻辑控制器”---“循环控制器”。该元件用于设置循环次数,在属性“循环次数”中输入具体数字就代表循环次数。

定时器:该类元件主要用来设定时间。SynchronizingTimer是用于设定同步时间,作用是使线程处于等待状态,直到所有线程到达集结点后再释放给服务器,制造逼真的多用户同时操作系统的场景。

监听器:该类元件主要是监听测试过程中的数据变化,生成对应的报表,便于测试人员进行分析。该类主要元件是:聚合报告、察看结果树。添加该类元件的方法:在“线程组”上右键---“添加”---“监听器”---“聚合报告”/“察看结果树”。其中,属性的详细介绍请看下文。

 

1.3两种监听器属性的详细介绍:

1.3.1“聚合报告”主要属性介绍:

说明:“聚合报告”是JMeter测试结果的主要分析工具,因为它囊括了大多数测试数据的主要属性。而其他分析工具也是需要存在的,只是起到辅助和判断作用。

Label:具体的请求名称。在HTTP请求中,默认为url。

Samples:线程数量。指需要模拟的用户数(或请求数)。

Average:所有请求的平均响应时间。

Median:所有响应时间的中值。

90% Line:90%用户的响应时间。

Min:最小的响应时间。

Max:最大的响应时间。

Error%:所有请求发生错误的百分比(计算方法:请求的数量/请求的总数)。

Throughput:服务器的吞吐量。即服务器每单位时间处理的请求数。

KB/Sec:每秒钟请求的字节数

1.3.2“察看结果树”主要属性介绍:

    说明:“察看结果树”的主要功能是,通过查看相关属性来判断请求是否成功发送和被服务器响应。

    取样器结果:主要查看两个参数:Response code和Response message。用于判断请求结果的状态。一般情况下,这两个参数值是Response code: 200,Response message: OK。表示请求成功。

    请求:主要查看CookieData参数,记录Cookie数据。可以判断是否同一个用户登录。

    响应数据:显示出服务器相应请求的页面代码。

1.3.3小技巧:

1.对于“察看结果树”,一般情况下可以直接查看“请求”和“相应数据”就足够判断是否成功。其中要注意,单靠“取样器结果”是不够的,因为在进行以登录为基础的其他动作,都需要浏览器记住Cookie才能进行服务器的访问。否则,即使“取样器结果”返回值OK,后面的操作都会失败,因为会被服务器拦截。

2.监听器主要有两种做法,一是在线程组的节点上添加监听器,这种方式添加的监听器用于监听线程组每一个请求的情况。另一种是,在需要监听的节点上添加监听器,起到单独监听该节点请求的情况。这样使得监听数据更加准确,得到需要的数据。

 

2.认识Badboy

2.1Badboy介绍

Badboy是一个能够帮助测试和开发的动态应用程序,可以作用在多个软件上面。而Badboy录制的以.jmx扩展名的脚本可以与JMeter完美的结合在一起,使得测试人员从手动设置脚本到自动录制脚本的转变,无论从时间上和准确性来说,都要优于人工设置。重要的是省去了大量繁琐复杂甚至重复的动作,从而深受测试人员的喜爱。Badboy的录制过程类似于使用浏览器访问网站的方法,它可以有效而简单地来捕获和回放浏览器活动,从而录制脚本。

2.2Badboy使用方法

打开Badboy操作界面后,我们只需要注意四点:

第一点:“Script”面板的树状文件集合,称为脚本树(ScriptTree),是Badboy自动捕获浏览器活动的显示列表。我们可以通过在每一个节点上点击鼠标右键---Properties选项,进行节点名称的修改。这样的好处有助于标记测试的每一个步骤,易于区分和快速定位。其次,同样的操作方法,可以通过添加“AddTest...”添加测试、“AddChild Step...”添加步骤。

第二点:在“浏览器地址栏”(BrowserBar)处,输入需要测试的web地址,按“Enter”键进入对应的web项目。

第三点:位于“工具栏”(Tool Bar)的“红圆点”和旁边的“深黑正方形”分别代表录制按钮和停止录制按钮。启动Badboy,默认启动录制按钮。这两个按钮结合“Script”面板起到十分便捷的作用。例如,在进行脚本录制时,不小心录制错误了一步,则可以删除;或者说,需要倒回前一步进行某一个操作的录制,此时可以在该节点上点击鼠标右键---RecordHere。即可在该节点的基础上重新录制。这避免了因为失误而重新录制脚本所带来时间上的浪费,也达到了便捷高效的效果。

第四点:“菜单栏”(Menu Bar)的“File”---“Exportto JMeter...”,这是功能键导出并保存录制的脚本以“.jmx”扩展名的文件,用于JMeter运行的脚本。

 

3.单独使用JMeter进行web登录测试的基本步骤:

步骤一:手动添加线程组并设置线程数。

步骤二:手动添加循环控制器并设置循环次数。

步骤三:手动添加HTTP请求并设置相关参数(用户名及密码)。

步骤四:手动添加监听器:察看结果树和聚合报告。

步骤五:点击运行按钮。

 

案例分析:通过以上的五个步骤,可以知道:单独使用JMeter进行web的登录测试并不复杂和麻烦。其中的关键是发送了一个HTTP请求,以及设置具体的参数,并且每一步都必须手动。这样,一旦要测试大的测试范围,比如说测试“从登录系统后再进行某一个操作再退出系统”,这样就需要更多的手动设置,步骤也会越来越多,更会占用开发人员的更多工作时间。如果每一个测试都需要发送数十个HTTP请求,那么会直接影响软件测试进度。

结论:因此,单独使用JMeter测试大量的且每次测试都需要多个HTTP请求的方法并不可取,直接拖慢测试进度,间接影响公司成本。

 

4.JMeter结合Badboy进行web测试的使用案例

说明:本案例使用的web软件及服务器是建立在某公司开发的web项目基础上进行的测试,因此具有重大的实际意义。为了保护专利,本案例不透露具体web应用程序。

4.1JMeter结合Badboy的使用流程:

首先,在Badboy软件上录制需要测试的web软件的脚本,保存并导出为“.jmx”文件。

其次,打开JMeter软件,导入已保存好的“.jmx”文件。

最后,设置好相关元件及其数据,就可以开始运行脚本,测试就完成了。

4.2具体案例:对某web软件“从‘登陆’到‘创建任务’再到‘提交并保存任务’” 的   性能测试。

说明:1.在本测试过程中,使用中文标记每一个节点。2.在测试过程中会弹出脚本错误的信息,点击“是”按钮即可,这是由于某些脚本不兼容造成的,对一般性测试没有影响。

步骤一:打开Badboy,在浏览器地址栏输入测试路径并点击回车键。在“Script”面板中,Badboy会自动捕获和记录浏览器的多动,并且在右侧显示出与浏览器访问web一样的方式。

步骤二:在登录框依次输入用户名和密码,点击“登录”按钮。页面跳转至系统内部。

步骤三:在web系统的菜单栏中,点击“测试任务”---“创建任务”,系统跳转至创建任务页面。

步骤四:在该页面输入相关数据,点击“保存并提交”按钮。系统跳转至“任务列表”。

步骤五:停止录制脚本,导出并保存“.jmx”扩展名的文件。(Badboy脚本录制完毕)

步骤六:打开JMeter并导入Badboy脚本,设置相关数据和添加监听器。

步骤七:运行测试,查看监听器结果。

 

监听器结果分析:

说明:为了模拟不同数量级的用户测试系统性能,分别设置了四个线程数:100、200、300、400。其中的“察看结果树”主要用于判断是否登陆成功,故不作详细说明,如图1;只截图登录模块的聚合报告进行分析,四个数量级分别对应图2、图3、图4、图5。

 

 JMeter与badboy进行性能测试_第1张图片

图1  登录测试的“察看结果树”截图


图2 100线程数--登陆测试的聚合报告



图3 200线程数--登陆测试的聚合报告



图4 300线程数--登陆测试的聚合报告



图5 400线程数--登陆测试的聚合报告

 

分析:由四个聚合报告可以看出,随着线程数(即用户数或者请求数)的增加,服务器对请求的响应时间(Average和90%Line等)也随之增加,从而直观地反映出服务器的性能。一般情况下,判断服务器性能对用户体验的标准如下:

采用5-10-20原则:

系统业响应时间小于5秒,为优秀,用户体验很好;

系统响应时间在5-10秒之间,为良好,用户体验一般;

系统响应时间在10-20秒之间,为及格,用户体验勉强接受;

系统响应时间超过20秒,为不及格,用户无法接受系统的响应速度。

可以看出该系统的性能在300线程数时,处于优秀状态,体验感觉很好;在400线程数时,处于良好状态,用户体验一般。因此,该系统适用于300用户使用。

 

案例分析:

       该案例的测试节点截图如图6所示。可以得知,以上七个步骤完成了数十个HTTP的请求。回看具体操作,使用Badboy录制脚本,相当于在浏览器上操作web系统一次,就可以自动捕获HTTP请求,从而代替了手动设置,显示出方便快捷、高效的特点。如果单独使用JMeter进行手动设置的脚本进行测试,在时间上远远不及两款软件相结合的效率。


JMeter与badboy进行性能测试_第2张图片

图6  测试节点截图

结论:

       使用JMeter结合Badboy的方式进行web测试,大大地提高了测试效率、节约了时间。

 

5.扩展:提高web测试的便捷性和逼真模拟的技巧

技巧一:模拟大量不同用户对系统进行访问。(有登陆设置)(点击打开链接)(sdhs)

       在进行性能测试时,经常需要设置大量不同用户对系统进行访问的测试用例。为此,JMeter有两种方法进行设置,此处采用JMeter常用函数_CSVRead()的方式对登录测试进行设置。

       操作步骤:

       步骤一:建立登陆数据(用户名和密码)文件(.dat格式)。创建文本文档(.txt),在文档中加入用户名和密码(格式为:用户名,密码)。保存后将.txt格式更改为.dat格式。

       步骤二:打开JMeter,点击“选项”---“函数助手对话框”---选择“_CSVRead”。

       步骤三:填写函数参数。对应“值”的第一行填写.dat文件的绝对路径,第二行填写数字列1,再点击“生成”按钮,就生成了一个公式,此公式是.dat文件的第一列的所有数据。

       步骤四:重复步骤三获得第二列数据。

       步骤五:将两个公式代替“登录”请求的用户名和密码。这样就可以实现大量不同用户的登录了。

 

技巧二:使用同步定时器Synchronizing Timer,逼真模拟大量用户对系统某个操作进行同时的访问。

       此技巧用于需要逼真模拟大量用户同时操作的情况。创建方式很简单,在需要访问的节点钱插入一个同步定时器:Synchronizing Timer。设置好同步线程数即可生效。

 

技巧总结:关于这两个小技巧,可以反映出JMeter测试工具的便捷性和实用性。原因是,如果没有这两个小技巧,就无法模仿大量用户和逼真的同步操作,从而转向其他性能测试工具。所以,具备这两个小技巧之后,方便了测试人员的操作。

 

6.结束语

在企业级开发中,软件测试是一项很关键的程序,直接影响软件开发的进度。而性能测试又是软件测试的重要之处。而采用开源的JMeter和Badboy相结合的测试工具进行web性能测试,从本文中可以充分体现测试的便捷性和高效性。不仅节省了测试成本,还节省了测试人员的大量时间,更省去了繁琐复杂的测试脚本的设置,给予测试人员舒适的测试环节和加快软件开发进度,间接提高企业利润。因此,JMeter和Badboy相结合的测试工具是企业及测试人员在性能测试中最理想的选择之一。


你可能感兴趣的:(JMeter与badboy进行性能测试)