面向
ECShop
系统
性能
测试
结果
分析
第 32 卷第 1 期河南教育学院学报(自然科学版)Vol.32No.12023 年 3 月Journal of Henan Institute of Education(Natural Science Edition)Mar.2023收稿日期:2022-08-22基金项目:河南省 2021 年度本科高校虚拟仿真实验教学项目;河南省教育科学规划 2022 年度一般课题(2022YB0335)作者简介:张晶(1969),女,河南信阳人,河南财政金融学院软件学院教授,主要研究方向为计算机应用与教育。doi:10.3969/j.issn.1007-0834.2023.01.007面向 ECShop 系统的性能测试结果分析张晶,田地(河南财政金融学院 软件学院,河南 郑州 450046)摘要:性能测试在软件的质量保证中起着非常重要的作用。从性能测试需求出发,分析面向 ECShop 系统的性能测试方法、性能测试指标、测试环境配置、录制脚本、脚本增强等内容,采用性能测试工具 JMeter 进行了面向ECShop 系统的性能测试。测试结果表明,开展性能测试有助于发现系统中存在的性能缺陷,为优化系统提供依据。关键词:性能测试;压力测试;并发数;响应时间;ECShop 系统中图分类号:TP302文献标志码:A文章编号:1007-0834(2023)01-0036-040引言ECShop 是开源商城系统,适合企业及个人快速构建个性化网上商店。系统是基于 PHP 语言及 MySQL数据库的跨平台程序。为使 ECShop 系统上线后能够稳定运行,一般在功能测试完成后,根据用户需求开展性能测试工作。因此,在模拟生产环境的情况下,对 ECShop 系统核心业务进行压力测试,发现性能缺陷及系统最佳承受并发用户数,并最终作为 ECShop 系统上线的依据。1性能测试需求在进行系统性能测试前,测试人员应清楚地知道系统的性能需求和性能指标1,对系统性能进行量化,如业务响应时间不超过 5 s、业务成功率不低于 98%、硬件资源利用率在合理的范围等。性能指标以量化形式给出后,就可以通过实验获得被测系统的性能指标数据。ECShop 系统的性能测试需求描述如下:1)并发用户数达到 100 时,用户登录系统的平均响应时间不超过 3 s;2)并发用户数为 100 时,每一个关键操作,如“登录”“商品搜索”“加入购物车”“提交订单”,其平均响应时间在用户接受的范围内,系统运行正常;3)若系统能够支持的最大并发用户数不是 100 时,测试最大到多大数值时,系统将不能支持。此次性能测试仅按照表 1 所示的性能测试要求实施性能测试。表 1测试需求Tab.1Test requirements测试项响应时间/s业务成功率/%并发用户数/个CPU 利用率/%内存利用率/%登录51001008080在性能测试活动实施过程中,测试人员需收集系统登录业务的响应时间、访问成功率、并发数、CPU 利用率、内存利用率等相关指标的监测数据,与表 1 的量化指标比对即可。满足相关指标,则测试通过,若未满足,则需要进行分析定位,进行调优与回归测试,直至达到性能测试需求。2性能测试指标1)响应时间:一般指客户端发出请求到接收到服务器端的响应数据所消耗的时间1。系统响应时间评判原则:响应时间小于 2 s,判为优秀,用户对系统感觉很好;响应时间在25)s 之间,判为良好,用户对系统感觉一般;响应时间在510)s 之间,判为及格,用户对系统勉强接受;响应时间超过 10 s,判断为不及格,用第 1 期张晶,等:面向 ECShop 系统的性能测试结果分析37 户无法接受系统的响应速度。2)错误率:错误请求数/请求总数100%。例如,测试银行营业系统的并发处理性能,在某高峰期(1 h)里,要求能支持 50 000 笔开户业务,其中错误率不高于 2%,也就是需要成功开户 49 000 笔,其他的 1 000 笔可能是超时,或者其他错误导致未能开户成功。3)并发数:并发用户数,是指系统可以同时承载的正常使用系统功能的用户的数量。对于网站,有三个关于用户数的统计数字:注册用户数、在线用户数和同时发送请求的用户数。由于注册用户可能长时间不登录网站,使用注册用户数作为性能指标会造成很大的误差,而在线用户数和同时发送请求的用户数都可以作为性能指标。相比而言,以在线用户数作为性能指标更加直观,以同时发送请求的用户数(并发用户数)作为性能指标更加准确。JMeter 工具,用线程数表示并发用户数2。4)请求数:表示测试中一共发出了多少个请求。例如,模拟 10 个并发用户请求某一个接口,每个用户迭代 10 次,那么请求数为 100。5)吞吐率:单位时间内系统处理用户请求的数量。例如,1 min 内系统可以处理 1 200 次转账交易,则吞吐率为 1 200/60=20(请求次数/s)。吞吐率指标直接体现了软件系统的业务处理能力。6)系统资源耗用:服务器系统各项硬件资源的耗用情况,如 CPU 使用率、内存使用率、网络带宽占用率等。3测试环境测试服务器配置如表 2 所示;测试客户端配置如表 3 所示。表 2服务器配置Tab.2Server configurationCPU英特尔 Core i5-10400 2.90GHz6 核硬件内存金士顿 DDR42 666 MHz 16GB硬盘金士顿 SNVS500G(500GB 固态硬盘)希捷 ST1000DM010-2EP102(1 TB 机械硬盘)操作系统Windows 10 专业版 64 位(Version 21H2/DirectX 12)资源监控软件ServerAgent-2.2.1Web 服务器Apache HTTP Server 2.2软件数据库服务器MySQL-5.5PHP 环境PHP-5.2.10被测系统ECShop V2.7.2IP 地址192.168.0.105注:服务器为 Web 服务器和数据库服务器表 3客户端配置Tab.3Client configurationCPU英特尔 Core i3-3240 3.4GHz 双核硬件内存金士顿 DDR3 1 600MHz 4GB硬盘希捷 ST500DM002-1BD142(500GB 机械硬盘)操作系统Windows 7 旗舰版 32 位 SP1(DirectX 11)Java 环境Oracle JDK 1.8.0_321性能测试工具Apache JMeter-3.1软件JMeter 插件JMeterPlugins-Extras-1.4.0JMeterPlugins-Standard-1.4.0脚本录制程序Badboy V2.2.5数据库客户端软件Navicat for MySQL V10.1.7IP 地址192.168.0.1024测试过程4.1设计测试用例因为性能目标明确,所以,本次实验任务所要求的性能测试是验证测试。对于测试方法,选择负载测试的方法,可以将负载(并发用户数)按阶梯设置,来获取不同负载级别下的性能指标数据3。此次实验将并38 河南教育学院学报(自然科学版)2023 年发用户数分别设置为 10、50、100、150 和 200 个,模拟合法用户登录系统的压力情况,进行 30 min 的连续压力测试,记录系统登录的平均响应时间、错误率等各项性能指标,作为系统在实际使用情况中的性能表现依据。4.2配置测试环境及准备数据配置服务器测试环境,尽可能与实际运行环境一致。按照“ECShop 安装指南”,在服务器端分别安装和配置如表 2 所示的软件。为了真实模拟登录、购买等业务行为,在测试开始前数据库中须存在大量的用户信息及商品信息,而ECShop 系统安装初始仅提供少量的用户账号,这就要求测试人员构造测试数据。例如,构造 1 万条用户记录,用户名形如“U10001”“U10002”密码为“123456”。4.3录制用户登录脚本ECShop 系统用户登录的操作步骤:访问 http:/192.168.0.105/ecshop/;点击“登录”按钮;输入用户名及密码,点击“立即登录”;点击“退出”按钮,退出系统。根据该操作步骤,使用 Badboy 录制用户登录脚本,并将之导出为 JMeter 脚本。4.4脚本增强对于 JMeter 脚本,可从以下几个方面进行设置,用以增强脚本功能。JMeter 工作台如图 1 所示。图 1JMeter 工作台Fig.1JMeter workbench1)对登录用户名进行参数化。2)为线程组添加固定定时器,设置线程延迟时间,设为 900 ms。测试过程中可能因为负载机发送请求太快,服务器无法响应,所以应降低单个线程发送请求的速度。3)为 R3 请求添加响应断言,检验 R3 请求的响应文本包含“登录成功”,若断言失败,则该请求为错误请求。4)为线程组添加“聚合报告”“用表格查看结果”“jp jc-PerfMon Met-rics Collector”等监听器。监听器可以动态监控 JMeter 测试执行的过程及服务器资源使用情况4,实时查看测试结果,还可以将监控结果保存为文件5-7。5)设置线程组的线程数和持续时间。此次实验将依次模拟并发用户数为 10、50、100、150 和 200 时系统的压力情况,所以线程数设置可从 10开始,逐步增加到 200。测试的持续时间设置为 1 800 s。4.5执行测试在执行测试前,先在 DOS 命令行窗口中,切换工作目录到 ServerAgent程序的根目录,执行命令:startAgent.bat-tcp-port 4444然后在 DOS 命令行窗口中启动测试,执行命令:jmeter-n-t 登录测试.jmx-l jmeter-outputresult.jtl-e-o jmeter-outputhtml该命令将把测试结果写入文件(result.jtl),并在 html 目录下创建测试报表。5测试结果分析1)图 2 是 当 并 发 用 户 数 为 100 时 的 测 试 结 果,观 察 R3 请 求,用 户 数 为 160 时 平 均 响 应 时 间 是267.81 ms。R3 请求响应时间最长,测试内容是向服务器提交用户名和密码,服务器执行 SQL 查询。总体(6 个请求)平均响应时间满足性能指标要求。2)图 3、图 4 是当并发用户数分别为 150、200 时服务器 CPU、内存的利用率,可知前者的整体 CPU 利用率处于 45%70%,满足性能指标要求,而后者的整体 CPU 利用率处于 65%90%,不满足性能指标要求。3)登录操作在并发用户数分别为 10、50、100、150 和 200 的性能测试结果如表 4 所示。可以看出,当其他设置不变时,负载增加(从 10 到 200),吞吐率、整体 CPU 利用率也随之提高;当并发用户数为 200 时,CPU利用率不满足性能测试需求,因此,ECShop 系统满足性能需求的系统最佳并发用户数为 150 而不是 200。第 1 期张晶,等:面向 ECShop 系统的性能测试结果分析39 图 2用户数为 100 的测试结果Fig.2Test result of 100 users图 3用户数为 150 时服务器资源利用率Fig.3Server resource usage of 150 users 图 4用户数为 200 时服务器资源利用率Fig.4Server resource usage of 200 users表 4性能测试结果Tab.4Performance test results测试项并发用户数/个运行时间/min平均响应时间/ms请求数/次错误请求数/次吞吐率/请求数s-1整体 CPU利用率/%内存利用率/%103049.5218 720010.4151030503070.4790 350050.21152030登录1003090.81173 500096.4230503015030132.37245 7320136.5545703020030130.09321 1040178.40659030(下转