LoadRunner测试工具教学存在问题及解决方法

2012-12-01 06:21徐芳
职业教育研究 2012年1期
关键词:测试工具脚本软件测试

徐芳

(浙江机电职业技术学院 浙江 杭州 310053)

LoadRunner测试工具教学存在问题及解决方法

徐芳

(浙江机电职业技术学院 浙江 杭州 310053)

LoadRunner作为业内主流的负载测试工具在软件测试教学中被大量采用,同时在实际的项目性能测试中也被广泛使用。本文主要对高职院校现有软件自动化测试工具教学中存在的一些问题进行分析,并有针对性地提出了可操作的解决方案,以自动化测试工具为载体,可以有效开展性能测试教学。

LoadRunner;测试工具;问题;解决方法

随着我国信息产业的发展,产品的质量控制和质量管理将成为企业生存与发展的核心。一方面,企业对高质量的测试人才需求量逐步增加;另一方面,软件测试人才相对缺乏。近几年高职院校针对市场对人才的实际需要开设了软件测试相关课程,加大了对软件测试人才的培养力度。

在高职院校软件测试课程教学中,一般主要侧重三个方面:软件测试的基本概念和流程、常用的利用黑盒白盒等方法进行测试用例设计、一些主流测试工具的使用。而目前随着网络应用系统的广泛应用,软件系统对性能的要求越来越高,因此在很多实际项目应用中,性能测试被摆到越来越重要的位置,而性能测试比较功能等测试对测试人员有更高的要求。在让学生更好地掌握性能测试方法并在实际项目中灵活运用这方面,软件测试课程教学相对比较薄弱。

Loadrunner自动化测试工具教学目前存在的问题

由于在实际的软件测试中性能测试占据越来越重要的地位,因此一般在高职的软件测试教学中都会涉及性能测试,目前高职软件测试教学中多通过让学生操作自动化测试工具来开展性能测试,如常用的HP公司的LoadRunner,它是HP公司的一款预测系统行为和性能的工业标准级负载测试工具,它能通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。目前,大部分院校的教学重点放在教学生如何使用操作工具,而笔者通过几年的教学实践发现存在以下一些问题:(1)学生能利用工具进行功能操作,但对测试脚本不理解,无法进行基本的修改,以适应测试需求;(2)学生知道一些基本概念,但不能在实际测试中合理运用;(3)调试能力弱,不能较好地解决测试中遇到的基本问题;(4)缺乏对性能测试的总体和直观的认识,学生学习起来存在困难。

在实际教学中如何把握教学重点和难点,让学生真正对性能测试有所认识,并能进行实际应用,而不是单纯学习工具的操作方法,这是教学中亟须解决的主要问题。

解决方案及其实施

LoadRunner性能测试操作流程如图1所示。LoadRunner软件提供工具录制并生成测试脚本,测试人员通过设置并运行场景,最后通过收集的数据评价系统性能。在教学中一般会让学生学习这三个部分的操作,例如通过VGen录制并编辑脚本,利用Controller按照要求设置不同运行场景,最后通过Analysis生成并分析测试结果。整个流程学生都能够通过鼠标点击操作完成,但这对于性能测试是远远不够的,在教学中需要在以下几方面进行重点强化。

(一)理解基本函数,读懂测试脚本

LoadRunner能够通过录制的方式自动生成测试脚本,因此学生感觉比较简单。此外,编辑脚本中插入事务、集合点,参数化输入的操作也都可通过鼠标点击来一步步完成,但面对一段段自动生成的测试脚本,应该在哪里定义事务?集合点设在哪里比较合适?哪些数据需要参数化?学生往往无所适从。

图1 LoadRunner性能测试流程图

因此,读懂测试脚本非常重要,面对LoadRunner大量的函数,要帮助学生理解基本常用函数的用法,在基于B/S结构的系统测试中主要包括以下函数,在教学中要求学生重点掌握这些函数的用法,理解函数结构。

1.web_url()

2.web_link()

3.web_submit_form()

4.web_submit_data()

5.web_add_cookie()

6.lr_think_time()

7.web_find()

8.web_reg_fing()

9.web_reg_save_param()

(二)整合软件功能,设计教学案例

在LoadRunner软件教学中一些基本的概念和设置是学生必须掌握的,主要包括事务及事务的响应时间、集合点、数据参数化、检查点和关联设置等,通过鼠标点击能够快速地进行事务、集合点等设置,但如何让学生理解这些功能的灵活应用是教学中的重点和难点。通过教学实践,采取场景教学法可以有效帮助学生快速理解这些功能的实际应用。例如,在检查点功能的教学中,我们设计了7个教学案例,把软件的基本功能进行了整合,让学生充分理解这些功能的实际应用。

通过案例一(见图2)的教学和实践,学生能够发现问题:回放脚本时用了与以前一样的注册信息,为何没有提示任何错误,显示脚本运行“PASS”呢?该场景运行可让学生学习VuGen怎样区分脚本是否回放正确。一般情况下脚本回放错误都是页面无法找到,而只要页面返回了,VuGen都不会提示任何错误,仍会显示为PASS状态,这并不能说明脚本完成了相关操作,而只能说明服务器端正确接收到了客户端的请求并且返回了相应的数据,但并不代表操作在逻辑上是正确的。通过该测试场景我们了解到VuGen不会判断注册失败的错误,这就需要通过增加检查点来判断操作是否真正成功。

通过案例二(见图3)的教学和实践,学生能够理解通过检查点函数的执行,测试脚本能够自动检测返回页面上的信息,并给出检测结果。

通过案例三(见图4)的教学和实践,学生能够理解参数化在实际测试中的应用,通过参数化选取不同的用户注册信息,测试脚本能顺利通过检查点,自动完成多用户注册。

案例四(见图5)和案例五(见图6)需要进行对比教学,主要帮助学生理解在真实的项目测试中如何获得正确的事务响应时间。

案例六(见图7)和案例七(见图8)主要让学生理解关联的作用已经应用场合及方法。

图2 案例一

图3 案例二

图4 案例三

图5 案例四

图6 案例五

图7 案例六

图8 案例七

在进行性能测试中经常需要度量用户完成一个操作需要多少时间,而通过案例四我们能够知道测试脚本执行并没有真正通过,此时事务时间的统计存在错误,并不是真实用户注册的事务响应时间。案例五设计的目的在于让学生理解实际测试中在绝大多数情况下对于事务都需要采用手工事务的方式来确保事务的正确性和事务时间的有效性。

同样,在Controller操作的教学中也可以设计几个不同的测试场景,把需要讲授的内容进行整合,让学生在实际应用中学习软件的主要功能。

场景一:手工场景设置方式,两组虚拟用户,运行在本地负载机,负载逐渐加载,持续一段时间后虚拟用户逐渐减压。该场景点击执行后立即执行。

场景二:手工场景设置方式,两组虚拟用户,一组在本地负载机运行,负载同时加压,脚本运行完结束;一组在远程负载机运行,负载逐渐增加,持续一段时间后负载同时停止。该场景点击执行后过一段时间执行。

场景三:手工场景百分比模式设置方式,两组虚拟用户,运行在本地负载机,逐步增加负载,持续一段时间后逐步降低负载,再次逐步增加负载,持续一段时间后,同时停止所有负载。该场景设定为某年某月具体时间开始执行。

场景四:创建目标场景模式,选取虚拟用户数目标设定。

通过以上四个场景的教学,让学生在应用中学习虚拟用户组、负载机、用户行为、测试场景等概念及操作设置。

(三)利用四步调试,明确问题定位

学生在开始学习LoadRunner时经常会遇到录制的脚本在试用中出现问题,在教学中可对脚本的运行设计以下四个步骤,帮助学生快速定位脚本问题:

(1)确认在VU里SUSI(单用户单循环次数single user& single iteration);

(2)确认在VU里SUMI(单用户多循环次数single user& multi iteration);

(3)确认在controller中MUSI(多用户单循环次数multi user&single iteration);

(4)确认在controller中MUMI(多用户多循环次数 multi user&multi iteration)。

第一步骤是验证脚本编写正确与否,尤其是学生进行了事务、集合点等操作后,脚本经常容易存在错误;第二步骤可以验证数据池是否正常运作;第三步骤验证并发功能;第四步骤是最终目的,验证软件系统的性能。

软件工程中对软件开发的种种行为都要制定一个proccess(过程),性能测试也是如此,按照过程来调试脚本和场景,能及早发现问题和定位问题。

(四)搭建测试环境,理解性能测试

在进行LoadRunner测试软件教学中,测试环境的搭建对学生理解性能测试非常重要。

目前应用比较广泛的网络客户/服务器软件(也称为B/S结构)的基本组成部分大致相同。最简单的网络软件构成(见图9),它的用户端只是一个浏览器,服务器则只有网络服务器。

图9 网络软件构成图

现在广泛使用的商用网络软件中最常见的模型就是所谓三层体系结构,如图10所示。

针对网络软件在进行性能测试时,测试的入口是客户端,但关注的系统性能与网络环境、服务器等密切相关,因为在利用LoadRunner进行性能测试时,必须要搭建测试环境,让学生更好地理解测试结果的实际意义。在教学中可以按照图11所示组建测试环境,每组学生利用二台机器作为负载机,其中一台同时作为控制器,让学生理解单台负载机有一定的负载上线,服务器可以根据实际设备情况采用一台或二台,把应用服务器与数据服务器进行分离。此外,在准备测试环境时,需要把原始环境进行备份,以便恢复,方便教学。

图10 网络软件的三层体系结构图

图11 测试环境图

只有在一定的测试环境下,LoadRunner提供的测试结果数据才有相应的意义,一方面,通过负载的变化,可以帮助学生理解LoadRunner收集的性能测试数据,如每秒事务数、每秒点击数、事务平均响应时间、带宽使用等情况。另一方面,通过搭建的环境,我们可以方便地监控服务器的各项性能指标,如服务器CPU、内存使用率、各个进程所使用的相关资源信息等,并在不同负载下对各个指标进行跟踪对比,使学生对性能测试有直观的认识。

(五)采用经验公式,设计负载压力

在LoadRunner软件的教学中难点不在于工具的使用,而在于测试场景中的数据如何产生,如测试中并发用户数为什么设为120,而不是300?如果对此没有一定的认识,仅仅学习工具的操作使用,并不能很好地在实际项目中开展性能测试,因此在教学中需要加入相应的易理解可操作的内容。在教学中可采用经验公式,让学生有可操作的依据,也便于理解。例如,在设计并发测试时可以利用如下公式:

其中C:平均并发用户数

n:login session的数量

L:login session的平均长度

T:考察的时间段长度

在教学中通过利用这些经验公式,学生在实际场景设计中就有了可实施的具体方法,使性能测试具有实际意义。

[1]于涌.精通软件性能测试与LoadRunner实战[M].北京:人民邮电出版社,2010.

[2]赵艳玲.软件开发中的需求获取[J].现代电子技术,2007,(11):580-581.

[3]柳纯录,黄子河,陈渌萍.软件评测师教程[M].北京:清华大学出版社,2005.

徐芳(1970—),女,上海市人,硕士,浙江机电职业技术学院高级工程师,主要从事计算机工程的教学与研究。

G712

A

1672-5727(2012)01-0104-03

猜你喜欢
测试工具脚本软件测试
酒驾
安奇奇与小cool 龙(第二回)
基于OBE的软件测试课程教学改革探索
航天软件测试模型构建与应用
EXCEL和VBA实现软件测试记录管理
快乐假期
基于移动平台APP测试
小编的新年愿望
手车式真空断路器回路电阻测试电流线接头研究
软件测试工程化模型及应用研究