阅读957 返回首页    go 微信


录制工具使用指南__脚本录制调试指南_性能测试-阿里云

返回企业版测试脚本

工具简述

  使用性能测试进行测试的时候,针对简单URL请求,很多用户都可以直接按照模板来进行编写,相当简单;但对于某些稍微复杂的业务,例如登陆、考试、订购、购买、发帖、回帖、退出等业务,由于捕获请求内容或者手工编写脚本工作量稍大,给用户带来不便,在此背景下,性能测试项目组开发了基于Firefox(支持37及以下版本)和Chrome浏览器插件录制工具。
  通过使用此工具,用户在被测系统中进行手工操作业务,录制工具会将用户的操作行为进行录制,录制完成以后,自动生成脚本,根据业务规则可能稍微修改一下脚本,就可以运行脚本了,录制下来的脚本模拟了用户真实的操作行为,极大地方便用户的使用。

使用指南

工具下载与安装

一、Chrome录制工具下载与安装

1.chrome录制工具下载

下载地址:chrome_pts_record_tool

或登录阿里云进入性能测试页面 —> 点击“测试脚本”—> 点击“新增脚本”—> 编写方式选择“手工编写”—> 点击“录制工具下载”—> 点击下载。
如下图展示:

2.点击继续,会提示如下信息,需手动安装:

3.首先打开Chrome扩展程序:

4.将下载的文件:Aliyun-PTS-Record-Tool_v.0.2.6.3.crx直接拖动到扩展程序中:

5.提示信息确认是否添加,点击“添加”:

6.完成安装后,扩展程序中显示安装的性能测试录制工具,同时浏览器右上角会显示性能测试录制工具Logo:

7.点击性能测试录制工具Logo,即可打开工具,进行脚本录制操作,安装完成!

二、Firefox录制工具下载与安装

1.Firefox录制工具下载

下载地址:firefox_pts_record_tool

或使用Firefox浏览器登录阿里云进入性能测试页面 —> 点击“测试脚本”—> 点击“新增脚本”—> 编写方式选择“手工编写”—> 点击“录制工具下载”—> 点击下载。
如下图展示:

2.打开新的浏览器标签页,提示是否允许下载安装,点击“允许”:

3.下载完成后,提示用户是否安装,点击立刻安装”:

4.安装成功后,会显示提示信息,同时浏览器右上角会有性能测试录制工具Logo:

5.点击性能测试录制工具Logo,即可打开工具,进行脚本录制操作,安装完成!

功能界面介绍

录制使用

  • 步骤1:打开浏览器点击右上角性能测试录制工具Logo,弹出录制工具框和浏览器,截图如下:

备注:录制工具打开后默认启用开始录制。

  • 步骤2:定义事务名,在浏览器输入URL进行访问操作,录制工具会自动记录访问操作过程中的HTTP请求。

  • 步骤3:录制工具默认只显示HTML类型HTTP的录制请求,如需显示其他类型请求请点击内容过滤选择需要显示的类型请求。

  • 步骤4:录制完成后点击停止录制按钮,如果需要预览录制生成的脚本,请点击脚本预览按钮,

  • 步骤5:预览脚本确认没问题后就可以点击上传脚本按钮保存脚本到性能测试云端,完成脚本录制过程。

阿里云邮箱发送邮件脚本示例

业务调研

  假设针对阿里云邮箱系统进行压测,邮箱最主要的业务是发邮件,发邮件流程是登陆邮箱,发送一封又一封的邮件,而在业务高峰的时候,可能会有很多人在给不同的人发邮件,邮件主题和内容都可能不一样,发完邮件后,退出邮箱系统,采用性能测试录制工具将此过程录制下来。

录制业务流程请求

  • 步骤1:访问阿里云邮箱

  • 步骤2:登陆邮箱

  • 步骤3:进入写邮件页面

  • 步骤4:发送邮件

  • 步骤5:退出邮箱

  • 步骤6:保存录制脚本到性能测试云端

添加参数化

  • 参数化定义: 将脚本中录制下来的特定值用一个变量来代替,该变量的值是可变的。例如收件人邮箱、标题内容等。

  • 参数化作用: 主要是模拟用户真实访问系统和避免一些系统约束导致虚拟用户运行失败。

  • 参数化策略:

    • 是否需要唯一性约束
    • 是否需要当前时间
    • 是否需要从缓存中获得或模拟缓存策略
    • 是否受其他字段约束

如果测试脚本需要发送邮件给不同的收件人,并且不同的收件人邮箱标题和内容不一样。这种情况下就需要我们对录制下来的收件人、邮箱标题、邮箱内容进行参数化操作:

  • 步骤1:准备参数化文件--CSV格式,用UE或Notepad工具(不要用Excel)进行编辑,每列参数化列值以逗号分隔;注意如果参数化文件内容包含中文,参数化文件请使用UTF-8无BOM格式编码保存。

  • 步骤2:上传参数化文件mail.csv到性能测试脚本编辑页面
  • 步骤3:在脚本添加导入相关类,并加载参数化文件

    from com.aliyun.pts import DsvReader
    from com.aliyun.pts import ParamManager
    params = ParamManager.getInstance()
    params.addProvider(DsvReader(u"mail.csv"))
    
  • 步骤4:在脚本中找到需要参数化的URL请求,进行参数化 需要参数化内容:%5B%22181791781%40qq.com

提取参数化文件的参数值:

Import urllib
Sendmail_addr=urllib.quote(params.getParamValue(u'mail.csv:sendmail_addr').encode('utf-8'))

备注:如果参数化内容需要URL转码,需要使用urllib.quote方法转码 替换需要参数的内容:

添加文本检查点

文本检查点是通过对HTTP请求响应的文本内容进行检查是否包含预先设置的文本内容;用户可以通过设置文本检查点来判断事物是否成功。发送邮件的HTTP请求成功后响应文本内容包含了“success“关键字,通过文本检查点来判断发送邮件事务是否成功。

#当响应返回码为200,且返回body内容包含success则返回True 
PTS.HttpUtilities.checkResponse(200, " success ")

添加关联

  • 关联定义: 在录制脚本时,录制工具会拦截客户端和服务器端之间的会话生成脚本,生成的脚本都是一成不变的。但是业务流程中的HTTP请求中存在一些上下文依赖的动态数据,比如说向服务器发送一个login请求,并发给服务器用户名和口令的数据,服务器端验证数据正确后发送给客户端一个sessionID,不同的客户端登录会返回不同的sessionID,客户端下一次请求的时候就会发送上次请求返回的sessionID给服务器端进行验证合法性。关联就是把脚本中某些固定数据转变成获取自服务器发送的、动态的、每次都不一样的数据。

  • 关联作用: 主要是模拟更真实用户访问系统的行为保证业务的逻辑性和准确性、防止服务器校验导致脚本运行失败。

  • 关联策略:
    在脚本中请求中对动态值进行参数化

    • 决定要捕捉的动态值(通过两个脚本比较、开发建议、脚本经验)
    • 创建一个参数保存捕捉的动态值
    • 对脚本中固定值进行参数化
    • 验证脚本执行的准确性

例阿里云登录提交请求POST,标红的表单数据都是:

可以通过HTTP协议抓包工具(httpwacth、firebug、fiddler)查找需要关联的动态表单数据具体在前面哪个请求中返回:

通过抓包工具查找到具体请求后,在性能测试脚本请求后面添加获取动态值方法。

https://passport.alibaba.com/mini_login.htm?lang=zh_CN&appName=yunmail&appEntrance=default&cssLink=&styleType=auto&bizParams=&notLoadSsoView=true&notKeepLogin=true&rnd=0.8751522711732308请求响应内容:

脚本示例: 抓取动态关联值:

使用动态关联值:

FAQ

1. 问:性能测试录制工具可以录制非Chrome、Firefox浏览器以外的其他应用HTTP/HTTPS协议请求吗?

答:不能,目前只能基于Firefox(支持37及以下版本)和Chrome浏览器进行录制,其他浏览器IE、QQ、Sogou等都是不可以的。

2. 问:行为和事务有何区别?

答:行为指的是一系列业务操作或请求组合,而事务是衡量行为里面一些业务操作或请求所需要的时间,在进行压测的时候,可以在性能测试实时监控图表中显示事务的时间。默认情况下,行为和事务是默认的名字,双击行为名称,可以进行修改事务的名字。

3. 问:脚本录制下来以后,运行没问题,但业务没有做成功,可能原因是?

答:这个问题的产生是多方面的,在性能测试领域叫做“脚本空转”,可能的原因有4点:
(1)数据是一次性的,这样的话录制的时候就用掉了,再运行脚本的时候,数据是无效的,因此业务是做不成功的,例如订单支付、活期销户;可以通过参数化解决。
(2)需要关联,有些业务关联性非常强,不进行关联的话,业务也是不成功的,例如用户ID,TokenID等;可以通过关联进行解决。
(3)一些重要的请求丢失,默认录制工具会将非html类型的请求过滤掉,例如一些json类型的,而这些json类型也是必须的,可以通过选中此类型请求进行解决。
(4)其他方面的原因等

4. 问:需要关联的数据来自于哪个请求,如何快速查找?

答:正在开发易于关联的数据查找,将会在后续版本中实现,目前最好的办法是咨询开发人员、自己定位、寻求性能测试技术人员技术支持。

5. 问:哪些数据需要关联?

答:一般情况下,最快的办法是咨询开发人员;也可以通过录制两份脚本进行对比,不一样的数据可能就需要关联;对于有一定经验的相关人员可以通过猜测,例如用户ID, TokenID等。

6. 问:参数化和关联必须有么?

答:不一定,看业务规则,如果业务没有关联的话,可以不需要,为了更加真实的模拟实际业务场景,建议尽可能的将数据进行参数化。

7. 问:部分Chrome浏览器用户安装插件后,重新打开Chrome浏览器录制工具插件自动灰掉,不能使用

答:由于非来自Chrome网上应用店扩展程序,已停用的扩展程序均显示为灰色,且无法重新启用,需要在扩展程序中删除后重新安装。

返回企业版测试脚本

最后更新:2016-05-06 10:44:38

  上一篇:go 某移动APP性能优化__最佳实践_性能测试-阿里云
  下一篇:go 脚本调试指南__脚本录制调试指南_性能测试-阿里云