10 基于自动化的测试技术

Posted on Wed, 25 Dec 2024 17:08:27 +0800 by LiangMingJian


1.自动化测试

1.1 优点

  • 快速:脚本执行的速度远远快于手工测试执行的速度。
  • 可靠:每次运行时都执行相同的操作,消除人为的错误。
  • 可重复:可以对被测试系统执行相同的操作。
  • 可重用:可以使用测试脚本重复地测试应用程序的不同版本。
  • 全面:可以设计更多的测试用例,进而提高每个功能的覆盖率。
  • 高效率:测试人员可以更专注于验证新的功能或新修改的功能,而不需要花费更多的时间验证以前测试版本中已经验证过的功能或模块。
  • 无疲劳:随着测试时间的增加,所有的测试动作在每个版本间不停地重复,测试工程师心理越发疲劳,而自动化测试则没有这方面的问题。

1.2 缺点

  • 增加开发成本。
  • 需要测试技术团队。
  • 脚本维护成本高。
  • 无创造性。
  • 引入更多的复杂性。
  • 容易出现偏离原始的测试目标。
  • 可能引入额外的错误。

1.3 不正确的期望

  • 自动化测试可以完成一切测试工作。
  • 自动化测试永远无法取代手工测试。
  • 测试工具可适用于所有的测试。
  • 测试工具能使工作量大幅度降低。
  • 测试工具能实现百分之百的测试覆盖率。
  • 自动化测试工具容易使用。
  • 自动化测试能发现大量的新缺陷。
  • 手工测试发现的 Bug 比自动化测试发现的 Bug 多得多。

1.4 局限的领域

  • 定制型项目
  • 周期很短的项目
  • 业务规则复杂的对象
  • 人体感官与易用性测试
  • 不稳定的软件
  • 涉及物理交互的项目

1.5 适合自动化测试的项目

  • 验证测试,回归测试、压力测试、性能测试。
  • 相对稳定且界面改动比较少的功能测试。
  • 人工容易出错的测试工作。
  • 在多个平台环境上运行相同的用例、大量组合性测试或其他重复性测试任务。
  • 周期长的软件产品开发项目。

1.6 手工测试的缺点

  • 工作量和时间耗费过于庞大。
  • 衡量软件测试工作进展困难。
  • 长时间运行的可靠性测试问题。
  • 对并发用户进行模拟的问题。
  • 确定系统的性能瓶颈问题。
  • 软件测试过程的管理问题。

1.7 自动化测试金字塔

  • 测试金字塔中,自动化测试投入越早,层级越低,投入产出比越高
  • 单元层:单元测试,最有价值的测试,应使用相应的单元测试框架来规范地实施单元测试
  • 服务和接口层:集成、接口自动化测试,它的价值居中
  • 用户界面层:用户界面自动化测试,可看出它的价值最小,大部分测试人员都是对用户界面层的功能进行测试

2.测试设计的自动化技术

  • 基于模型的测试技术:通过模型描述软件的需求和期待的行为,自动地生成测试用例和脚本,测试建模仍然需要人工实施,而测试生成则由生成算法来自动完成。
  • 基于搜索的测试技术:把测试数据生成问题转化成为搜索问题,即从软件运行的输入域中搜索所需的值以满足测试需求,经典的基于遗传算法的测试生成。

3.测试执行的自动化技术

  • 测试工具的选择:UFT,Robot Framework,Selenium,Appium。
  • 自动化测试语言的选择:Python,Java,Go。