软件诞生后,短短几十年,软件业奇迹般的高速发展,逐渐走下了高高在上的神坛,广泛应用到人类社会的各个领域,用户也不再把软件看做神秘的玩意,而是普通的商品,开始从经济学的角度来考虑软件产品,这是一个意味深长的变化。讲经济就是要运用投入产出的关系分析和指导软件工程的各种活动和环节,软件运行不能以硬件不计成本为假设,要尽可能地少占用各种硬件资源,同时,软件运行的速度也要尽可能地快,每秒5000次加法运算是根本不可想象的,也是不可能被用户接受的。这些其实就是用户的最原始的性能需求。
1.1.3 功能与性能的关系
首先,软件的性能和功能的源头都是来自于用户的需求。
功能指的是在一般条件下软件系统能够为用户做什么,能够满足用户什么样的需求。拿一个电子邮件系统来讲,用户期望这个软件系统能够提供收发电子邮件、保存草稿、设置偏好等功能,只有这些功能实现了,用户才认为这是他想要的软件。但是随着软件市场竞争的激烈,软件技术的日益提高,系统能不能工作已经是一个最起码的门槛,能够“又好又快”才会得到用户的青睐,而性能则是衡量软件系统“好快”的一个重要考虑因素。“好”就是要为用户省钱,用最小的硬件成本运行软件系统;“快”就是软件响应时间要短,我们的用户都是急性子,最好一秒钟也不要等。简单地说,性能就是在空间和时间资源有限的条件下,软件系统还能不能工作。
如果把上面邮件的功能和性能需求量化,写成用户需求说明书可能是下面这个样子:
功能:
邮件系统能够支持收发以30种语言为标题和正文的邮件,并支持粘贴10MB的邮件附件。
性能:
邮件系统能够在2GB RAM/1GHz CPU的服务器上,支持10000注册用户,日均处理10000邮件,响应时间不超过5秒/封。
我们来对比一下功能需求说明和性能需求说明,发现两者有一些不同之处:
(1)功能需求中名词和动词多,描述软件主体和动作行为,比如“标题”、“正文”、“收发”、“粘贴”等;
(2)性能需求中对涉及容量和时间词汇多,如“2GB RAM服务器”、“1000注册用户”、“5秒/封”等。
相信我们的读者已经从上面的对比看出功能和性能的区别了,软件性能和功能区别的实质是,软件功能焦点在于软件“做什么”,关注软件物质“主体”发生的“事件”;而软件性能则关注于软件物质“做得如何”,这是综合“空间”和“时间”考虑的方案(资源和速度),表现为软件对“空间”和“时间”的敏感度。认识到性能的这个基本特征对于性能测试人员非常重要,因为在下面的章节中我们将要通过多个“空间”和“时间”的组合,来揭开性能指标的实质和提高的办法。另外,我们也要认清一个事实,软件的性能实现是建立在功能实现的基础之上的。
这就像一个人首先要能跑,这是一个健康的人的正常功能,然后才能参加百米比赛,这就如对人身体的性能考验。而百米比赛隐含了两个要素:一个是运动员有一个一百米的运动空间;另一个是比赛,要跑得足够快,要在短时间内跑完。因此我们说百米比赛其实就是一个空间和时间的综合结果。
“空间”和“时间”是一个哲学中抽象层次较高的概念,在不同的应用范围有不同的诠释。那么在软件理论和实践中,我们怎样理解“空间”和“时间”呢?所谓“仁者见仁,智者见智”,下面我们就分别从用户的角度和软件人员的角度来看一下软件的性能。