手动测试 和 自动化测试 感想
手动测试
优点:快速,成本低廉;
缺点:重复成本高。
自动化测试:
优点:重复成本低,可以实现无人测试。
缺点:首次成本高,技术要求高。
那么什么情况下用手动测试,什么情况下用要用自动化测试呢?
测试重复度, 如果有一个测试,可以预见会被重复很多次(3次以上或可以估计到重复成本高于自动化测试成本), 那么就应该用自动化测试.
如果一个测试测试重复度低,那么就用手动测试。
开发
测试重复度考量,对于开发来讲,要考量:
如果一个东西对外部世界有影响,那么建议使用自动化测试来体现它;
如果它只是内部的东西,那么没有必要用自动化测试覆盖它(手工测试必要)。
TDD 应该是从外部需求来 考量 代码的,TDD的测试是为了监视外部需求,而不是内部实现。所以TDD不要追求代码覆盖率。
Unit 测试 是为了 提高内部质量的,所以单元测试需要考虑代码覆盖率。
(建议代码覆盖率的测试,应该到后期补上,而不是TDD的时候考虑,只有代码稳定了,覆盖率才有投资的价值)
代码对外部的依赖,一般通过断言来保证。
手动测试可以快速检查代码的正确性;
而自动化测试可以长期监视 变化导致的 代码不能满足需求的错误。
如果有时间紧张,建议一定要分清 需求的重要性,对关键需求使用 自动化测试来保证。
测试部:
测试永无止境,所以从投资的角度来看,应该要精力放到最重要的需求上(而不是最容易出错的地方)。
测试最容易犯的一个错误是,以BUG数来体现价值。而不是以BUG本身的价值来体现。
BUG的价值是 = 这个BUG发生的几率 × BUG 造成的损失。
所以测试的主要考量,应该放到把握软件的市场价值上。
用自动化测试来,监视 最重要(最有价值的)的需求。
用手动测试来监视 一些难以自动化的测试(比如布局和可用性)。
用手动测试来做发散测试。
调试
手动测试重现BUG,
自动化测试, 简化BUG的重现条件;
最后用自动化测试来,检验BUG的修改,以及以后防止BUG的重复出现。