对服务器进行压力测试的方法及系统的制作方法
【专利摘要】本发明提供了对服务器进行压力测试的方法及系统,其中,该方法包括:从待测服务器获取访问日志文件,从访问日志文件中读取访问请求;向待测服务器发送访问请求,并接收待测服务器返回的对访问请求进行处理后的响应消息;从访问日志文件中读取对应所述访问请求的响应消息,比较读取的响应消息与接收的响应消息是否相同,记录比较结果。本发明方案能够节省压力测试的工作量,并能得到关于响应消息一致性的测试结果。
【专利说明】对服务器进行压力测试的方法及系统
【技术领域】
[0001]本发明涉及测试领域,尤其涉及对服务器进行压力测试的方法及系统。
【背景技术】
[0002]互联网开发的节奏非常快,一天内常有大量版本的业务上线,每个业务由各自的服务器提供服务,如何快速对这些服务器进行压力测试是互联网企业测试中遇到的棘手问题。压力测试也就是模仿用户对服务器发起大量访问请求进而得到服务器响应情况的测试。
[0003]现有对服务器进行压力测试的方法须通过手工测试完成,都需要经历制定测试计划、编写测试用例、执行测试用例、编写测试报告的完整过程。在这个过程中,针对不同的待测服务器,需要编写不同的测试用例,其工作量很大,并且,执行测试用例也是一个频繁的操作,需要耗费大量的人力。以待测服务器是检索服务器为例,需要人为编写大量的带有不同检索词的访问请求,并人为执行访问请求,以向检索服务器进行访问;而后,接收检索服务器返回的对访问请求进行处理后的响应消息,人为统计并记录访问结果,具体包括:人为统计接收到响应消息的访问次数,将所述次数与访问总次数进行相除,将相除结果作为压力测试结果。
[0004]可见,现有方案需要消耗大量的人力资源,并且,只能统计出是否接收到响应消息的测试结果,不能得到关于响应消息一致性的测试结果。
【发明内容】
[0005]本发明提供了一种对服务器进行压力测试的方法,该方法能够节省压力测试的工作量,并能得到关于响应消息一致性的测试结果。
[0006]本发明提供了一种对服务器进行压力测试的系统,该系统能够节省压力测试的工作量,并能得到关于响应消息一致性的测试结果。
[0007]—种对服务器进行压力测试的方法,该方法包括:
[0008]从待测服务器获取访问日志文件,从访问日志文件中读取访问请求;
[0009]向待测服务器发送访问请求,并接收待测服务器返回的对访问请求进行处理后的响应消息;
[0010]从访问日志文件中读取对应所述访问请求的响应消息,比较读取的响应消息与接收的响应消息是否相同,记录比较结果。
[0011]一种对服务器进行压力测试的系统,该系统包括代理服务器和测试管理子系统;
[0012]所述代理服务器,用于从待测服务器获取访问日志文件,缓存访问日志文件,从访问日志文件中读取访问请求,向待测服务器发送访问请求,并接收待测服务器返回的对访问请求进行处理后的响应消息,将所述访问请求和所述响应消息发送给所述测试管理子系统;
[0013]所述测试管理子系统,用于从所述代理服务器缓存的访问日志文件中读取对应所述访问请求的响应消息,比较读取的响应消息与接收的响应消息是否相同,记录比较结果。
[0014]从上述方案可以看出,本发明中,从待测服务器获取访问日志文件,根据从访问日志文件读取的访问请求向待测服务器发送访问请求;而后,从访问日志文件中读取对应所述访问请求的响应消息,比较读取的响应消息与接收的响应消息是否相同,记录比较结果。本发明根据从访问日志文件读取的访问请求向待测服务器发送访问请求,利用访问日志文件中用户的真实访问作为测试用例,大大减小了工作量;并且,测试路径覆盖广泛,可模仿各种网络、各种浏览器的真实访问,使测试结果更真实、准确;而且,本发明还对从访问日志文件中读取的响应消息与接收的响应消息进行比较,进而得到了关于响应消息一致性的测试结果。
【专利附图】
【附图说明】
[0015]图1为本发明对服务器进行压力测试的方法示意性流程图;
[0016]图2为本发明对服务器进行压力测试的系统结构示意图。
【具体实施方式】
[0017]为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
[0018]互联网服务器即互联网中为用户提供某业务服务的服务器,每个互联网服务器每天都有大量的用户访问,包括从全球任何地方、在任何时间以任何网络进行的访问,不同的用户按照各自不同的访问习惯对这些服务器进行访问,其复杂程度和覆盖的完善性都强于企业内部对服务器的压力测试;而这些访问信息都记录在服务器的访问日志文件中,所述访问信息包括访问请求和对应的响应消息。该访问日志文件用于记录用户访问服务器的访问信息,包括访问请求和对应的响应消息。
[0019]本发明基于访问日志文件,根据从访问日志文件读取的访问请求向待测服务器发送访问请求,以对待测服务器进行压力测试。参见图1,为本发明测试系统对服务器进行压力测试的方法示意性流程图,其包括以下步骤:
[0020]步骤101,从待测服务器获取访问日志文件,从访问日志文件中读取访问请求。
[0021]如果所述待测服务器为搜索引擎服务器,从访问日志文件中读取的访问请求为用户在访问过程中向待测服务器发送的包含关键词的各种访问请求,例如包含关键词“黄山”的查询请求,包含关键词“总统”的查询请求,等等。
[0022]实际用户客户端与待测服务器进行数据传输之前,需建立链接,分别确认对方的身份。本发明中,测试系统相当于实际用户客户端,在测试系统从待测服务器获取访问日志文件之前,也需在测试系统与待测服务器之间建立链接,分别确认对方的身份,测试系统保存待测服务器标识,待测服务器保存测试系统标识。
[0023]步骤102,向待测服务器发送访问请求,并接收待测服务器返回的对访问请求进行处理后的响应消息。
[0024]访问请求包括Http访问的信息头(Header )和请求体数据;响应消息包括Http响应的信息头(Header)和响应内容体数据。测试系统与待测服务器之间传输的访问请求、响应消息等信息可具体采用socket协议格式。响应消息是待测服务器对接收的访问请求进行处理后的消息,具体说明,如果所述待测服务器为搜索引擎服务器,访问请求为用户在访问过程中向待测服务器发送的包含关键词的各种访问请求,例如包含关键词“黄山”的查询请求,则待测服务器根据关键词“黄山”进行数据搜索,将搜索得到的数据作为响应内容体数据,包含在响应消息中反馈给用户客户端。
[0025]步骤103,从访问日志文件中读取对应所述访问请求的响应消息,比较读取的响应消息与接收的响应消息是否相同,记录比较结果。
[0026]具体地,可以将读取的响应消息称为第一响应消息,将接收的响应消息称为第二响应消息。
[0027]比较响应消息是否相同的方法有多种,下面列举两种进行说明:
[0028]方法一:
[0029]采用消息摘要算法第五版(md5, Message Digest Algorithm),比较第一响应消息字符串与第二响应消息字符串是否相同,如果是,则读取的响应消息与接收的响应消息相同。采用md5比较字符串是否相同为已有技术,这里不赘述。
[0030]方法二:
[0031]分别读取响应消息中JS对象符号(JSON, JavaScript Object Notation)字段包含的键值,比较键值是否相同,如果是,则第一响应消息与第二响应消息相同;键值就是数据库中某种字段的值。响应消息包含JSON字段,JSON字段中包含键值,每条响应消息唯一对应一个键值,如果两条响应消息中的键值相同,则这两条响应消息相同。
[0032]步骤103所述记录比较结果,包括多种记录响应消息是否相同的方式,例如:
[0033]统计比较结果为相同的访问次数,将该访问次数作为压力测试结果;或者,
[0034]统计比较结果为相同的访问次数,再将所述次数与访问总次数进行相除,将相除结果作为压力测试结果。
[0035]得到压力测试结果之后,测试系统可将压力测试结果以邮件或报表的形式通知测试人员和开发人员,进而使测试人员和开发人员快速了解服务器变化情况。
[0036]本发明根据从访问日志文件读取的访问请求向待测服务器发送访问请求,利用访问日志文件中用户的真实访问作为测试用例,不用编写特定的测试用例,大大减小了工作量;并且,测试路径覆盖广泛,可模仿各种网络、各种浏览器的真实访问,使测试结果更真实、准确;而且,本发明还对从访问日志文件中读取的响应消息与接收的响应消息进行比较,进而得到了关于响应消息一致性的测试结果。
[0037]参见图2,为本发明对服务器进行压力测试的系统结构示意图,该系统也就是前述的测试系统,其包括代理服务器和测试管理子系统;
[0038]所述代理服务器,用于从待测服务器获取访问日志文件,缓存访问日志文件,从访问日志文件中读取访问请求,向待测服务器发送访问请求,并接收待测服务器返回的对访问请求进行处理后的响应消息,将所述访问请求和所述响应消息发送给所述测试管理子系统;
[0039]所述测试管理子系统,用于从所述代理服务器缓存的访问日志文件中读取对应所述访问请求的响应消息,比较读取的响应消息与接收的响应消息是否相同,记录比较结果。
[0040]具体地,访问请求包括Http访问的信息头(Header)和请求体数据,响应消息包括Http响应的信息头和响应内容体数据。[0041]可选地,所述代理服务器包括链接建立单元,用于预先与待测服务器之间建立链接,确认待测服务器身份。
[0042]实际用户客户端与待测服务器进行数据传输之前,需建立链接,分别确认对方的身份。本发明中,代理服务器相当于实际用户客户端,在代理服务器从待测服务器获取访问日志文件之前,也需在代理服务器与待测服务器之间建立链接,分别确认对方的身份,代理服务器保存待测服务器标识,待测服务器保存代理服务器标识。具体地,代理服务器可采用Http代理的方式用80或8080端口提供代理服务。
[0043]可选地,所述测试管理子系统包括第一比较单元,用于采用md5,比较读取的响应消息字符串与接收的响应消息字符串是否相同,如果是,则读取的响应消息与接收的响应消息相同。
[0044]可选地,所述测试管理子系统包括第二比较单元,用于分别从读取的响应消息和接收的响应消息中读取JSON字段包含的键值,比较键值是否相同,如果是,则读取的响应消息与接收的响应消息相同。响应消息包含JSON字段,JSON字段中包含键值,每条响应消息唯一对应一个键值,如果两条响应消息中的键值相同,则这两条响应消息相同。
[0045]可选地,所述测试管理子系统包括结果记录单元,用于统计比较结果为相同的访问次数,将所述次数与访问总次数进行相除,将相除结果作为压力测试结果。得到压力测试结果之后,测试管理子系统可将压力测试结果以邮件或报表的形式通知测试人员和开发人员,进而使测试人员和开发人员快速了解服务器变化情况,以对服务器进行维护。
[0046]根据需要,代理服务器和测试管理子系统可置于同一设备内,也可以分别置于两个设备上。
[0047]本发明利用互联网服务器中访问日志文件记录的海量用户的访问请求,向待测服务器发送访问请求,并结合访问日志文件中记录的响应消息进行分析,得到压力测试结果,从而实现了快速、准确地对待测服务器进行自动化压力测试。
[0048]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种对服务器进行压力测试的方法,其特征在于,该方法包括: 从待测服务器获取访问日志文件,从访问日志文件中读取访问请求; 向待测服务器发送访问请求,并接收待测服务器返回的对访问请求进行处理后的响应消息; 从访问日志文件中读取对应所述访问请求的响应消息,比较读取的响应消息与接收的响应消息是否相同,记录比较结果。
2.如权利要求1所述的方法,其特征在于,所述从待测服务器获取访问日志文件之前,该方法还包括: 与待测服务器之间建立链接,分别确认对方的身份。
3.如权利要求1所述的方法,其特征在于,所述比较包括: 采用消息摘要算法第五版,比较读取的响应消息字符串与接收的响应消息字符串是否相同,如果是,则读取的响应消息与接收的响应消息相同。
4.如权利要求1所述的方法,其特征在于,所述比较包括: 分别从读取的响应消息与接收的响应消息中读取JSON字段包含的键值,比较键值是否相同,如果是,则读取的响应消息与接收的响应消息相同。
5.如权利要求1至4中任一项所述的方法,其特征在于,所述记录比较结果包括: 统计比较结果为相同的访问次数,将所述次数与访问总次数进行相除,将相除结果作为压力测试结果。
6.一种对服务器进行压力测试的系统,其特征在于,该系统包括代理服务器和测试管理子系统; 所述代理服务器,用于从待测服务器获取访问日志文件,缓存访问日志文件,从访问日志文件中读取访问请求,向待测服务器发送访问请求,并接收待测服务器返回的对访问请求进行处理后的响应消息,将所述访问请求和所述响应消息发送给所述测试管理子系统; 所述测试管理子系统,用于从所述代理服务器缓存的访问日志文件中读取对应所述访问请求的响应消息,比较读取的响应消息与接收的响应消息是否相同,记录比较结果。
7.如权利要求6所述的系统,其特征在于,所述代理服务器包括链接建立单元,用于预先与待测服务器之间建立链接,确认待测服务器身份。
8.如权利要求6所述的系统,其特征在于,所述测试管理子系统包括第一比较单元,用于采用消息摘要算法第五版,比较读取的响应消息字符串与接收的响应消息字符串是否相同,如果是,则读取的响应消息与接收的响应消息相同。
9.如权利要求6所述的系统,其特征在于,所述测试管理子系统包括第二比较单元,用于分别从读取的响应消息和接收的响应消息中读取JSON字段包含的键值,比较键值是否相同,如果是,则读取的响应消息与接收的响应消息相同。
10.如权利要求6至9中任一项所述的系统,其特征在于,所述测试管理子系统包括结果记录单元,用于统计比较结果为相同的访问次数,将所述次数与访问总次数进行相除,将相除结果作为压力测试结果。
【文档编号】H04L12/26GK103428042SQ201210159568
【公开日】2013年12月4日 申请日期:2012年5月22日 优先权日:2012年5月22日
【发明者】封晓静 申请人:腾讯科技(深圳)有限公司