软件测试(6)——自动化测试

自动化测试

软件测试工作量很大,其中许多操作是重复性的、非智力性的和非创造性的,并要求做准确细致的工作,计算机就最适合于代替人工去完成这样的任务。

自动化测试就是编写软件去测试其它软件

手工测试和自动化测试

手工测试局限性

  • 无法做到覆盖所有代码路径
  • 机械、重复,工作量大。如果有大量(几千)的测试用例,需要在短时间内(1天)完成,手工测试几乎不可能做到
  • 许多与时序、死锁、资源冲突、多线程等有关的错误,通过手工测试很难捕捉到
  • 进行负载、性能测试,很难通过手工测试模拟大量数据或大量并发用户
  • 可靠性测试时,常需要模拟系统运行10年、几十年,以验证稳定性,这也是手工测试无法做到的

自动化测试好处

  • 提高测试效率,缩短软件开发测试周期,让产品更快投放市场,节省人力资源,充分利用硬件,降低测试成本
  • 提高测试可重复性
  • 改善测试质量,增强测试的稳定性和可靠性,提高测试的准确度和精确度,增加软件信任度
  • 实现一些手工情况难以开展的测试,能做负载、压力测试等手工不能做的事情

自动化测试不可能完全代替手工测试,多数情况下,手工测试和自动化测试应该相结合,以最有效的方法来完成测试任务。

适用场合

  • 非常重要的测试
  • 涉及范围很广的测试
  • 对主要功能的测试
  • 容易自动化的测试
  • 很快有回报的测试
  • 运行最频繁的测试

不适用场合:功能不稳定的软件、开发周期很短的软件、一次性的软件

体系评估

  • 可维护性:是否很容易使测试更新跟上软件升级的步伐
  • 高效性:自动化测试的一个重要目标就是更经济地运行测试
  • 可靠性:测试机制是否能给出精确而且可重现的结果
  • 兼容性:是否允许测试用例为不同的测试目标而以不同方式组合
  • 可用性:是否容易使用,避免繁琐的安装配置等
  • 健壮性:是否可以处理意外情况而不退出或终止
  • 可移植性:在不同环境中运行测试的能力

原理和方法

  • 代码静态和动态分析(Static and Dynamic Analysis)——白盒

    代码分析类似于高级编译系统,一般针对不同的程序语言去构造分析工具

  • 捕获和回放(Record and Replay)——黑盒

    先由手工完成一遍需要测试的流程,同时由计算机记录下这个流程期间客户端和服务器端之间的通信信息,这些信息通常是一些协议和数据,并形成特定的脚本程序

    • 捕获

      扫描二维码关注公众号,回复: 4120407 查看本文章

      将用户每一步操作都记录下来。对GUI,记录下操作对象,以及相对应的操作、状态变化或是属性变化。所有的记录转换为一种脚本语言所描述的过程,以模拟用户操作

    • 回放

      将脚本语言所描述的过程转换为屏幕上的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。

  • 脚本技术

    • 脚本是一组测试工具执行的指令集合,也是计算机程序的一种形式
    • 脚本可以通过录制测试产生,然后再做修改(减少直接编写的工作量);也可以直接用脚本语言编写
    • 分类
      • 线性脚本:结构为顺序语句
      • 结构化脚本:类似于结构化程序
      • 共享脚本:允许一个脚本调用另一个脚本(类似C语言可以加#include)
      • 数据驱动脚本:数据和执行控制分离
      • 关键字驱动脚本:用关键词序列表示测试

猜你喜欢

转载自blog.csdn.net/qq_21110935/article/details/84189096