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

来源 :计算机时代 | 被引量 : 0次 | 上传用户:zhangqi1234
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要: 为保证网络服务质量,对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
其他文献
根据不同的放牧方式有多种畜牧业管理模式,文章通过研究和改进图像识别模型来提高畜牧业动物图像检测技术及畜牧业管理水平。选择YOLOv3-Darknet53模型作为对象进行研究和改进,通过k-means++算法重新进行聚类分析,提高YOLOv3-Darknet53模型对畜牧业动物图像目标检测的检测精度。实验表明,改进模型对畜牧业动物图像目标检测的精度达到86.179%。F特征值在yak上提高了1%,S
摘要: 当前网络中广泛使用的交互式密钥交换协议,如SSL协议和TLS协议,由于密钥建立过程的通信量较大,不适合物联网中传感器等资源有限的轻型网络设备使用,因此提出一种基于格的非交互式密钥交换协议。文章基于格理论的环上带误差学习困难性问题,使用Freire等人给出的非交互式密钥交换协议形式化定义和安全模型对协议的安全性进行分析,通过攻击者与挑战者之间的博弈证明了协议的安全性。该协议具有抗量子攻击安全
摘要: 多数传统的推荐算法在追求准确度时,忽略了多样性也是衡量推荐效果不可或缺的指标之一。而一味地提升多样性又势必会造成准确度的极大损失。由此提出依据用户兴趣度和兴趣变化度,在计算出用户兴趣值的基础上,分析不同用户的兴趣偏好情况。再将用户的长期与短期兴趣相结合进行推荐,保障个性化的同时确定用户的多样化程度,生成最终的推荐列表,很好地平衡了推荐结果的准确度与和多样性。  关键词: 长短期兴趣; 准确
为了让学生的学习、生活更加智能化,提高教学管理效率,同时建立一个更加安全的校园环境,采用卷积神经网络实现智慧校园人脸识别。文章对卷积神经网络的卷积层、池化层、全连接层和输出层的原理及实现进行了阐述,训练了olivettifaces人脸数据库小样本数据集。实验结果表明,模型的误差率降低到5%以下。用数据库中注册的人脸图像与摄像头实时获取的人脸图像进行匹配时,效果良好,能满足设计需求。
摘要: 在数据库系统及应用教学中,传统教学采用数学公式对关系模型数据表范式设计进行定义和描述,使多数学生理解得不是很透彻。就此问题,文章通过实例探讨了关系数据库SQL Server数据表范式设计的教学,使得教师可以简单教学,学生易于理解,对于数据库设计能力有进一步的提高,对教学质量有进一步的提升。  关键词: 数据表; 范式; 教学实例; 设计能力  中图分类号:TP393.09 文献标识
齿科三维扫描仪是数字化齿科修复的重要组成部分,在种植、正畸、嵌体等齿科修复中发挥着数据获取的关键作用。为了实现三维口腔模型的高速采集,提出了一种基于傅里叶变换轮廓测量法的三维重建算法的牙科三维扫描系统。投射光栅图形到牙齿印模上,采集变形光栅图像,对相机捕获的变形条纹图像信息进行预处理,相位解包裹、三维点云重构和获取三维模型,实现了傅里叶变换轮廓术的高速齿科三维扫描仪。经测试,该扫描仪可在9秒内完成
摘要: 在针对长非编码RNA(lncRNA)进行CRISPR/Cas9基因编辑时,从头设计有效singleguide RNA(sgRNA)并非易事,因此收集了已经发表文章中经实验验证过的sgRNA信息,并基于MTV模式的Django框架,开发出CRISPRlnc网站数据库。该数据库的开发将为科研工作者针对lncRNA进行CRISPR/Cas9基因编辑提供有效的辅助,并促进lncRNA的功能研究和C
摘要: 规划识别是一种属于心理学和人工智能的交叉学科,能从观察到的某一智能体的动作出发,推导出该智能体规划的过程。将该方法运用到股市中去,通过分析数据并且结合投资者的心理,使投资者做出合理的融资行为。文章提出了由三层模型组成的基于规划识别的融资行为分析算法,在第一层中引入马尔科夫链去预测智能体的行为概率,在第二层中构建规划识别图,进一步预测行为概率,在第三层对智能体的行为进行规划。该算法通过实例进
摘要: 针对高校大数据课程教学面临的困难,分析当前教学方式存在的问题,提出以课赛融合的方式推进课程教学改革。通过建立学科竞赛习题库、竞赛知识图谱,优化教学内容,以及教师参与竞赛指导、竞赛参与课程考核等方式,有效地激发学生的学习兴趣,提高其实践动手能力,明显地改善了教学效果。  关键词: 大数据; 课赛融合; 学科竞赛; 教学改革  中图分类号:G642 文献标识码:A 文章编号:1006-8
摘要: 藏文多极情感分类方法是自然语言处理研究中识别用户对某件事或话题的主观情感倾向性识别的研究课题之一。文章分析了藏文多极情感分类方法的特点,对采集的藏文情感语料进行整理校对;提取相关特征,建立情感语料库和情感分类识别模型;再通过大量的实验找出存在的不足,并进行完善,以此提高藏文多极情感数据的准确率。实验表明,优化后的藏文多极情感分类的识别准确率达到84.5%。  关键词: 情感分类; LSTM