基于Load Runner的软件负载与压力测试实验教学改革

2019-11-30 04:55赵卫东王树强
计算机教育 2019年11期
关键词:性能指标性能实验教学

赵卫东,王树强,张 峰

(山东科技大学 计算机科学与工程学院,山东 青岛 266000)

0 引言

负载与压力测试是指在一定的约束条件下,检测系统所能承受的并发用户量、运行时间、数据量等参数,以确定系统所能承受的最大负载和压力,发现影响系统性能的缺陷。负载与压力测试需要模拟系统真实的运行环境并借助测试工具才能完成。业界已经出现了很多成熟的自动化测试工具,每一种工具都有其自身的特点。负载与压力测试是软件测试课程教学的重点和难点之一,实践型和应用性很强[1],涉及较多容易混淆的抽象概念,必须经过有效的实践教学环节,学生才能真正理解和掌握负载与压力测试相关知识和技能。

目前,很多高校只是让学生使用一些过时或者不实用的工具,对一些小型的程序进行简单的负载与压力测试实验,实践教学缺乏合理设计,实验内容简单陈旧,被测系统没有实际意义[2],对测试工具使用的深度和广度不够,实验教学方法落后,导致学生对负载与压力测试实践教学不感兴趣,重视程度不够,积极性不高,教学效果较差。

1 负载与压力测试概述

软件性能测试是指利用测试工具模拟多种正常或异常负载条件来对系统的响应时间、吞吐量等性能指标进行测试,目的是验证系统的性能是否能满足用户需求,发现影响性能的系统缺陷。性能测试包括负载与压力测试、强度测试、并发测试、大数据量测试、配置测试和可靠性测试等。

负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的前提下,系统所能承受的最大负载量。负载测试不关注系统稳定性,也就是说不关注系统长时间运行的情况,只是得到不同负载下相关性能指标,根据这些结果作出决策并得出正确的结论[3]。实际测试中,一般从比较小的负载开始,通过逐渐增加负载,观察不同负载下应用程序的响应时间、所耗资源等性能指标的变化,直到超时或关键资源耗尽,从而获得系统所能承受的最大负载量。

压力测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,并以此获得系统能提供的最大服务级别的测试。其目标是,测试在一定的负载下,系统长时间运行的稳定性。但是这个负载不一定是应用系统本身造成的,比如利用脚本或工具事先吃掉服务器的一部分CPU、内存或带宽等,创造出负载环境来测试被测应用系统在此环境下的事物处理能力、响应时间等指标。压力测试尤其关注大业务量情况下长时间运行系统性能的变化,例如系统是否反应变慢、是否会内存泄漏导致系统逐渐崩溃、是否能自行恢复等,它包括两种情况。

(1)稳定性压力测试:在选定的压力值下,长时间持续运行。通过这类压力测试,可以考查各项性能指标是否在指定范围内,有无内存泄漏、有无功能性故障等。

(2)破坏性压力测试:在稳定性压力测试中可能会出现一些问题,如系统性能明显降低,但很难暴露出其真实的原因。通过破坏性不断加压的手段,往往能快速复现问题。

2 测试工具选择

由于手工测试存在“机器设备和可用人数有限,测试人员不能统一同步”等问题,采用自动化测试工具进行负载与压力测试是必然的选择。目前,可供选择的测试工具有很多,通过对比分析Load Runner、JMeter与Gatling 3种流行的自动化测试工具(见表1),可以看出,尽管Load Runner不是开源产品,价格昂贵,灵活性不够,但其具有的功能最全面,支持广泛的协议和技术,是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能[4]。其有4个组件:虚拟用户发生器(VuGen)、压力调度与监控器(Controller)、负载压力产生器(Load Generator)、结果分析器(Analysis)。

综上所述,Load Runner足以适应各种情况下的测试需求,能最大限度地缩短测试时间、节约测试资源、优化性能和加速应用系统的发布周期,是执行负载与压力测试的强有力工具,也是学生进行负载与压力测试实验较好的工具。

3 实验教学方案设计

3.1 实验内容设计

基于 Load Runner 的负载压力测试一般要经过规划测试、创建脚本、定义场景、执行场景、分析结果5个阶段。负载压力测试实验教学的目的是让学生理解响应时间、吞吐量等主要性能指标,掌握 Load Runner 的基础操作和负载压力测试的基本流程,学会利用Load Runner对实际Web系统进行负载压力测试。为此,以常用的经典系统Web Tours和自主研发的“设备巡检管理系统”作为测试对象,采用循序渐进的方式使学生逐步接触真正的测试实践[6],设计了如下3次实验。

实验一:Load Runner基础实验。

实验目的:学习负载与压力测试基本概念、常见性能指标和Load Runner的测试流程。

实验内容:①教师讲解负载与压力测试相关概念及平均事务响应时间、吞吐量、并发用户量、资源利用率等性能指标;②教师讲解Web Tours系统及其性能要求;③以Web Tours为测试对象,教师演示Load Runner的虚拟用户发生器、压力调度与监控器、负载压力产生器、结果分析器等四大组件的功能与操作;④学生完成Load Runner安装,利用虚拟用户发生器录制Web Tours系统用户登录、查找航班、选择航班、预订机票、查看航班路线并注销的操作,回放脚本验证能否正常运行;⑤利用虚拟用户发生器模拟5个虚拟用户,在此场景下,利用压力调度与监控器执行所录脚本;⑥控制负载压力产生器将虚拟用户数由5个逐步增加到10个;⑦学生利用结果分析器查看最大运行用户数、总吞吐量、平均吞吐量和点击次数的统计信息。

表1 测试自动化工具对比

实验二:脚本编写与测试环境配置技术实验。

实验目的:掌握插入事务、参数化脚本等增强脚本的方法,掌握配置测试环境的方法。

实验内容:①教师讲解事务、集合点和思考时间等概念。②学生使用实验一录制的脚本,找到脚本中的用户登录、查找航班、选择航班、预订机票、查看航班路线和注销操作,在每个操作的开始位置和结束位置插入起始事务标志和结束事务标志,每个事务都要定义名称;将用户名、密码和座位选项进行参数化,模拟多个用户的登录订票行为;在预订机票操作后面插入集合点函数,使10个用户到达集合点时,并发运行后面的脚本。③将增强的脚本添加到压力调度与监控器中创建3个场景,分别设置好虚拟用户的活动和行为,包括重复一系列操作的次数以及各步骤之间的思考时间等。④第一个场景进行负载测试,学生制定不同负载得出相关性能指标;第二个场景进行稳定性压力测试,学生控制负载压力产生器配置加压方式,即设置每隔一定时间启动的用户数和每个用户持续运行的时间,将这种负载保持长时间运行;第三个场景进行破坏性压力测试,通过不断增加每秒点击次数,测试服务器的性能瓶颈;⑤执行负载压力测试场景;⑥学生在相关图中查看系统运行用户数、事务响应时间和每秒点击次数的变化情况,分析系统的稳定性,评估系统性能。

实验三:负载与压力测试综合实验。

实验目的:综合运用Load Runner工具完成对实际Web系统的负载与压力测试,提高项目实践能力。

实验内容:①教师讲解如何规划负载与压力测试,分析测试需求,制定测试方案;②教师讲解“设备巡检管理系统”和性能需求;③学生根据系统概述,分析测试需求,录制、回放、编写和调试脚本,配置真实的测试环境,收集实验数据;④对数据进行分析,预见系统的负载承受力,评估系统性能,找出系统瓶颈。

3.2 实验教学方法改革

针对传统实验教学存在的“理论和实践教学脱节”“学生缺乏主动性”“自主分析和解决问题的能力差”等突出问题,可以采用项目驱动、反转课堂、理论和实验相结合等先进教学理念,从以下几个方面进行实验教学方法的改革。

1)注重实验和理论教学相结合。

将负载与压力测试的有关理论教学与实验统一安排,采用边学理论边做实验的方法,将理论知识和实践环节高度结合,相互验证。每一次实验课都包括理论讲解、实验演示、上机实验3方面。教师讲解能起到先导作用,即让学生弄清楚实验基础理论,学生通过实际上机实验正确地使用测试技术,进而对理论加深理解,变成他们真正掌握的知识。学生边学边做,看似减缓了教学进度,实际是在“做中学、学中做”,真正提高了课堂教学效率,学生的学习兴趣和主动性提高了,对所学内容理解的更加具体和深入,自学能力与应用知识和技能解决实际工程问题的能力得以加强。

2)引入项目驱动的实验教学模式。

采用自主开发的实际系统“设备巡检管理系统”作为被测系统。教师对系统进行剪裁,整理出与测试相关的知识点,首先讲解项目开发的背景、性能要求及其性能测试的企业流程;对学生进行分组,由组长负责,组员共同讨论确定测试计划和设计测试方案,小组成员执行测试,发现问题,并给出解决问题的技术方案。通过具体的项目实战,学生尽快地熟悉软件测试工作过程,能够对完整的项目进行测试[7],引导激发学生的兴趣,增强学生的实际项目经验,深刻理解所学专业知识和技能的实际应用价值,提前体验从一名在校学生向IT工程师的角色转变。

3)反转课堂,激发学生学习主动性。

建立信息平台,将学生在实验中遇到的问题分类记录到平台上,以便学生能及时查找问题答案,对于平台中没有记录的问题,鼓励学生课堂讨论,让课堂成为研究和解决问题的场所,真正实现反转课堂。只有给学生创造自主发现和解决问题的氛围和环境,才能使反转课堂不只是一句口号。设置积分制,鼓励学生补充QA库,对于优秀的问题和解决方案,可以获得较高的积分。

4)改革实验教学考核方式。

从4个方面对学生进行综合考核。第一,考核学生实验准备的情况,教师对学生遇到的问题进行指导,评价学生对实验的认识是否充分。第二,考核学生课堂表现以及实验采用的方法,教师检查学生实验过程,判断学生是否理解涉及的知识点,能否对实验方法进行优化和改进。第三,采用答辩的方式考核学生实验结果,教师点评结果,对学生完成实验的情况作出指导及建议。第四,考核学生撰写的实验报告,教师让学生定期上交实验报告,评价学生对课程理论和项目实践的掌握情况。根据以上学生各个实验环节的表现,按比例对实验成绩进行综合评价,以表扬和鼓励在实验中表现优秀的学生,指出实验过程中存在的各种不足,真正形成崇尚独立自主和积极主动的实验教学氛围。

4 实验教学效果总结与分析

从2014年开始,面向我校软件工程专业本科三年级3个班的学生,持续对所设计的负载与压力测试实验教学方案进行了4年的应用。实际应用效果表明,学生的实验课成绩有了较大幅度的提升,见表2,优秀率从10%提升到20%,不及格率从15%下降到5%;学生学习积极性和主动性显著改善,见表3,学生参与课堂讨论的比例从24%提升到83%,学生补充QA库的比例从16.8%提升到39.3%。

表2 学生实验成绩

表3 学生参与课堂讨论和补充QA库的比例

5 结语

选用流行的企业级软件性能测试工具Load Runner,以真实的Web系统为测试对象,模拟软件负载与压力测试的实际流程,详细设计了负载与压力测试的实验内容。以激发学生的学习兴趣和主动性为目的,采用实验和理论教学相结合、反转课堂等先进的教学方法,从多个方面改革了实验教学方法。

通过4年不间断的实际教学应用,经过教学数据对比分析,参与课堂讨论的学生比例、补充QA库的学生比例得到了很大提高,这表明学生实践的积极性和主动性有了显著的改观,取得了良好的教学效果,达到了提高学生学习兴趣和实际动手能力的目标,对相关计算机课程实践教学的改革具有参考和借鉴价值。

猜你喜欢
性能指标性能实验教学
夏季五招提高种鹅繁殖性能
关于基础教育阶段实验教学的几点看法
保暖袜透湿性能测定的不确定度分析
小议初中化学演示实验教学
对初中化学实验教学的认识和体会
提供将近80 Gbps的带宽性能 DisplayPort 2.0正式发布
自动控制系统的优劣评价分析
基于Ganglia和Nagios的云计算平台智能监控系统
Al-Se双元置换的基于LGPS的thio-LISICON的制备与性能表征
基础医学实验教学中心简介