qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

各种测试方法的问题

在 Exploratory Software Testig 一书中, James Whittaker在第二章中, 提到各种测试方法的不足:
  Defect Preventation
  从开发人员的角度来说, 他们希望藉由 design review, code review, static analysis tool, 和 unit test, 来增加软件的质量.
  但是作者觉得这些方法都有些根本的问题:
  (1) 开发人员通常不是个好的测试人员
  - 开发人员想的是"如何才能实现这个功能", 而测试人员则是从"如何才能攻破这个功能" 来思考.
  - 因此开发人员会有盲点, 需要有另一组人从不同观点来思考
  - 但是不代表开发人员不用作测试, 像是 formatting, data validation 和 error handling 等等都需要及时处理和验证. 等到测试人员发现, 时间会花得很长, 也修正的代价也很高
  (2) 静止状态的程序不能完全代表真的测试目标
  - 有很多错误是和执行环境有关系, 通常在开发环境这些错误不会发生的
  (3) 缺乏客户真正数据
  - 有些错误是和客户真实的数据有关, 或者需要实行一段时间后, 累积效果出现后才会有问题
  - 可是开发人员通常没有这些数据, 并且也没有这么长的测试时间, 所以无法找出这类型的错误
  Defect Detection
  通常分成手动测试和自动化测试两种:
  自动化测试
  - 测试人员不一定会是好的开发人员, 有些人可以, 有些人可能不行.
  - 测试程序也是会有 bug, 一旦出现后, 测试人员需要更多时间来除错, 维护它的正确性和强固性. 所以你要花在测试的时间多, 还是应该花在维护测试程序的时间多?
  - 此外测试程序所在的执行环境, 以及所用的测试数据, 不是客户的数据, 所以效果还是有限. 并且客户可能也没有勇气, 让你在他的 production 执行.
  - Oracle Problem 的问题是最难处理的, 也就是当你执行完测试时, 你无法确认是否真的实行正确. 像是 install 完毕, 甚么叫做 install 成功, 是所有 service 都启动, 是所有档案都复制完毕, 还是所有 registry 写正确. 你可能无法列的出来, spec 也不会写甚么叫做功能运作正确.
  手动测试
  - 也是由人来进行测试, 需要充分发聪明才智, 设计出真实客户环境的数据和使用状况. 尤其是有关 business logic 更是需要人脑介入.
  - 手动测试比自动化测试强的地方, 是因为现实状况有太多不确定的因素, 有太多 scenario, 会导致测试程序员小的情况太多, 错误时都需要人脑介入, 一一来跟踪.
  - 可是手动测试很慢, 无法反复使用, 测试步骤可能不一定有规律, 也不一定都能重复.

posted on 2014-09-18 09:26 顺其自然EVO 阅读(146) 评论(0)  编辑  收藏 所属分类: 测试学习专栏


只有注册用户登录后才能发表评论。


网站导航:
 
<2014年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜