随着互联网技术的快速发展,网络应用程序在几乎每个领域都得到了广泛应用,从银行到教育再到政府机构。随着网络应用程序为用户提供的便利性不断增加,网络应用程序的受欢迎程度也在不断提升。然而,互联网用户在使用网络时经常会遇到一些意想不到的错误。这些错误削弱了域名的可靠性以及公司的声誉,使网站逐渐失去用户。因此,为了提供更加高效、准确的服务,解决域名问题需要进行充分的测试。
在软件开发过程中,敏捷测试极为重要,因为它有助于确保软件的有效性和一致性能。然而,在多用户系统中,敏捷测试在评估最终用户体验方面存在一定限制。当软件项目接近完成时,企业必须进行一种新型的测试——负载测试,以确定程序在实际环境中,在不同的工作负载和流量水平下的表现。
在我的文章中,我将首先介绍负载测试的概念,然后回答如何使用Telerik Test Studio进行负载测试的问题。我还将通过我在Manavgat E-Çap系统上使用Telerik Test Studio进行的负载测试实例来加强说明。但在此之前,我想先谈谈负载测试的概念。负载测试是一种性能评估方法,通过模拟大量用户同时访问软件、网站或应用程序来测试系统的表现。这种非功能性测试,也被称为“容量测试”,对于在系统部署前评估其性能、稳定性和功能性至关重要。
负载测试的结果揭示了在线系统的关键方面,包括其整体运行能力(即可处理的最大并发用户数)、应对高峰用户需求的能力、基础设施的稳定性,以及在不同用户负载下的性能指标,如产出率、资源需求和响应时间等。
负载测试是软件开发过程中的重要环节。尽管功能测试也很关键,但它不足以预测在不同用户负载下的性能表现。负载测试有助于发现其他测试中可能忽略的重大性能问题,使企业能够在软件发布或更新之前解决这些问题。
如何使用Telerik Test Studio进行真实负载测试?
现在,我想从更技术的角度讨论如何执行负载测试。此外,接下来的部分将基于我在项目范围内对一个实际系统进行的负载测试,给出详细的说明。
负载测试模拟了在现实世界中可能发生的使用场景。因此,测试系统与目标应用程序或系统之间建立了一条通信线路,通过发出合法的请求来访问应用程序或系统的功能。负载测试与常规使用的唯一区别在于,负载测试通过逐步增加负载来跟踪应用程序的性能表现。
为了确保在应用负载测试的系统中执行一个健全的过程,并且其结果能够被文献报道,通常会按照以下步骤进行:
1、场景开发
2、场景录制
3、规划
4、测试应用
5、报告
1、场景开发
负载测试场景通常由与待测试系统用户体验最接近的机构工作人员开发。这些人员可能是系统分析师或业务部门的代表。具体的应用程序使用场景是通过考虑实际的使用案例来创建的。这些场景还可以分配在总请求中的比例。
我们在对一个系统进行负载测试时的首要目标是开发该系统的测试场景。这些场景是基于真实用户在系统上的操作行为来设计的。场景的数量取决于系统的规模以及用户在系统上可能执行的操作变化。此外,每个场景都有其自身的“工作负载”。根据每个场景的不同,工作负载的权重也可能不同。
2、场景录制
负载测试请求是通过代理服务器对Web应用程序进行记录的,并且在加载时,这些已记录的请求会被多次重放。我们在第一步中确定的每个场景都必须彼此独立地进行记录。
在对Manavgat E-Çap系统进行的负载测试中,模拟的第五用户配置场景如上所示。场景中的每一步都是通过代理服务器进行记录的,并且在安装过程中,这些记录的请求会被多次重放。
此外,还可以在场景中的每一步或每隔几步之间添加“思考时间”。思考时间的目的是模拟用户在场景步骤之间切换时的思考时间。该时间可以手动设置或由系统自动设定。
在我们的第二步中,还有另一个需要为负载测试决定的元素。我们可以通过如下图所示的右侧“测试设置”字段对负载测试进行调整。
在测试设置部分,您可以确定负载测试将从多少用户开始以及以多少用户结束。负载测试的持续时间也可以进行调整。此外,您还可以设置在负载测试的哪一分钟之前用户数量应持续增加。
3、规划
尽管负载测试的范围通常仅限于特定的应用程序和系统,但它仍可能对网络造成影响。如果在生产环境中对实时系统进行负载测试,负面影响业务流程的风险将更高。出于这些原因,规划负载测试时需要格外小心。
如果负载测试是在实时环境中进行的,必须制定计划以确保使用系统的人员不受到负面影响。这样规划能够确保系统用户受到负载测试的影响最小化。在我正在处理的Manavgat E-Çap应用程序中,这是一个实时系统,为了让用户受到的影响最小,通常会选择用户使用系统最少的时区进行负载测试。对于Manavgat E-Çap系统,这一时段是凌晨2点到4点。通过Google Analytics可以轻松获取用户使用系统最少的时段信息。
4、测试应用
由于在负载测试期间与目标应用程序或系统之间存在通信,执行测试的一方将获得详细的测量数据。利用这些数据,可以从客户端的角度报告各种性能统计信息
在完成上述三个步骤后,剩下的唯一步骤就是在相关系统上实施负载测试。要执行负载测试,只需点击左上角的“运行”按钮。负载测试完成后,应通过检查Telerik Test Studio提供的负载测试结果进行推断。Telerik Test Studio自动提供的负载测试分析结果包括:
- 平均响应时间(毫秒)
- 平均首字节时间(毫秒)
- 每秒接收字节数
- 每秒发送字节数
- 已完成的虚拟用户数
- 已创建的虚拟用户数
- 当前虚拟用户数
- 故障虚拟用户数
- 每秒HTTP错误数
- 每秒发送请求数
通过筛选上述分析结果,可以显示应用于系统的负载测试结果。此处选择的筛选条件与负载测试的预期结果相关。换句话说,如果要基于系统负载测试中的响应时间进行改进,则应在结果部分应用“平均响应时间(毫秒)”筛选条件,并对获得的结果进行解读。
5、报告
系统管理员在负载测试期间关注服务器指标是有益的。通过这种方式,可以看到服务器上的资源使用统计数据,并将这些统计数据纳入负载测试报告中。测试团队可以在此方面为系统管理员提供支持。
负载测试的最后阶段是报告过程,这一阶段非常重要。在此部分,报告应基于通过Telerik Test Studio进行的负载测试中获得的结果。负载测试报告中应反映出使用的指标、思考时间以及成功标准,简而言之,所有为负载测试确定的条件都应体现在报告中。在“负载测试实施”步骤中,应基于Telerik Test Studio自动提供的负载测试分析结果进行推断。
作为报告阶段的示例,我想展示一部分在Manavgat E-Çap系统上进行的负载测试结果报告。
在对用户配置2进行的负载测试中,测试了20名用户。正如在平均响应时间图表中观察到的那样,系统在负载测试期间多次出现内存不足错误。这表明,平均响应时间图表的关键部分与水平区域指定的秒数合并,系统出现了错误。在图表上多次观察到内存错误后,系统会自行恢复并对用户发送的请求作出响应(前提是请求合理)。此外,从负载测试开始到结束,平均响应时间图表中有明显的波动。在对用户配置2施加20个用户负载时,系统的最大响应时间为70秒。根据负载测试中使用的指标,由于系统在用户配置2中的最大响应时间超过了30秒,负载测试被判定为失败。
在用户配置2上对20名用户进行负载测试获得的数据如下:
- 平均响应时间:20.498秒
- 中位数:15.754秒
- 最大响应时间:70.944秒
参考文献
[1] Buret Julien, Droze Nicolas. An Overview of Load Test Tools (2003). http://carfield.com.hk/document/software+engineering/testing/load+tools+overview.pdf
[2] Mercury Interactive Corporation. Load Testing to Predict Web Performance. Technical Report WP-1079–0604, Mercury Interactive Corporation, 2004.
[3] D. Darheim, J. Grundy, J. Hosking, C. Lutteroth, G. Weber. Realistic Load Testing of Web Applications. In Proceedings of the 10th European Conference on Software Maintenance and Reengineering, pages 11–70, 2006.