如何构建Web服务自动化测试系统?

1. 目的

保证版本功能正确、性能符合要求。
包括功能测试和性能测试两部分,其中性能测试包括:压力测试、单个运行时间测试。
测试scope包括前端页面和后端API功能。

2. 测试分类

image.png

测试级别:单元测试、集成测试、接口测试、系统测试、验收测试
测试方法:动态测试、静态测试;黑盒测试、白盒测试、灰盒测试。
测试类型:上述19种

image.png

构建自动化测试系统中,需要根据项目大小和对错误的容忍程度,酌情补充不同类型和级别的用例。

3.经典测试金字塔

image.png

Manual Test:手工测试/探索性测试
GUI: 系统测试及验收测试
API: 集成测试
Unit Test:单元测试

从下到上,效率更高,运行速度更快,详细scope如下:

√ 单元测试(Unit Tests)
单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。又称为模块测试
测试阶段:编码后
测试对象:最小模块
测试人员:白盒测试工程师或开发工程师
测试依据:代码和注释+详细设计文档
测试方法:白盒测试
测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试

√ 集成测试(Integration Testing)
集成测试也称联合测试、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。阿旺主要目的是检查软件单位之间的接口是否正确。
测试阶段:一般单元测试之后进行
测试对象:模块间的接口
测试人员:白盒测试工程师或开发工程师
测试依据:单元测试的模块+概要设计文档
测试方法:黑盒测试与白盒测试相结合
测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响

√ 系统测试(System Testing)
将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。时间大部分在系统测试执行阶段
测试阶段:集成测试通过之后
测试对象:整个系统(软、硬件)
测试人员:黑盒测试工程师
测试依据:需求规格说明文档
测试方法:黑盒测试
测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等

√ 验收测试(Acceptance Testing)
验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。阿旺总结验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。
测试阶段:系统测试通过之后
测试对象:整个系统(包括软硬件)。
测试人员:主要是最终用户或者需求方。
测试依据:用户需求、验收标准
测试方法:黑盒测试
测试内容:同系统测试(功能...各类文档等)

4. 构建测试系统中可能出现的问题及方案

  1. UI测试时间长,稳定性差,与页面设计耦合严重
    罗列已有的功能,可能会改的,重点进行API测试,尽量减少UI测试
    页面设计使用唯一性id
  2. 前期项目构建,unitest太少,但此时代码又有修改的风险
    先补充API测试、基础模块、重要功能的测试。
    代码出现bug, 必须补充unitest。
  3. 后端代码未面向接口编程,不利于打桩(如:函数内部数据直接从数据库查询获取,测试函数功能时,无法模拟数据库数据,强烈依赖数据库)
    重构,并在之前补充测试用例

5. 结论

测试流程:unitest-intergration-system

  1. unitest:
    数量:50%。
    测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试。
    实现 :pytest/打桩
    触发:重构/新增需求更改/Bug
    测试级别:component、intergration、function
    功能:保证每个模块内部功能正确和模块的交互之间接口正确

  2. api:
    数量:30%
    测试内容:针对页面所有重要REASTFUL进行测试,包括功能和性能测试
    实现:katalon+jemeter
    触发:有新的REASTFUL接口发布
    测试级别:bvt、intergration、function、performance
    功能: 保证系统功能正确且性能满足要求

  1. UI test:
    数量:10%
    测试内容:主要覆盖用户主要的使用场景,不做对各个元素的点击功能验证(因为,一旦页面不响应,定位解决更快)
    实现:katalon UI 测试
    触发:用户有重要的新加配置流程,一般不触发
    测试级别:systerm、intergration
    功能:保证用户使用正常

  2. manual test:
    数量:10%
    测试内容:针对本次修改点对应的功能进行重点测试
    实现:手工测试
    触发:每个迭代的新增功能和bug及探索性测试,有必要的话,需要对应增加上述自动化用例

6 . 参考(可能不全)

https://www.cnblogs.com/findyou/p/6480411.html

你可能感兴趣的:(如何构建Web服务自动化测试系统?)