在某些开发人员眼里,测试很神秘;在某些开发人员眼里,测试很简单;在某些开发人员眼里,测试是质量。下面是关于测试开发人员需要知道的一些基本的东西。
The product is more than software.
产品不仅仅是软件本身
               


        产品的底层是计算机、操作系统、插件等;产品还需要帮助文档、手册等配套文件;产品往往有多个版本,是新代码、旧代码、框架的融合;产品研制出来了还要有后续的支持,需要安装、技术支持、补丁等。
        所以说产品不仅仅是软件本身,对于测试人员来说,要考虑的问题不仅仅是软件程序本身。
Quality is more than the lack of bugs.
质量不仅仅取决于缺陷数量
        缺陷数量少不意味着质量高,质量包括的范围很广,有些不构成bug,但是也是质量问题。
 
系统工作时是否解决了所有问题?
Functionality 功能性
-Suitability适宜性
-Correctness正确性
-Interoperability互用性
-Compatibility兼容性
-Compliance 规范性
-Security 安全性
-Installability 可安装性
 
是否实用?
Usability 可用性
       -Understandability 可理解性
       -Learnability 易学性
       -Operablility 易操作性
       -Performance 性能
 
        系统是否能持续工作?
Raliability 可靠性
       -Maturity完备性
       -Fault-tolerance容错性
       -Integrity完整性
       -Recoverability可恢复性
       -Safety 安全性
 
        是否充分利用系统资源?
Efficiency 效率
       -Storage 容量
       -Processing处理能力
 
        重新构建和维护是否经济?
Maintainability 可维护性
       -Analyzability可分析性
       -Changeability可更改性
       -Stability稳定性
       -Testability可测试性
Portability可移植性
       -Adaptability适应性
       -Localizability本地化
       -Reusability可重用性
 
        详细的定义可以从ISO-9126找到。
 
Quality assurance is more than testing
质量保证不于测试
        QA是为了小化风险和错误并让产品更加而做的所有事情。包括:
风险管理
顾客参与
开发人员的技能
过程定义和改进
检查和测试
基于经验的改进

 
Testing is hard to do
测试不是简单的事情
        测试很难做,因为你必须预料到你的用户使用的数据、具备的技能、采取的动作、对软件的期待、使用环境等。
 
        测试很难做,因为你检查的产品通常具备以下的特性:
不可见的
不稳定的
易变的
复杂的
不熟悉的
 
        测试很难做,因为你要使用的过程通常是:
冗长的
不明确的
不一致的
乏味的
费力的
 
        测试很难做,因为你要找的问题很多是不可想象的。
 
        想想下面的工作量:
1、各种各样的功能、输入数据、状态
2、产品要支持的各种平台
3、系统的各种外部因素
4、测试的只是所有情况中能够想到的预期的情况
5、测试产品的各个版本
 
        自动化测试能否解决这些工作量呢?
1、  人可以发现更多的问题,更准确地发现问题
2、  完整有用的测试自动化是一个大型的软件项目
3、  所用的支持工具通常都很昂贵并且古怪
4、  测试自动化通常是滞后的
 
You can make testing easier to do
你可以让测试更简单些
既然测试这么复杂,那么开发人员对测试给与必要的尊重外,是否还能做些什么让测试更简单些呢?答案是肯定的。
你可以把设计文档化
使用内部错误检查
在集成之前测试每个单元
告诉测试人员增加了什么新特性或者有什么古怪的问题是需要进一步测试判断的
对于每个构建的版本首先自己测试一下
在功能层面上改进产品
内建一些可测性接口