1、性能测试报告一、 被测项目简介本次测试的对象是 LR 自带的飞机订票系统,该系统的类型是浏览器/服务器类型。该系统包含的功能主要有用户登陆,选择出发地和目的地、选择出发时间和座位类型、选择航班功能、支付退出登录等。二、 测试规划 测试计划测试活动 计划开始时间 预期结束时间 备注测试用例设计 2015-1-7 2015-1-7创建脚本 2015-1-7 2015-1-7脚本参数化和事务定义2015-1-7 2015-1-7场景设置 2015-1-7 2015-1-7开始测试 2015-1-7 2015-1-7测试结果及分析 2015-1-7 2015-1-9 测试重点本次的测试重点主要有: 用
2、户登录功能 选择出发地和目的地功能 测试环境 软件配置:Windows7 旗舰版 32 位操作系统;HP LoadRunner 11.00Google Chrome 浏览器IE 浏览器 硬件条件:处理器:Intel(R) Core(TM) i5-2450M CPU 2.50GHz内存:2GB三、 测试用例设计本次实验主要的测试方面是用户登录和航班选择,提前注册好十个账号,和十种不同的但正确的航班选择;并用于接下来的参数化。十组账号信息如下:航班信息如下:四、 测试脚本1. 录制的脚本+说明录制的脚本如下:vuser_init()return 0;Action()web_url(“WebTour
3、s“, “URL=http:/127.0.0.1:1080/WebTours/“, “Resource=0“, “RecContentType=text/html“, “Referer=“, “Snapshot=t1.inf“, “Mode=HTML“, LAST);lr_think_time(19);lr_start_transaction(“login“); /定义事务登录web_submit_form(“login.pl“, “Snapshot=t2.inf“, ITEMDATA, “Name=username“, “Value=username“, ENDITEM, “Name=pas
4、sword“, “Value=password“, ENDITEM, “Name=login.x“, “Value=82“, ENDITEM, “Name=login.y“, “Value=9“, ENDITEM, LAST);lr_end_transaction(“login“, LR_AUTO); /事务结束web_image(“Search Flights Button“, “Alt=Search Flights Button“, “Snapshot=t3.inf“, LAST);lr_think_time(9);lr_start_transaction(“book“); /定义事务订票
5、web_submit_form(“reservations.pl“, “Snapshot=t4.inf“, ITEMDATA, “Name=depart“, “Value=from“, ENDITEM, “Name=departDate“, “Value=01/10/2015“, ENDITEM, “Name=arrive“, “Value=to“, ENDITEM, “Name=returnDate“, “Value=01/11/2015“, ENDITEM, “Name=numPassengers“, “Value=1“, ENDITEM, “Name=roundtrip“, “Value
6、=“, ENDITEM, “Name=seatPref“, “Value=Window“, ENDITEM, “Name=seatType“, “Value=First“, ENDITEM, “Name=findFlights.x“, “Value=78“, ENDITEM, “Name=findFlights.y“, “Value=4“, ENDITEM, LAST);lr_think_time(9);web_submit_form(“reservations.pl_2“, “Snapshot=t5.inf“, ITEMDATA, “Name=outboundFlight“, “Value=
7、b“, ENDITEM, “Name=reserveFlights.x“, “Value=74“, ENDITEM, “Name=reserveFlights.y“, “Value=9“, ENDITEM, LAST);lr_end_transaction(“book“, LR_AUTO); /订票事务结束lr_think_time(6);web_submit_form(“reservations.pl_3“, “Snapshot=t6.inf“, ITEMDATA, “Name=firstName“, “Value=s“, ENDITEM, “Name=lastName“, “Value=s
8、“, ENDITEM, “Name=address1“, “Value=s“, ENDITEM, “Name=address2“, “Value=s“, ENDITEM, “Name=pass1“, “Value=s s“, ENDITEM, “Name=creditCard“, “Value=2“, ENDITEM, “Name=expDate“, “Value=2“, ENDITEM, “Name=saveCC“, “Value=“, ENDITEM, “Name=buyFlights.x“, “Value=66“, ENDITEM, “Name=buyFlights.y“, “Value
9、=9“, ENDITEM, LAST);web_image(“SignOff Button“, “Alt=SignOff Button“, “Snapshot=t7.inf“, LAST);return 0;vuser_end()return 0;#ifndef _GLOBALS_H #define _GLOBALS_H/-/ Include Files#include “lrun.h“#include “web_api.h“#include “lrw_custom_body.h“/-/ Global Variables#endif / _GLOBALS_H2. 参数化因为本次实验的测试重点是
10、登录和航班选择,因此在这两个部分分别进行参数化并定义事务。登录时设置参数如下:提前注册好十个账号密码,将这十个账户作为参数化的数据。选择航班时的参数化如下:、共有三个参数,分别是选择的出发地、目的地和航班信息(即航班号、所需费用和时间) 。3. 事务定义共定义两个事务:login 和 book五、 场景配置共设置 12 个 Vuser,并行策略是一开始每 10 秒增加两个Vuser,直到运行的 Vuser 的数量达到 12 个,然后再持续 1 分半钟,退出时,每 15 秒退出 5 个 Vuser。因此整个过程所需时间约为三分钟二十秒左右。六、 测试结果(客观)测试结果:运行的并发数:事务响应时
11、间图:每秒点击数:七、 测试结果分析和结论LoadRunner 进行场景测试结果收集后,首先显示的是该结果的一个摘要信息。主要包括: 场景执行情况(Analysis Summary) 统计信息摘要(Statistics Summary) 事务摘要(Transaction Summary) HTTP 响应摘要(HTTP Responses Summary)1、 场景执行情况本部分给出了本次测试场景的名称、结果存放路径及持续时间。由图可知,本次测试从 19:25 到 19:28 结束,历时 3 分 21秒,与之前的场景配置中的时间吻合。2、 统计信息摘要该部分给出了场景执行结束后并发数、总吞吐量、
12、平均每秒吞吐量、总请求数等信息。由上图我们可以看出,本次测试最大并发数是 12,总吞吐量为 1,427 , 672 字节,平均每秒吞吐量为 7,068 字节,总请求数为 1064,平均每秒请求数为 5.267。对于吞吐量,单位时间内的吞吐量越大,说明服务器处理能力越好,而请求数与吞吐量一班成正比关系。本次实验仅仅设置了 12 个虚拟用户,为了处理方便,节省时间。3、 事务摘要本部分给出了场景执行结束以后相关 Action 的平均响应时间、通过率等情况。由上图可知,每个 Action 的平均响应时间和通过率。Book 订票操作有两个被阻止,37 个通过,而登录操作全部通过。4、 HTTP 响应摘
13、要本部分显示在场景执行过程中,每次 HTTP 请求发出去的状态,是成功还是失败。5、 并发数分析该部分显示了在场景执行过程中并发数的执行情况,包括Vuser 的状态、完成脚本的 Vuser 的数量以及集合统计信息,将这些图和事务图结合使用可以确定 Vuser 的数量对事务响应时间的影响。6、 响应时间这张图是平均事物响应时间图,是平均事物响应时间与结果摘要中的事务摘要合成的7、 每秒点击数反映了客户端每秒钟向服务器端提交的请求数量,若客户端请求越多,与之对应的平均吞吐量也应该越大,并且发出的请求越多对平均事务响应时间的影响越大。8、 业务成功率业务成功率就是事务通过的比率,在图中我们已经很明确
14、的看到每个事务的执行状态。其中事务 Login、Vuser-end-Transaction、Vuser-init-Transaction 均全部通过,但事务 Action- Transaction 和 Book 分别有 8 个、2 个事务未通过。八、 心得体会初次接触 LoadRunner,并且对它自带的服务器和软件系统进行了测试。走了一遍测试的流程,但是其中很多问题还不深入,比如在测试数据的设计、运行测试过程中观察数据的选取、比较测试的结果这些问题上,没有什么项目经验,认识只停留在表面。作为一个负载测试工具,LoadRunner 使用并不是很难,难的是在实践过程中的经验总结。比如哪些行为定义
15、成一个事务来监测;虚拟用户多少个,怎么加载才能测出系统的瓶颈,怎么分析生成的负载测试数据等。所以在以后的学习工作中,要测试不同类型的系统,模拟不同类型的虚拟用户,定义不同的场景,总结经验才能提高。本次实验在装软件方面就花费了很多的时间,到最后幸运的还是装上了。整个测试下来,我发现自己在很多方面都有很大的收获,对于 LoadRunner 的使用也有了更加清楚的认识,对于软件性能测试的一些原理和方法也有了更加深刻的理解。我也知道在以后的工作学习中,还会有机会接触到这方面的知识和类似的大型专业软件,因此我觉得这也是为以后在打基础。LoadRunner 负载测试工具可以很好地对目标系统的性能指标进行评价。通过平均事务响应时间图我们可以做出对系统事务处理能力的评价。通过吞吐量等一些指标,可以反映出系统的网络吞吐能力等等。这些参数将指导我们对应用程序可用性、可靠性的建设。