在具有软件测试共性的同时,性能测试也有自身的一些特点。
1.性能测试不是功能测试
性能测试不要求也无法做到覆盖软件所有的功能,通常我们只是对系统中某些功能或模块做性能测试。一般的,我们在选择性能测试案例时需要遵循以下的原则:
(1)基本且常用的
比如,一个E-mail系统,基本且常用的功能有注册、登录、收邮件、查询邮件,用户使用这些功能的频率较高,要做性能测试。而高级查询、过滤器、邮件列表等功能被使用的次数较少,就可以不做性能测试,或者进行性能测试的优先级低一些。
(2)对响应时间要求苛刻的
这样的要求经常出现在金融和电信等对实时性要求比较高的系统中。比如,从手机呼叫开始,经过基站、核心网,再到被叫手机响铃,整个系统的处理时间应该在用户能接受的范围内。另外,一个负责和手机通信的基站在发生故障或掉电后,要能很快地恢复工作状态。这些功能都对时间有着严格的要求,一定要做性能测试,当然实际运作时,电信系统上线时所做的性能测试不仅仅限于这些功能。
将这些功能细分就是性能测试中的事务(Transaction)。关于事务这个概念我们在后面的章节中将详细阐述。
2.性能测试属于系统级测试
从V型图可以看到,性能测试属于系统级测试。那么性能测试是基于单元测试、集成测试、功能测试等都已经完成的基础上,站在用户的角度去测试整个系统的。这包含两个含义:
第一,性能测试是“两头在外”,软件性能需求不仅直接来自用户,最终目的也是服务于用户。通过性能测试这个过程,从上面我们讲到用户的需求和性能测试指标的对应关系,就可以看出。
第二,性能测试开始的必要条件是软件系统已经处于一个比较稳定的状态,系统架构、主要代码、中间件等都不再有大的变化,否则会给性能测试带来很大的风险。
基于以上事实,我们应该在软件流程什么阶段开始性能测试?结合自己的实际工作进行分析。
1.2.2 性能测试策略揭秘
谈到“策略”,这是如今很火、使用较多的一个词。不光在IT领域,其他各个行业中也都有各种各样的策略,如营销策略、风险规避策略等。策略即谋略、手段、方法,表现为权宜的行动路线、指导原则或过程。
做事情讲策略,这是一种智慧,是人们聪明起来的表现,但当越来越多的策略“概念化”的时候,我们不得不去思考我们到底要达到什么样的目标,什么样的策略才是我们需要的。
引用网上一位哲人说的话:“概念只是为了方便人们理解和研究世界万物事物而制造的工具,而最终结果将使概念不再需要,就如同庄子所说的得意而忘言”。语言就是一种包装材料,它包装的是某种含义。因为人类传递信息必须使用语言,所以我们在研究的时候不得不借助于这种包装,但是当人的思维能力具备了打开包装直接取得内部的含义的时候,语言就变得多余了。这时候再关注于语言和概念本身就成了买椟还珠的现代版了。
因此,我们应该关注的不是概念本身,而是概念背后的含义。理解了含义,再冠予它什么样的名词头衔,如“攻略“,对于我们都无关紧要了。而理解一个概念,我们可以靠WWH方法,即对概念的三个问题:Why、What、How。
好,言归正传,回到软件性能测试策略中来。在性能测试过程中,只要有事情做,就会有策略,如设计用例有设计策略,执行时有执行策略,调优时还有调优策略。为了不产生混淆,我们要说明的是,在本节中讨论的策略是性能测试设计策略。
Why(为什么会有不同的策略)
在软件性能一节中,我们看到软件的性能来自软件对空间和时间的综合方案,这种组合是很多的,因此用户的软件性能需求可能会多种多样。对于软件人员,我们做性能测试也要因地制宜,根据不同的性能需求,选择不同的测试策略。
What(什么是性能测试设计策略)
验证性能需求是测试目的,测试策略即已经被证明是行之有效的测试方法。