自动化测试的重要性自然不用多说,没有自动化测试敏捷开发和CI/CD几乎不可能存在。
当然自动化测试也不是万能的,不要拿手工测试与自动化测试相比,而应该把自动化测试看做是对测试员能力的扩充,能够完成手工测试所不能完成的工作。
来看看业界对自动化测试的看法吧。
- 《Google软件测试之道》3.4 章节,YouTube测试工程师apple chow的观念:“如果测试或者自动化过于难以维护,不如放弃它并试着去实现更有韧性,更好的东西。密切关注一段时间维护和排错的成本。遵守70-20-10法则:小型的用来验证单个类或者功能的单元测试占70%,中型的用来验证一个或者多个应用模块之间的测试占20%,大型的高级别的用来完整应用的测试(一般是系统测试和端到端测试)占10%。”
- 《Google软件测试之道》3.4 章节,YouTube测试工程师apple chow的观念:“安排好优先级,寻找小成本大回报的自动化项目。一定要记住自动化并不能解决所有问题,尤其是前端项目和设备测试。总是会需要聪明的,探索式的测试并跟踪测试数据。”
- 《Google软件测试之道》4.4 章节,Google Gmail测试工程经理Ankit Mehta谈Gmail的测试经验是:“20%的测试人员进行探索式测试,任何关注用户体验的产品都需要探索式测试。还有30%的测试工程师关注于产品的整体性测试,他们和测试开发工程师一起来保证测试的效果。另外50%的工作,是测试开发工程师开发相关的自动化测试和工具,以保持代码库的健壮和提高开发人员的工作效率。”
- 《Google软件测试之道》4.6 章节,Google Chrome测试工程经理Joel Hynoski认为:“测试本身就是一种平衡的艺术。一方面,我们必须能让产品发布,对每个发布版本做所需的检查以保证没有问题。另一方面,我们必须开发优秀的自动化测试,并为自动化投入开发自己的框架和基础设施。再有,我们需要围绕着“开发-构建-测试-发布”的流程模式计划和安排我们的工作。还有,测试专家不断地向世界展示我们进行测试的最新方法,如果你不实验这些新东西,你会觉得自己是在原地踏步。”。
- 《软件测试经验与教训》中,关于自动化测试
表格 1 手工测试和自动化测试的比较
比较点 | 手工测试 | 自动化测试 |
定义 | 人工进行的测试 | 利用自动化工具或平台进行的测试 |
执行时间段 | 在测试早期往往使用得比较多 | 测试中后期,或者回归测试上。 |
执行效率 | 执行效率较低 | 一般执行效率较高 |
执行代价 | 每次的执行代价相对固定 | 取决于自动化的代价和执行频率 |
测试质量 | 取决于测试用例的质量和测试人员的素养 | 取决于测试用例的质量和自动化测试用例的质量 |
重复执行 | 每次执行都需要相应的执行代价,但是不同的人执行同一个用例可能看出不同的问题 | 执行可以复用,但重复执行不能提高有效性 |
性能测试场景 | 对于大量用户的测试,不可能同时让足够多的测试人员同时进行测试,手工测试几乎不可能。 | 可以自动化测试模拟同时有许多用户,从而达到测试的目的。 |
局限性 | 许多与时序、死锁、资源冲突、多线程等有关的错误通过手工测试很难捕捉到; | 很多和界面相关的场景自动化测试很难检测到问题。 |
发展方向 | 手工测试者最适合成为领域专家,他们可以把相当复杂的业务逻辑存在最强力的测试工具——大脑里。而且手工测试速度比较慢测,试者就有时间可以观察分析细微的逻辑问题。速度虽然慢些,但是比较容易。 | 自动化则胜在测试底层的细节。自动化可以测试崩溃、挂起、错误返回值、返回码、异常和内存使用等等。速度快但是也困难些。想对业务逻辑进行自动化测试比较困难,风险也大。 |
手工测试和自动化测试具体选择要看看项目规模,客户需求,公司能力等,绝大多数时候都是结合在一起使用才能发挥最大威力。