APP下载

Web系统的性能测试技术研究

2021-10-24张辉

计算机时代 2021年10期
关键词:性能测试软件测试

张辉

摘要: 为保证网络服务质量,对Web系统进行性能测试,成为企业在软件测试工作中重要的环节。从Web体系的架构及特点出发,对Web系统性能测试的要求、场景、指标、流程、策略以及测试用例设计等内容进行分析,研究性能测试的方法,采用测试工具JMeter进行了Web系统的性能测试。结果表明,对Web系统进行性能测试有助于找出系统中存在的问题,为系统进一步优化提供依据。

关键词: 性能测试; Web系统; 软件测试; JMeter

中图分类号:TP3          文献标识码:A     文章编号:1006-8228(2021)10-28-04

Research on performance testing technology of Web system

Zhang Hui

(Gaobo School of software, Nanning University, Nanning, Guangxi 530001, China)

Absrtact: In order to ensure the quality of network service, the performance test of Web system has become an important part in the software testing work of enterprises. Starting from the architecture and characteristics of the Web system, this paper analyzes the requirements, scenarios, indicators, processes, strategies and test case design etc. of the Web system performance test, studies the testing methods, and carries on the performance testing to Web system by using the test tool JMeter. The results show that the performance test of web system is helpful to find out the problems existed in the system and provides a basis for further optimization of the system.

Key words: performance test; Web system; software testing; JMeter

0 引言

隨着Web服务的发展,网络用户数量日渐增多,用户与系统产生的交互场景及软件产生的数据量也日益增加,Web服务器必须能够快速响应用户请求。为了及时解决Web系统所面临的问题,利用性能测试技术对系统进行有效测试,以分析系统是否满足用户对软件在功能和性能上的需求,验证系统的各项性能指标是否达到用户的目标,以便于发现系统存在的瓶颈。

1 Web体系架构

由于Web系统是分布式系统,采用并发、多用户结构,Web系统使用的用户数量更高,受众群体更广。Web系统采用多层体系构架,系统只需根据计算机浏览器,就可以实现软件的功能。Web系统主要采用表示层、业务逻辑层、数据访问层三层架构。三层架构的操作界面主要由计算机浏览器来实现完成,一部分事务管理逻辑在前端完成,关键事务管理逻辑性则在服务端完成。

三层架构执行严格的分层方式,数据访问层只有被业务逻辑层访问,业务逻辑层只有被网页显示层访问,用户根据表示层将信息传输给业务逻辑层,业务逻辑层进行处理有关业务流程标准,并根据数据访问层访问数据库查询得到数据信息,然后将反馈回来的数据在页面显示层进行显示输出[1]。三层设计目的是实现高内聚和低耦合。

2 Web性能测试

2.1 性能测试定义

Web性能测试是指在一定的软硬件网络环境下,通过模拟特定的网络环境,对Web系统进行针对性测试,在服务器正常响应时间内,设置不同的负载压力,查看系统可以承担的并发用户的数量,检测进行实务处理的效率,观察系统指标和空间资源是否达到预期标准,判断系统瓶颈可能发生的位置,如果Web系统测试未达到预期,需对结果指标进行分析,为软件调优提供解决方案。

2.2 性能测试模拟场景

性能测试模拟场景主要有以下三个方面。

⑴ 基于网络的分布式架构:基于网络协议去模拟用户发送请求。

⑵ 多线程:模拟多线程操作,多用户同时操作,模拟大负载量。

⑶ 模拟真实场景:在真实的网络环境,得出的数据才是准确的。如果场景设置不符合实际情况,测试数据也不一定可用。

2.3 性能测试的要求

⑴ 测试Web系统的最佳用户数。随着用户数量的增多系统的响应时间并没有受到影响,但是直到达到某个用户数量时,响应时间开始明显增长。

⑵ 测试系统的最大用户数。随着用户数量的增多,系统的响应时间开始延迟,直到用户的数量达到某一数值,系统开始响应失败或崩溃。

⑶ 找到目前系统的性能瓶颈。依次测试系统的数据库和服务层各个接口,分析找到系统的瓶颈。

⑷ 测试系统的稳定性。系统保持较高的用户数量及较高负载持续访问的时间长度内,系统一直能有效响应,并没有明显的响应时长起伏或死机。

2.4 性能测试类别

⑴ 负载测试:在系统能承受的压力极限范围内持续运行,以测试系统的稳定性。主要用于掌握系统的性能,为提升系统性能提供基础依据。

⑵ 压力测试:指持续提升Web系统的工作压力,直到被测系统无法正常运行,以测试系统能承受的工作压力,由此得到系统性能的最大服务质量。

⑶ 并发测试:在一定的软硬件网络环境下,并发测试多种业务场景,在同一个负载压力下,构造相同的测试数据,目的是为了测试系统是否能正常运行。

⑷ 稳定测试:在一定负载的情况下,给予外界或内部非正常的干扰,检测系统是否能提供稳定服务,目的主要是为了验证正常情况下,系统是否能满足性能指标要求。

⑸ 容量测试:通常是获取数据库的最佳容量能力,又称为容量预估。在一定的并发用户,不同的数据量访问下,观察数据库的处理能力,获取数据库的各项性能指标。

2.5 性能测试指标

⑴ 响应时间:是指系统对请求作出响应的时间,不同的功能的响应时间也不尽相同。通常指该系统所有功能的平均响应时间或者所有功能的最大响应时间[2]。

⑵ 吞吐量:吞吐量是指单位时间内服务器处理的字节数。在一定时间内,用户数量持续增加,而吞吐量趋于平衡甚至有略微减少不见递增,说明该用户数量即为当前系统所能承受的最大用户数量,系统处理能力已经达到瓶颈。

⑶ TPS:是指服务器每秒处理的事务数,TPS值越大,系统处理能力越强。

⑷ 并发用户数:模拟多个用户在同一时间访问服务器,并发用户数指的就是在线用户数量。

2.6 性能测试的流程

⑴ 对测试需求进行分析,划定性能测试的范围,了解系统的性能指标,把业务模型映射成测试模型,进行工作评估,制定测试计划。

⑵ 录制测试脚本,调试测试脚本,设计测试场景,根据测试模型来准备被测系统的主数据与业务数据,测试数据[3]。

⑶ 运行、监控场景,收集性能数据,对性能测试过程中发现的缺陷进行管理。

⑷ 分析性能测试结果,编写测试报告,性能测试人员与开发人员一起来解决性能问题,提供系统优化方案。

2.7 测试用例设计

⑴ 基于场景的测试用例设计。

① 单业务功能场景:运行测试期间,所有虚拟用户只执行同一种业务功能的某个操作。

② 混合业务功能场景:运行测试期间,部分虚拟用户执行某种业务的某个环节操作,部分虚拟用户执行该业务功能的其他环节。或者部分虚拟用户执行某种业务功能,部分虚拟用户执行其他业务功能。

⑵ 事务定义。根据合理的定义事务,方便分析系统瓶颈,尤其在混合业务功能场景测试中。比如,购买商品,可以把下订单定义为一个事务,把支付也定义为一个事务。

⑶ 场景监控对象。针对每条用例,明确可能的压力点,比如数据库、Web服务器等。同时需要监控不同的对象,比如tps,耗时,CPU,内存,I/O等。

2.8 测试策略

⑴ 先做混合业务功能场景的测试,然后做单业务功能场景的测试。

⑵ 在进行性能测试的过程中,常规的测试次序为负载测试、压力测试、稳定性测试、 强度测试[4]。

⑶ 逐步加压。例如前3分钟,测试15个用户,接着每隔3分钟,增加15个用户,以此类推。不仅比较真实的模拟现实环境,而且在性能指标比较模糊且不知道服务器处理能力的情况下,可以确定出一个大致基准,通过分析可以能得出服务器大致处理能力,供后续测试参考。

⑷ 单点并发。如使用集合点,单独针对某个环节的并发测试,通常是针对某个环节的性能调优时使用。

2.9 测试执行

⑴ 创建测试自然环境。在进行测试用例以后,就逐渐构建测试环境。创建测试环境包含硬件配置、系统软件环境的构建,系统配置主要参数的调节等内容[5]。

⑵ 制作测试脚本和情景。制作测试脚本和情景活动主要根据自动化测试专用工具来完成。

⑶ 实行测试和结果记录。在自动化测试专用工具的协助下,执行测试,获取相关性能测试参数。

2.10 性能测试分析

性能测试分析用于分析测试结果,根据结果给出测试结论。常用的分析方法如下。

⑴ 不同的测试环境下,分析硬件设备的性能指标与预期的性能指标,确定是否达到了我们需要的结果。针对没有达到预期的指标,分析具体的瓶颈点,系统性能拐点,系统在可接受的性能指标下最大的处理能力,系统在不同配置下的性能表。

⑵ 不同的测试环境下,分析应用服务器、数据库服务器、中間件等组件的性能指标。在性能测试执行过程中,可能会发现某些功能上的不足或存在的缺陷,根据确定的问题进行具体详细的分析出现问题的原因,分析需要优化的地方。

3 性能测试实践

3.1 性能测试工具

JMeter是一个开源的自动化性能测试工具,主要用于测试B/S架构的系统性能。本次采用jmeter作为测试工具,通过jmeter代理服务器录制脚本生成http请求脚本,并由http协议通过get方式发送访问请求,收集服务器吞吐能力、响应时间等性能指标的情况。

3.2 测试场景设计

被测的商业网站系统采用B/S架构,测试页面是购物的抢购场景。抢购活动时会有优惠券产生,客户拿到优惠券后才能参加抢购。首先客户不停的刷抢购活动,一直刷出一个正在进行有优惠券的抢购活动,然后马上请求使用优惠券。无论是否成功,客户会稍后查询已经拥有的优惠券是否已经出现在账号里。

假设测试场景为200客户,每隔一秒启动一个新客户;系统每隔10秒发出一个抢购活动,一共发布160次,每个抢购活动包含50张优惠券,即一共投放8000张优惠券。整个测试持续半个小时。

3.3 测试结果分析

⑴ 吞吐能力

从图1可以看到查询活跃的抢购活动事务处理量最高,稳定在4000左右。其他因为业务比例的原因较低,去掉查询活跃的抢购活动事务后如图2。

拼单和优惠券查询之间的差值是由于存在抢购失败造成的,测试所设置用户行为场景是无论拼单成功与否都会进行一次优惠券查询。

⑵ 响应时间

根据测试结果,平时响应时间和事务处理时间如图3、图4。

在测试过程中,70%的事务处理时间都是在15ms以内,整体平均响应时间处于50ms内。

3.4 结果分析

依据测试过程中对于测试资源的观察,Web服务器CPU使用率低于20%,其他资源使用率很低,服务器表现出良好的性能,系统的吞吐能力和响应时间基本满足需求。

3.5 优化方案

根据测试的结果的分析,可以适当对Web系统做出一些优化调整。

⑴ 调整网页布局,合理使用框架集框架页。

⑵ 删除代码中所有不相关的页面元素,以及不影响页面显示和功能的字符集。

⑶ 删除不必要的框架文件。

⑷ 减少代码中对数据库的访问次数,优化查询逻辑。

3.6 测试小结

使用JMeter可以灵活有效地模拟多用户并发场景,实现Web性能测试,准确统计响应时间、吞吐量、错误率等性能指标,为分析系统性能和系统调优提供了参考。由于测试环境与生产环境存在差异,网络环境复杂,根据JMeter的性能测试结果,系统开发人员需要进一步探索,找出系统性能缺陷。

4 结束语

Web性能测试是软件测试的重要环节,提高系统性能以及解决系统在实际运行中出现的问题,是性能测试的根本目标。在性能测试过程中,按照实际性能测试需求为准则,设计合理的性能测试场景,尽量模拟用户的实际行为,使测试用例更接近用户实际使用情况,才能提高性能测试的效率。在充分了解了性能测试目标的情况下,制定更加合理的性能测试方案,监控性能测试流程,做出更加充分的软件测试,才能找出瓶颈,为软件调优提供依据。

参考文献(References):

[1] 黄智,宋杨.在ASP.NET中实现三层B/S结构开发探索[J].科技信息(学术研究),2008.30:225-228

[2] 唐涛.性能测试在电力信息管理系统中的应用[J].计算机光盘软件与应用,2012.15(16):26-27

[3] 陳佐,张怀相,方景龙.嵌入式软件自动化测试技术[J].计算机工程与设计,2018.39(10):3125-3131

[4] 刘红.基于Web软件的性能测试研究[C].中国教育发展战略学会教育教学创新专业委员会.2019全国教育教学创新与发展高端论坛论文集(卷六).中国教育发展战略学会教育教学创新专业委员会:中国教育发展战略学会教育教学创新专业委员会,2019:70-71

[5] 张秋凤.Web应用系统性能测试研究与实践[J].中国新通信,2016.18(14):117-118

猜你喜欢

性能测试软件测试
基于OBE的软件测试课程教学改革探索
航天软件测试模型构建与应用
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
Hadoop性能测试自动化研究
关于Java软件的性能测试分析
车联网专用短程通信技术
黄麻、洋麻纤维性能研究
智能电能表软件测试技术概述
《软件测试》课程教学策略研究