昨晚和一个做嵌入式的朋友聊到了测试,然后听说我有段时间专注测试自动化,于是和我讨论了一些硬件测试和软件测试相关的东西,有些零散,但朋友见面谈技术也有点“浪费”宝贵的叙旧时间。不过这个问题还是留在了我的To Be answered的问题中。今天特意翻翻《Wiley.Systems Engineering Principles and Practice.2Ed.2011》一书,终于找到了相关的答案。

   软件测试和硬件系统的测试的总体目标大致上是一样的,但硬件和软件之间的基本差别导致测试的技巧和策略就有很大不同。

  1. 测试路径。控制结构(分支、循环和switch)的无限制使用使得即使很小的程序都有很多可能的逻辑路径。测试所有可能的路径是不可能的,因此必须强制选择有限数量的测试用例。
  2. 接口。软件模块之间的大量接口及其深度和有限的可见性使得定位测试点并测试中不一致的很困难。
  3. 抽象。软件的设计描述比硬件设计文档更抽象,更不容易理解。这使得测试计划变得复杂。
  4. 变化。在软件中的明显变化就要求相应的更多重新测试。本地变化会要求重复系统测试。
  5. 失效模式。 很多软件错误的灾难性有着两个严重后果。其一是对系统运行的影响。其二就是在系统无法工作时失效原因诊断的提示。