8.1 分析图合并
Analysis 保存的图都是单个的图,在实际的分析中往往需要将有关系的一些图合并起来查看,从多个角度去度量结果,且观察两个视图之间的关系。
8.1.1 分析图合并原理
选择 View -> Merge Graphs 命令,弹出 Merge Graphs (合并图)对话框。设置三个属性:
(1)选择要合并的图。注意:只能选择 X 轴度量单位相同的图。
(2)设置合并图标题。
(3)选择合并类型。
1)叠加:查看共用同一个 X 轴的两个图的内容。合并图左侧的 Y 轴显示当前图的 Y 轴,右边的 Y 轴显示合并进来的图的 Y 轴值。
2)平铺:在平铺布局查看,共用同一个 X 轴,合并进来的图显示在当前的图上方;
3)关联:合并后当前活动图的 Y 轴变为合并图的 X 轴,被合并图的 Y 轴作为合并图的 Y 轴;
8.1.2 分析步骤:
(1)找到影响几个图变化趋势的决定因子;
(2)了解合并图中其他的图与该决定因子的关系;
(3)分析决定因子图的变化趋势;
(4)通过各图之间的关系来判断其他的这些图变化的趋势是否正确。
8.2 分析图关联
8.2.1 分析图关联原理
在当前的分析图中右击,在弹出的快捷菜单中选择 Auto Correlate 命令,将打开 Auto Correlate 对话框。
Time Range(时间范围)选项卡用来设置分析关联图度量的时间范围。
在 Suggest Time Range by 下拉列表框中可以看到有两种时间范围方式:
Trend(趋势):选择关联度量值变化趋势相对稳定的一段为时间范围。
Feature(功能):在关联度量值变化相对稳定的时间内,选择一段大体与整个趋势相似的时间范围。
Best(最佳):选择关联度量值发生明显变化趋势的一段时间范围。
Correlation Options 选项卡:
在 Select Graphs for Correlation 中选择需要关联的图。
在 Data Interval 组合框中选择计算关联度量轮询之间的时间间隔,可以设置为自动,也可以自定义。
在 Output 组合框中选择显示输出的级别。
分析图关联是通过复杂的统计学方法,精确定位哪些因素对交易响应时间的影响最大,关联并不关注具体的数据,而是关注于参数样本在特定时间范围内的状态、趋势。只有折线图可以使用 Auto Correlation。
具体因为还没有应用过,所以有待后续补充。
8.3 页面细分
(免费领取Python自动化学习资料 工具,面试宝典面试技巧,加QQ群,785128166,群内还会大佬技术交流)
8.3.1 页面细分原理
在平均事务图中右击,在弹出的菜单中选择 Show Transaction Breakdown Tree 命令,生成 Web Page Diagnostics 图。通过分解页面可以发现,页面中哪些组件响应时间较长?平均事务响应时间过长是由服务器还是由网络环境引起的?
页面细分技术主要用来分析失败事务是由哪些组件引起的。
(1)打开“平均事务响应时间”图,打开 Graph Settings 对话框,对过滤条件进行设置,将 Transaction End Status 设置为 Fail,Transaction Name 设置为要分析的事务即可;
(2)显示事务细分树。在“平均事务响应时间”图中右击,在弹出的快捷菜单中选择 Show Transaction Breakdown Tree 命令,此时左下角弹出一个 Breakdown Tree 图,显示了所有失败事务图;
(3)显示页面细分图。选择需要分析的事务,右击并选择“Web Page Diagnostics for” 命令,Analysis 分析器生成 Web Page Diagnostics 图;
(4)查看 Download Time 图,选择查看各组件所花费的时间;
(5)手动查看花费时间最长的组件,右击,选择 Copy the full path to the clipboard 命令,将路径复制到 IE 浏览器中进行预览。或者选择 View page browser 命令直接打开该页面进行预览。如果手动预览该页面和测试结果一致,则说明是由于该页面响应时间引起。如果手动预览响应很快,那么要进一步判断是由测试环境引起还是由网络引起。
(6)查看 Download Time (Over Time)图。图中详细地记录了请求在各阶段所花费的时间,可以看出 DNS 服务器花在解析域名的时间有多少,看看是不是 DNS 服务器有问题。
(7)查看 Time to First Buffer(Over Time)图。通过它观察问题到底是由服务器引起还是由网络引起。
具体因为还没有应用过,所以有待后续补充。
8.4 钻取技术
8.4.1 钻取技术原理
在当前活动图中右击,选择 Drill Down 命令,可以对当前图进行钻取。
通过钻取技术可以获取事务图更深层次的资料。能够钻取的组资料由 Drill Down Options 对话框中的 Group by 决定,但一般都包含 Host Name、Vuser ID 等信息,这是由当前活动的图所决定。
钻取技术通常有以下几个特点:
(1)在一个活动图中,选择一个需要的组进行显示,这时钻取技术可以帮助进行特定的测量;
(2)组信息由当前活动图所决定,对于不同的图,组信息有所不同;
(3)可以钻取每个 Vuser 的平均事务响应时间,并可以按 Vuser ID 进行排序;
(4)钻取后的信息会按组中不同的元素与不同的曲线显示出来,如不同的 Vuser ID 显示不同的曲线图;
整个钻取过程结束后应该借助其他的手段来帮助进行更深层次的分析,才能找到系统真正的瓶颈。
8.5 导入外部数据
LoadRunner 自带了一个导入数据的工具,但是目前还应用不到,后续会深入了解。
8.6 使用 HTTPWatch 分析响应时间
HTTPWatch 是比较强大的网页数据分析工具,可以集成在 Internet Explorer 工具栏,主要功能有网页摘要、Cookie 管理、缓存管理、消息头发送/接收、字符查询、POST 数据、目录管理功能和报告输出。
只需要选择相应的网站,软件就可以对网站与 IE 之间的请求回复的通信情况进行分析,并在同一界面显示相应的日志记录。每一个 HTTP 记录都可以详细地分析其 Cookies、消息头、字符查询等信息。支持 HTTPS 及分析报告输出为 XML、CSV 等格式。
8.6.1 HTTP 消息格式
浏览器发出的请求信息和服务器返回的响应信息统称为 HTTP 消息。一个完整的请求消息包括这几部分内容:一个请求行、若干消息头及实体内容,其中一些消息头和实体内容是可选的,消息头和实体内容之间使用空行隔开。响应消息同上。
HTTP 请求和响应消息头都是用于描述 HTTP 消息本身的信息,通畅也称为元信息,消息头相当于服务器和浏览器之间的暗号指令,主要实现 HTTP 客户机与服务器之间的条件请求和应答。
通常情况分为4类消息头:
通用信息头:既能用于请求信息,也可以用于响应消息,但与被传输的实体内容没有关系
请求头:用于在请求消息中向服务器传递附加信息,主要包括客户机可以接受的数据类型、压缩方法、语言,以及客户计算机上保留的 Cookie 信息和发出该请求的超链接源地址等
响应头:用于在响应消息中向客户端传递附加信息,包括服务程序的名称、要求客户端进行认证的方式、请求的资源已移动到的新地址等。
实体头:用做实体内容的元信息,描述了实体内容的属性,包括实体信息的类型、长度、压缩方法、最后一次修改的时间和数据的有效期等。
请求行中包括3部分内容:请求方式、资源路径以及所用的 HTTP 协议版本,各部分之间使用空格分隔,语法格式如下:
请求方式 资源路径 HTTP版本号<CRLF>
<CRLF>表示回车和换行两个字符的组合。
响应消息的状态行中包括:HTTP 协议版本号、一个表示成功或失败的整数代码(状态码)和对状态码进行描述的文本信息,各部分之间用空格分隔,语法格式如下:
HTTP版本号 状态码 援引叙述<CRLF>
8.6.2 Request Grid
启动 HTTPWatch 后,单击菜单区的 Record 按钮开始录制,单击 Stop 即停止录制。
(免费领取Python自动化学习资料 工具,面试宝典面试技巧,加QQ群,785128166,群内还会大佬技术交流)
Request Grid 图
Started:相对开始时间,是指接下来访问的 URL 相对于第一个 URL 被打开的时间
Time Chart:耗时比例图,击整个请求应答过程中各部分所花时间的比例图
Time:请求所消耗的时间
Sent:提交该请求所发送的字节数
Received:提交请求后服务器返回的字节数
Method:提交请求的方法
Result:请求处理的结果
Type:服务器返回内容的类型
URL:请求的 URL 地址
Received:返回的字节数,需要关注返回字节数较大的需求,因为字节数较大会影响整个请求的耗时,也是调优需要关注的内容
Result:请求响应的状态,需要关注非200的值
8.6.3 Request View
Request View 内容详细记录了每个请求的信息,主要包括:
Display URL:表示请求的 URL
Started At:表示该请求开始的时间
Submit Form:表示表单(Form)被提交到的 URL,只有 POST 操作时才会有该项
DNS Lookup:表示 DNS 查找操作
Connect:表示 TCP 连接操作
HTTP Request:表示一个请求被发出去
HTTP Response:表示一个应答被收回
Read Cache:表示该次请求是从 cache 中读取应答消息
Time Chart:显示了一次请求应答过程中每个时间片段所花费的时间
各时间片段含义
Header Sent 的内容:
Request-Line:包括HTTP 提交请求方法、HTTP 版本和 URL 子路径
Accept:可接受的文件类型
Accept-Encoding:可接受的纯文本之外的内容编码的类型
Accept-Language:可接受的返回数据的语言种类
Connection:指定该次请求回应结束后,如何处理连接
Cache-Control:指定请求和响应遵循的缓存机制
Location:用于重定向接受者到一个新 URL 地址
Host:请求连接的主机名
Header Received的内容:
Status-Line:包括 HTTP 请求的状态码和 HTTP 版本信息
Connection:指定该次请求回应结束后,如何处理连接
Cache-Control:指定请求和响应遵循的缓存机制
Content-Language:内容数据的语言种类
Content-Length:传输的内容长度
Content-Type:内容数据的类型(Mini Type)
Last-Modified:服务器上保存内容的最后修订时间
Expires:内容数据被缓存的过期时间
Cookies 的内容:
Cookie Name:Cookie 的名称
Direction:表明该 Cookie 是由客户端发送到服务器的还是从服务器接收的
Value:Cookie 的内容
Path:该 Cookie 所在站点的路径
Domain:显示该 Cookie 所属的域名或主机名
Expires:指该 Cookie 失效时间,当浏览器关闭时该 Cookie 值将被删除
Cache 的内容:
URL in cache:该项内容是否写入浏览器缓存
Expires:Cache 失效日期和时间
Last Modification:当 Cache 内容被存储或更新时,那么更改日期将会修改为最近的日期
Last Cache Update:Cache 内容被更新的最近时间
Last Access:最近一次读 Cache 的时间
ETag:用于匹配服务器上的实体,使用的方式为模糊匹配
Hit Count:读 Cache 内容的次数
Query String:是通过 URL 来传递参数的一种方式,通常格式如下:
...?name1=value1&name2=value2&...
POST Data:显示以 POST 方式请求的数据信息
以POST方式提交数据的编码方式有以下几种:
(1)Text/plain 纯文本
(2)Application/x-www-form-urlencoded,默认方式,格式与 Query String 一致,但是 POST 数据是通过请求内容提交的,而不是用 URL 来提交
(3)Multipart/form-data:使用 MIME 编码方式(Multipurpose Internet eMail Extension)
(免费领取Python自动化学习资料 工具,面试宝典面试技巧,加QQ群,785128166,群内还会大佬技术交流)
Content 的内容:
显示接收到的 HTTP 响应信息,包括 MIME 的类型,总的字节数和这些内容是否从服务中下载或从缓存中读取,如果对 HTTP 进行了压缩,还应该显示压缩的方式、压缩后的文件大小及压缩比
Stream的内容:
显示客户端发送的内容和服务器端返回的内容。