软件测试常见技术
测试左移:研发阶段的质量保证测试:测试阶段的测试流程测试右移:发布后的质量监控
App 交付策略
内部交付
Jenkins 自动打包
提供内部网站下载入口
供整个项目团队手工验证
灰度交付
使用 fir.im bugly testfight 服务
正式发布
Android: 渠道包打包推送
IOS: 上传到 app store
常见后端发布
代码编译和打包构建
后端打包 mvn rpm doctor
移动端打包 gradle cocospod
环境构建
doctor 等容器技术
Jenkins 等自动构建和部署平台
测试推送
后端升级自动触发接口测试
测试结果自动推送到运维平台决策
测试准入机制
建立合适的准入机制
自动对研发,测试分支进行打包
自动对相关分支进行测试
对研发分支进行自动化冒烟
对测试分支建立完善的测试流程
打回 or 接受
建立合适的版本管理机制
版本号的使用规范 三位+四位
根据版本号和 Commit 定位和对比代码
对每个版本的变更自动采集提交记录
基本的测试 checklist 和手段
功能测试:业务测试,回归测试
非公能测试:性能测试,专项测试
测试左移:代码分析,代码审计
测试右移:质量监控
## 合理的测试安排
新功能测试(新业务,新需求)
老功能回归测试(老功能新需求)
小版本测试(功能点搞定)
大版本测试(大功能改动或者新增)
回归测试与新功能每次都要执行
专项测试可以每个大版本可测试一次
业务测试
价值
保证当前版本需求实现的正确性
保证产品业务长期的功能正确
保证交互和产品体验
验证方式
目前人工测试审查为主
自动化验证辅助
测试资产管理
测试用例维护与 bug 管理
管理系统:Jira、Redmine、TestLink、禅道
特性支持:bug、项目、用例、成员关联
测试知识管理体系
环境管理
数据管理
业务知识
常见自动化测试类型
流程自动化
打包自动化 Bash Jenkins
环境自动化 Bash Jenkins Docker
测试自动化
UI 测试自动化 Selenium Appium
接口测试自动化 RestAssured SoapUI HttpClient
专项测试自动化 LeakCanary BlockCanary Appetizer Proxy
多客户端 UI 自动化
UI 自动化分类
Web 自动化:Selenium
App 自动化:Appium
GUI 自动化:Windows , Mac
其他自动化:
原有技术延伸:微信小程序,headless 浏览器
更多平台:智能设备、机器人、工业 app
自动化的冒烟测试
monkey 健壮性测试
自动遍历+专项测试
LcakCanary 自动化监测内存泄漏
Buggly 等监测崩溃
blockCanary 监测卡顿
性能基线
耗电量基线
debug 与 test 版本的自动化冒烟测试
UI 自动化测试的瓶颈
技术成本高:
人力成本高:优秀测试开发工程师难招
技术门槛高:80%的自动化测试工程师在自动化能力上都不及格
维护成本高
复用率不高:UI 和业务流程变更是最主要变更
稳定性不足:容易干扰,执行慢
合理的使用 UI 自动化
策略改进方案
使用分层测试策略,控制 UI 自动化测试规模
少数核心用例交给自动化测试
大部分的基础回归测试交给自动遍历
新功能测试交给人工测试
技术改进方案
良好的维护模型:PageObject 或者其他更简单的封装
更好的框架支持:增加 Watch, 智能等待,失败重试等机制
自动化遍历测试
通过自动化遍历 app 中业务路径尝试发现问题的方法
是为了弥补现有自动化手段不足
UI 自动化维护成本问题
原有遍历工具可控性差 比如 monkey
我想要看的功能它就是不点
经常点到外部 app
经常点击到注销和退出
不支持复杂业务
常见遍历工具与技术
google android 原生 monkey
百度 smart monkey
腾讯 newmonkey
自动遍历的价值
降低自动化维护成本,可替代 80%的自动化测试
实现新功能的探索
实现老功能的回归
用途:多设备兼容性测试、自动化专项测试
评论