持续交付13-自动化验收测试

自动化验收测试

验收测试内容

验收测试:用于验证一个用户故事或需求的验收条件是否被满足.验收测试可以分为:功能性验收测试和非功能性验收测试.
功能测试:实际应用业务功能相关的测试;
非功能测试:应用运行相关的容量,性能,可修改性,可用性,安全性,易用性等方面的测试.

验收测试和单元测试的区别:

验收测试针对业务;单元测试是针对开发;验收测试是验证应用功能是否是用户想要的;单元测试是验证功能是否开发想要的,这可能与实际用户的想法有出入.

解决什么问题

验收测试套件验证应用程序是否交付了用户期望的业务价值;
防止回归问题或缺陷破坏应用程序原有功能;在线程问题,事件驱动问题,架构问题,环境及配置问题等排查上更便捷;
减少测试人工操作负担;
及早发现问题,发布时间流程可控,避免被测试环境延误产品发布;

怎么做

验收测试原则:

  1. 创建可维护的验收测试套件.定义验收条件;使用领域语言封装细节;面向接口开发,避免GUI上测试;
    定义验收条件

  2. GUI上的测试.采用窗口驱动模式测试;但是如果采用页面mvc模式,可以直接基于业务层执行测试,避免显示层测试;

具体验收测试实现:

  1. 创建验收测试
    1. 分析人员和测试人员应该参与到整个项目周期中
    2. 迭代开发项目中的分析工作.每次迭代时需求和测试共同指定验收条件,最后由开发实现这些验收条件
    3. 将验收条件变成可执行的文档.
  2. 创建应用程序驱动层
    1. 使用DSL表述验收条件
    2. 窗口驱动器模式.就是通过抽象层使测试与GUI解耦.
  3. 实现验收测试
    1. 验收测试中的状态.维护一个最小受控数据集用于测试.充分利用数据间隔离性来保证测试互不影响.
    2. 过程边界,封装和测试.只在外部交互时使用桩数据.
    3. 管理异步与超时问题.让事件顺序发生,使测试看起来像是同步的.
    4. 使用测试替身对象.用于模拟外部服务,最小化外部依赖的影响.
  4. 维护验收测试套件
    1. 确保验收测试一直处于通过状态.问题所有团队成员负责,且问题可视化,便于追责和明确职责;
    2. 部署测试.测试环境状态初始化;配置环境验证;筛选可以立即失败的条件,便于快速失败;
  5. 验收测试性能.快速执行便于快速反馈,有利于开发效率的提高
    1. 重构通用任务.找到慢点,进行改造;找到通用模式,在其中找到共用点,添加一些种子数据(可能造成数据不一致).
    2. 共享昂贵资源.降低单独资源准备的消耗
    3. 并行测试.要求测试独立性比较好.
    4. 使用计算网格.多服务器并行执行验收测试.
原文地址:https://www.cnblogs.com/chengmuyu/p/13362715.html