测试不是平的

   很多测试工程师强调测试的方法和思想,到底什么是测试的方法和思想?


   测试的思路是一种立体的思路,物理学在说到多维空间的时候,往往会用“生活在球面上的动物”来形象地说明二维空间和三维空间的不同,在这里我也想借用多维空间的概念说一说测试。

   在我看来,测试应该至少具有三个维度:
  • 测试的级别——软件测试在不同的级别(level)上开展,例如单元测试、集成测试和系统测试。单元测试是最低的一个级别,测试的对象是构成软件系统的最小单位Unit;集成测试则是中间的级别,测试对象是由多个Unit组成的子系统;而系统测试则是高级别的测试,测试对象是完整的系统。

  • 测试的类型——测试类型和测试级别是正交的维度,测试类型是指对测试对象进行的不同类型的测试,同一个类型的测试可以在不同级别的测试中有不同的体现。例如性能测试,在单元测试、系统测试中都可能会进行针对性能的测试,但在这两个不同级别的测试中,性能测试的具体体现也不相同——单元测试中的性能测试侧重对单元性能的评估,对算法性能的评估;而系统测试中的性能测试则侧重用户感受,性能测试结果体现的是对系统总体性能表现的评估。

  • 测试的背景——测试关注点是另一个维度,简单来说,就是站在谁的角度来思考测试设计。举例来说,功能点测试就是站在“系统实现”的角度,一个一个的检查功能点是否完备,而用户场景测试则站在“用户”的角度,检查用户最关注的系统业务流程或是操作场景能够顺利实现。

   测试的世界是立体和多维的,这就意味着测试工程师在思考测试问题的时候必须多角度地分析。从思路的角度来说,也就是要尽可能从多方位考虑验证系统正确性和发现问题的可能性。

   至于测试的方法,则是指针对某种具体的思路,采用一些标准或是比较标准的方法对测试进行划分,以使得可以用一个相对较小的测试集合尽可能的覆盖系统的输入空间。常见的黑盒测试方法,等价类划分/边界值分析/状态迁移图法等,都是典型的测试方法。

   把这个问题扩展一下——我们讲到了测试的思路和方法,也给出了他们的不同,对测试工程师来说,这究竟具有什么样的意义呢?我觉得这里的讨论最适合用来回答一个经常被问到的问题“测试工程师究竟应该具有什么样的技能?”,我的答案是:
  1. 从测试方法的角度来说,测试工程师需要掌握测试设计的方法;
  2. 只掌握测试设计方法是远远不够的,还需要有相应的测试的思路;
  3. 从测试思路出发,测试工程师至少需要了解测试的不同级别,级别之间的差异和每个级别关注的重点;需要掌握测试的类型,了解每种测试类型关注的重点,区别和重叠的地方;需要掌握系统的背景知识(也就是通常说的业务知识),了解系统本身的结构,能够从系统本身和用户的角度来关注系统的测试。


posted on 2007-04-09 13:09  关河  阅读(901)  评论(4编辑  收藏  举报

导航