#### 1.1外部质量
客户或者应用程序的终端用户最关心他们可见的质量问题。下面列出了外部质量包含的几个方面:
● 功能性(Functionality):指应用程序能够完成预期的任务。
● 易用性(Usability):指应用程序能够高效工作并且能够满足用户需求。可访问性属于易用性。
● 反应性(Reactivity):指应用程序能够在短时间内作出反应,这对于满足用户需求至关重要。
● 安全性(Security):用户可感觉到的安全性,尤其是构建成功的软件的另一重要因素。
● 可用性(Availability)与可靠性(Reliability):对于拥有大量用户的Web应用程序而言,可用性与可靠性是相当重要的。因为Web应用程序必须能够承载高负荷甚至可以在异常情况下正常工作。
将应用程序作为一个整体进行测试能够检验软件外部质量的各个方面,这称为终端到终端测试(end-to-endtest)。我们可以记录客户需求作为验收测试(acceptancetest)的标准。验收测试不仅是客户与开发人员的一种很好的沟通方式,而且可以自动验证软件产品是否满足所有功能需求。
为了提高应用程序的反应,需要检测其响应时间。可以使用一些辅助的工具和技术手段以确保软件的低耗费、实现软件的最优化。将来需要修正应用程序或流量突增时,开发人员和管理者必须能够知道软件潜在的瓶颈在哪里,这样才能确定项目规模。从长远来看,所有这些信息均有助于软件可用性与可靠性的质量保证。
#### 1.2内部质量
开发人员与管理人员对于应用程序的需求就是应用程序的内部质量。开发人员关注应用程序的易理解、易调整、易扩充。如果没有满足这些需求,以后修改应用程序将会很困难,修改的代价也会很高。这带来的危害是,对应用程序的一个小小的改动都可能会导致意想不到的副作用。
客户与终端用户几乎觉察不到软件的内部质量。终端用户希望软件满足其所有需求,至少需要满足其预期功能并且软件要易于操作。当然,如果软件能够通过验收测试且运行速度还够快,那么大多数客户都会满意。
但是,内部质量缺陷通常需要在使用一段时期后才能够暴露出来。即使修正小的故障也不是一蹴而成的事情。对软件的任何修改和扩展都会花费巨大代价。通常而言,开发人员早晚都会提出申请资金预算,用于整理或者重构代码,但是客户或者管理层看不到重构代码带来的好处,这样的申请多半不会被批准。
第2章 将会讨论独立软件模块(单元测试)的自动测试。自动测试能够立即反馈修改代码时产生的bug,如不借助自动测试技术,代码重构工作将会非常麻烦。
~~~
质量保证(qualityassurance),或者确切地说,质量管理(quality management)的主要目标是:参与项目的各个方面都认可内部质量的开支和受益。
~~~
* * * * *
[《开发高质量PHP框架与应用的实际案例解析》](http://item.jd.com/11020398.html)