1. 目的
保证版本功能正确、性能符合要求。
包括功能测试和性能测试两部分,其中性能测试包括:压力测试、单个运行时间测试。
测试scope包括前端页面和后端API功能。
2. 测试分类
测试级别:单元测试、集成测试、接口测试、系统测试、验收测试
测试方法:动态测试、静态测试;黑盒测试、白盒测试、灰盒测试。
测试类型:上述19种
构建自动化测试系统中,需要根据项目大小和对错误的容忍程度,酌情补充不同类型和级别的用例。
3.经典测试金字塔
Manual Test:手工测试/探索性测试
GUI: 系统测试及验收测试
API: 集成测试
Unit Test:单元测试
从下到上,效率更高,运行速度更快,详细scope如下:
√ 单元测试(Unit Tests)
单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。又称为模块测试
测试阶段:编码后
测试对象:最小模块
测试人员:白盒测试工程师或开发工程师
测试依据:代码和注释+详细设计文档
测试方法:白盒测试
测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试
√ 集成测试(Integration Testing)
集成测试也称联合测试、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。阿旺主要目的是检查软件单位之间的接口是否正确。
测试阶段:一般单元测试之后进行
测试对象:模块间的接口
测试人员:白盒测试工程师或开发工程师
测试依据:单元测试的模块+概要设计文档
测试方法:黑盒测试与白盒测试相结合
测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响
√ 系统测试(System Testing)
将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。时间大部分在系统测试执行阶段
测试阶段:集成测试通过之后
测试对象:整个系统(软、硬件)
测试人员:黑盒测试工程师
测试依据:需求规格说明文档
测试方法:黑盒测试
测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等
√ 验收测试(Acceptance Testing)
验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。阿旺总结验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。
测试阶段:系统测试通过之后
测试对象:整个系统(包括软硬件)。
测试人员:主要是最终用户或者需求方。
测试依据:用户需求、验收标准
测试方法:黑盒测试
测试内容:同系统测试(功能...各类文档等)
4. 构建测试系统中可能出现的问题及方案
- UI测试时间长,稳定性差,与页面设计耦合严重
罗列已有的功能,可能会改的,重点进行API测试,尽量减少UI测试
页面设计使用唯一性id - 前期项目构建,unitest太少,但此时代码又有修改的风险
先补充API测试、基础模块、重要功能的测试。
代码出现bug, 必须补充unitest。 - 后端代码未面向接口编程,不利于打桩(如:函数内部数据直接从数据库查询获取,测试函数功能时,无法模拟数据库数据,强烈依赖数据库)
重构,并在之前补充测试用例
5. 结论
测试流程:unitest-intergration-system
unitest:
数量:50%。
测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试。
实现 :pytest/打桩
触发:重构/新增需求更改/Bug
测试级别:component、intergration、function
功能:保证每个模块内部功能正确和模块的交互之间接口正确api:
数量:30%
测试内容:针对页面所有重要REASTFUL进行测试,包括功能和性能测试
实现:katalon+jemeter
触发:有新的REASTFUL接口发布
测试级别:bvt、intergration、function、performance
功能: 保证系统功能正确且性能满足要求
UI test:
数量:10%
测试内容:主要覆盖用户主要的使用场景,不做对各个元素的点击功能验证(因为,一旦页面不响应,定位解决更快)
实现:katalon UI 测试
触发:用户有重要的新加配置流程,一般不触发
测试级别:systerm、intergration
功能:保证用户使用正常manual test:
数量:10%
测试内容:针对本次修改点对应的功能进行重点测试
实现:手工测试
触发:每个迭代的新增功能和bug及探索性测试,有必要的话,需要对应增加上述自动化用例