技术开发 频道

基于场景的性能测试设计

【IT168 技术文章】

    性能测试在测试中往往不被重视,而项目中由于系统性能不合格会给企业带来巨大的损失。基于场景的性能测试设计能避免性能测试的误区。

    很多企业在性能测试工作中存在一些常见误区,其中部分企业选择基于场景的设计性能测试来避免这些误区,因为这样可以大幅度降低执行成本,同时提高性能测试执行效率。

    性能测试常见误区

    请看下面一个性能测试小案例:

    某公司OA产品的新版本即将发布。为了看看系统的性能,决定安排测试工程师A君执行性能测试任务。A君做法如下:

    1.找到一台PC机,CPU主频1G,内存512M,……;

    2.在找到的PC机上搭建了测试环境:安装了Oracle9i、Weblogic等系统软件;

    3.在工作机上安装了LoadRunner7.8;

    4.然后录制了登陆、发布公告等功能;

    5.开始设置30、50、100、500不同的并发用户数目进行并发;

    6.最后得出结论:系统只能运行80个左右的并发用户……。

    无疑上面的做法存在很多不合理的地方,例如测试内容太少、测试服务器配置太低等。现实工作中,尽管性能测试以其在测试中独特的地位越来越为软件测试人员、开发人员和用户所重视,但是不管是测试人员还是开发人员,仍然在认识上存在这样或者那样的误区。

    误区1:提高硬件配置可以直接提高性能

    这是以前系统规模不大时期留下来的认识。DOS时代以及后来Windows操作系统流行的初期,软件规模一般较小,而硬件的更新却是日新月异,软件性能一般不是突出问题,因为只要升级一下硬件,很容易就解决了性能问题。

    现在随着软件规模的扩大,提高硬件配置只是解决性能问题的一个基本手段。因为如果软件自身存在性能问题,再多的资源可能也不够用,例如内存泄漏问题,随着时间的增加,内存终究会被耗尽,最后导致系统崩溃。

    因此,如果用户对软件的性能要求较高,这意味着不但要从硬件方面来保证性能,还要从数据库、WebServer、操作系统配置等方面入手来提高性能,同时开发的软件系统本身也要进行优化,以便全面提高性能。

    误区2:在其它测试完成后进行性能测试

    这是目前特别普遍的一种现象,例如前面的A君的现象就是没有意识到性能测试的重要性。这种做法最严重的后果是如果性能问题是由软件系统本身产生的,可能会无法根治性能问题。例如架构设计方面的失误,可能意味着软件系统将被废掉。

    当然这并不意味所有的性能测试都要尽早进行,性能测试的启动时间要由软件特点来决定。

    误区3:性能测试独立于功能测试

    功能测试可以发现性能问题,性能测试也能发现功能问题。性能测试和功能测试是紧密联系在一起的,原因之一是由于很多性能问题是由软件自身功能缺陷引起的。如果应用系统功能不完善或者代码运行效率低下,通常会带来一些性能问题。功能测试通常要先于性能测试执行或者同步进行,软件功能完善可以保证性能测试进行得更加顺利。

    误区4:性能测试就是用户并发测试

    仍然有很多人(尤其是开发人员和部分项目实施人员)一提到性能测试,就会联想到并发用户测试,进而认为性能测试就是“测试一下多用户的并发情况”。严格地讲,性能测试是以用户并发测试为主的测试。实际性能测试还包含强度测试、大数据量测试等许多内容。

    误区5:在开发环境下进行性能测试

    很多时候,在软件开发完成后进行性能测试,对软件性能进行评估。实际上大多数的开发环境因为硬件条件比较差,所以反映不了过多的性能问题。

    因此性能测试要尽量在高配置的用户投产环境下进行。但是有两种可以例外的情况:一种是为了发现某些功能方面的问题,例如为了发现并发算法的一些缺陷;另外一种就是有非常好的硬件资源。

    误区6:系统存在瓶颈,不可以使用。

    系统发现了瓶颈,的确是很让人担心的一件事情。不过不要紧,很多的瓶颈可以不必去理会。发现瓶颈的目的主要是为了掌握系统特性,为改善和扩展系统提供依据。因此在性能方面给系统留有30%左右的扩展空间就可以了。

    上面列举的都是日常性能测试工作中相关人员常犯的错误,这些观点只在极其特殊的情况下才正确。希望读者了解这些常见的性能测试误区后,能在以后的工作中避免类似的情况。

    基于场景的性能测试设计

    由于开发环境硬件配置不高,基于用户的测试多在用户现场进行,而为了测试目的而进行的测试多在开发环境即开发团队内部进行,不过两者进行的场所没有严格的界限,例如也可以在开发团队内部模拟用户的环境进行性能测试。

    “为了测试目的而设计的测试用例场景”主要根据测试设计人员的经验来进行,但是仍然要参考用户的实际场景,用户实际使用场景是设计所有测试用例的依据。例如一些业务系统,虽然备份历史数据的周期为一年,但是设计大数据量测试用例时仍然包含了系统运行一个月、半年等的数据量模拟测试,因为这些均属于用户的典型场景。

    综合上面可以看出,性能测试用例设计首先要分析出用户现实中的典型场景,然后参照典型场景进行设计。实际项目中分析场景一般不会孤立的分析某一特定类型场景,而是把两种或者几种类型场景结合起来进行分析设计,这样做主要是为了选择更典型的场景和节省一些测试成本。

    下面将以图1所示的某视频点播网站做为示例,开始逐一讨论各类测试用例设计的细节。其中图1显示了该视频点播网站的主要业务及使用场景。

0
相关文章