《软件测试52讲》读书笔记 —— 为什么要做自动化测试

简介: 《软件测试52讲》读书笔记 —— 为什么要做自动化测试

为什么需要自动化测试?


  1. 代替手工重复操作,测试工程师可以花更多时间在设计全面的测试用例和新功能测试上 【代替手工重复】
  2. 提升回归测试的效率,适合敏捷开发过程 【提升回归效率】
  3. 更好的利用非工作时间执行测试,工作时间分析失败用例 【利用非工作时间测试】
  4. 高效实现某些手工测试无法完成或代价巨大的测试类型,比如:关键业务7*24小时持续运行的系统稳定性测试和高并发场景的压力测试 【代替复杂手工测试和长时间测试】
  5. 还可以保证每次测试执行的步骤以及验证的一致性和可重复性,避免人为的遗漏或疏忽 【保证操作一致性,结果可溯源】

 

自动化测试的一些劣势


  1. 不能完全取代手工测试,只能替代手工测试中执行频率高、机械化的重复步骤 【不能替代手工测试】
  2. 无法应对被测系统的变化,自动化测试用例的维护成本高;因为自动化测试只是执行事先定义好的测试步骤并验证测试结果,对于执行过程中出现的明显错误和意外事件,自动化测试没有任何处理能力 【维护成本高,无法应对系统变化和紧急事件】
  3. 自动化测试用例的开发工作量远大于单词的手工测试,所以只有当开发完成的测试用例的有效执行次数≥5时,才能收回成本 【用例开发量大,投入产出比难以提高】
  4. 手工测试发现的缺陷数量更多,自动化测试仅仅能发现回归测试范围的缺陷 【只能发现回归缺陷】
  5. 自动化测试的效率很大程度依赖自动化测试用例的设计以及实现质量,不稳定的自动化测试用例比没有自动化更糟糕 【自动化测试用例强依赖开发质量】
  6. 实行自动化测试的初期,用例开发效率都很低,在体系成熟以及测试工程师熟练后一般都要重构初期用例 【后期需要重构不成熟的初期用例】
  7. 懂业务的人+懂自动化技术的人结合一起才能高效开展自动化测试 【不仅懂技术还得懂业务】
  8. 自动化测试开发人员必须具备编程能力 【必备编程】

 

什么样的项目适合自动化测试?


第一:需求稳定,不会频繁变更

过高的需求变更频率会导致自动化测试用例的维护成本直线上升

 

第二:研发和维护周期长,需要频繁执行回归测试

软件产品比软件项目更适合做自动化测试

  • 首先,软件产品的生命周期比较长,会有持续性迭代,每次版本发布都会有回归测试需求
  • 其次,自动化测试用例的执行比高于1:5,自动化测试的优势才可以被更好地体现


对软件项目的自动化测试,需要分情况

  • 短期项目:不建议实施自动化,就算技术可行性很高,但 投入产出比(ROI) 不高;应该选择 手工探索式测试 ,以发现缺陷为第一要务
  • 中长期项目:对比较稳定的功能进行自动化测试,对改动较大or需求不明确的功能进行手工测试,最终目标是用20%的精力去覆盖80%的回归测试

 

第三:需要在多平台上重复运行相同测试的场景


image.png


第四:某些测试项目通过手工测试无法实现,或者手工成本太高


对于所有的性能和压力测试,很难通过手工方式实现,如:

  • 一万并发用户的基准性能测试
  • 7*24小时的稳定性测试

这个时候必须借助机器来模拟大量用户反复操作被测软件的场景

 

第五:被测软件的开发较为规范,能够保证系统的可靠性


要实现稳定的自动化测试,被测软件的开发过程必须规范,比如:GUI上的控件命名如果没有任何规则可寻,就会造成GUI自动化的控件识别与定位不稳定,影响效率


另外,某些用例的自动化必须要求开发人员在产品中预留可测试性接口,否则后续的自动化会很难开展。

比如,用户登录操作可能需要图片验证码,需要开发提供绕开图片验证码的路径,否则需要自己借助 光学字符识别(OCR)技术 来对图片验证码识别,但它的识别率会很低,直接影响用例的稳定性


相关文章
|
4天前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
39 8
|
11天前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
11天前
|
机器学习/深度学习 人工智能 监控
软件测试中的自动化测试策略与最佳实践##
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和加速产品上市的关键工具。本文将探讨自动化测试的重要性,分析不同类型的自动化测试工具和框架,并深入讨论实施自动化测试的最佳实践。通过案例研究和数据分析,我们将揭示如何有效整合自动化测试到软件开发生命周期中,以及它如何帮助团队提高测试效率和覆盖率。 ##
23 1
|
9天前
|
Java 测试技术 API
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
|
10天前
|
数据管理 测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
在当今快速迭代的软件开发环境中,自动化测试已成为确保软件质量和加速产品上市的关键手段。本文旨在探讨软件测试中的自动化测试策略,包括选择合适的自动化测试工具、构建有效的自动化测试框架以及实施持续集成和持续部署(CI/CD)。通过分析自动化测试的最佳实践,本文为软件开发团队提供了一系列实用的指南,以优化测试流程、提高测试效率并减少人为错误。
31 4
|
10天前
|
监控 测试技术 定位技术
探索软件测试中的自动化测试框架选择与实施###
本文不概述传统意义上的摘要内容,而是直接以一段对话形式引入,旨在激发读者兴趣。想象一下,你是一名勇敢的探险家,面前摆满了各式各样的自动化测试工具地图,每张地图都指向未知的宝藏——高效、精准的软件测试领域。我们将一起踏上这段旅程,探讨如何根据项目特性选择合适的自动化测试框架,并分享实施过程中的关键步骤与避坑指南。 ###
20 4
|
10天前
|
jenkins 测试技术 持续交付
软件测试中的自动化与持续集成
在现代软件开发过程中,自动化测试和持续集成已成为不可或缺的组成部分。本文将深入探讨自动化测试和持续集成的重要性、优势以及如何有效实施它们以提升软件质量和开发效率。通过具体案例分析,我们将展示这些技术如何在实际项目中发挥作用,并讨论其面临的挑战及应对策略。
29 3
|
10天前
|
测试技术 持续交付 数据安全/隐私保护
软件测试的艺术与科学:探索自动化测试框架
在软件开发的世界中,测试是确保产品质量的关键环节。本文将深入探讨自动化测试框架的重要性和实现方法,旨在为读者揭示如何通过自动化测试提升软件测试效率和准确性。我们将从测试的基本概念出发,逐步引导读者了解自动化测试框架的设计和实施过程,以及如何选择合适的工具来支持测试活动。文章不仅提供理论知识,还将分享实用的代码示例,帮助读者将理论应用于实践。无论你是测试新手还是经验丰富的开发者,这篇文章都将为你打开一扇通往更高效、更可靠软件测试的大门。
15 1
|
28天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
55 3
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
71 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)