1 概述

1.1 手工测试的局限性

  • 通常,软件测试的工作量很大;

    • 据统计,测试会占用到40%的开发时间;一些可靠性要求非常高的软件,测试时间甚至占到开发时间的60%;
    • 而测试中的许多操作是重复性的、非智力性的和非创造性的,并要求做准确细致的工作,计算机就最适合于代替人工去完成这样的任务;
  • 手工测试的局限性:

    • 通过手工测试无法做到覆盖所有代码路径;
    • 许多与时序、死锁、资源冲突、多线程等有关的错误通过手工测试很难捕捉到;
    • 在系统负载、性能测试时,需要模拟大量数据、或大量并发用户等各种应用场合时,也很难通过手工测试来进行;
    • 在进行系统可靠性时,需要模拟系统运行十年、几十年,以验证系统能否稳定运行,也是手工测试无法模拟的;
    • 如果有大量(几千)的测试用例,需要在短时间内完成,手工测试又怎么办呢?
    • 测试可以发现错误,并不能表明程序的正确性。

1.2 定义

  • 自动化测试的定义:是指把以人为驱动的测试行为转化为机器执行的过程。实际上自动化测试往往通过一些测试工具或者框架,编写自动化测试脚本,来模拟手工测试过程。

1.3 基本流程

在这里插入图片描述

  • 分析测试需求:从需求文档里,找出哪些功能需要自动化测试(比如核心功能、重复测试的功能);
  • 制定测试计划:规划 “测什么、怎么测、用啥工具、排期多久”;
  • 设计测试用例:明确具体测试场景(比如登录功能,要测正确密码、错误密码、无密码);
  • 搭建测试环境:准备好测试需要的系统、硬件、数据(模拟真实用户环境);
  • 编写并执行测试脚本:用自动化工具写脚本,让机器自动跑测试;
  • 分析结果、记录问题:跑完脚本后,看哪些用例失败,记录 bug;
  • 跟踪 Bug:把问题反馈给开发,确认修复后,再重新测试验证。

1.4 优势

  • 缩短周期:回归测试(重复测老功能)不用再手动做,机器跑得更快;
  • 速度、效率、准确性:机器不会累,能快速、精准执行测试,避免人为错误;
  • 覆盖手工做不到的场景:比如模拟十万用户并发、长期稳定性测试,自动化能轻松搞定;
  • 结果可靠:每次执行脚本都一样,测试结果可复现、可信任。

2 技术

  • 录制和回放
    • 录制:用工具记录你操作软件的过程(比如点按钮、输入文字),自动生成测试脚本;
    • 回放:重复执行录制的脚本,检查操作是否正常,发现之前没注意到的错误;
  • 脚本技术(写代码控制测试)
    • 线性脚本:记录手动操作的 “流水账”,能完整回放,但灵活度低;
    • 结构脚本:加入逻辑判断(比如 “如果登录失败,就重试”),能测复杂功能;
    • 共享脚本:一个脚本可以调用其他脚本,减少重复编写,提高效率;
  • 数据驱动测试(用数据喂脚本)
    • 核心逻辑:把测试数据(比如用户名、密码)和脚本分离,用不同数据文件驱动测试,不用改脚本就能换数据;
    • 两种方式
      • 关键字驱动:把测试步骤拆成 “操作对象 + 操作 + 值”(比如 “点击 - 登录按钮 - 无”),用关键字管理数据;
      • 行为驱动:从业务需求出发,模拟用户实际操作流程,测试软件内部协作是否正常。

3 工具

  • Selenium(开源、Web 测试首选):
    • Selenium IDE:Firefox 插件,能录制、编辑脚本,还能导出成代码(比如 Python、Java);
    • Selenium Grid:分布式测试,一个中心节点管理多个浏览器并行测试,提速;
    • Selenium Remote Control:远程控制浏览器执行测试;
  • UFT(Unified Functional Testing,商用工具,前身 QTP):功能强大的商业工具,适合企业级软件的功能测试,能测桌面应用、Web 等。
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐