测试流程及知识体系
前言:做了很久测试,但是却越来越不知道自己需要会什么技能了,也感觉自己不会的东西越来越多,下面记录下,也是从别处看到的。
一、测试框架的演变
1.敏捷
2.持续集成
jenkins更新代码仓库,构建,执行单元测试,代码静态分析,多个模块测试
代码管理 Git
代码分析 FindBugs Sonar 给jar包也可以
单元测试 Junit
持续集成管理 Jenkins
独立的集成测试
独立的测试环境管理
独立的人工测试过程
3.DevOps+持续交付 与 环境自动化部署
代码管理 Git
代码分析 FindBugs Sonar
单元测试 Junit
持续集成管理 Jenkins
自动化环境构建:Docker
自动化测试、研发、预发布环境管理:Chef、Puppet、Docker
独立的人工测试过程
4.持续部署
代码管理 Git
代码分析 FindBugs Sonar
单元测试 Junit
持续集成管理 Jenkins
自动化环境构建:Docker
自动化测试、研发、预发布环境管理:Chef、Puppet、k8s
独立的人工测试过程
灰度发布:灰度发布a/b测试 把线上流量引导到测试环境。放少量人,放落后地区,放年龄,或者a/b版本
质量监控:全链路分析、统一监控平台,性能问题。奔溃日志
二、测试知识体系的搭建
第一层:编程能力
1.底层语言:java
2.高层语言:python
3.领域语言:shell,SQL,docker
4.领域技术掌握:Linux,android,ios
5.算法与数据结构:堆栈,链表,二叉树
第二层:自动化能力
前台自动化:
selenium,appium,ATX,STF
UIAutomator,WebDriverAgent
服务端接口测试:
java:HttpClient、restAssured
python:Requests,httprunner
性能测试:Jmeter,nGrinder,Gating,Locust
第三层:测试框架深入理解能力
1.Appium的框架原理是什么?有没有做过二次开发
2.如何并发运行测试用例,测试用例的顺序如何控制
3.如何自定义Appium
4.测试报告如何定制,用例覆盖度如何
5.跨多端平台的用例如何维护
6.端到端测试如何做,如何利用mock解决APP数据依赖问题
部门的架构是什么样子的,技术栈用的是什么
第四层:问题定位白盒测试能力
静态分析能力
静态扫描工具:FindBugs,Sonar
编译器分析技术:gcc,javac,IIvm
插桩技术:jacoco
动态分析能力:
第五层:架构能力与管理
架构能力
自研工具:测试框架与工具、WDA、Diffy/Qunit
平台构建能力:测试管理平台、DevOps/持续交付流程管理平台
开源平台与工具:Jenkins、Jenkins X、BlueOcean/K8s,容器管理技术
数据平台:ELK、Hadoop/Spark/tensorFlow大数据分析能力
质量管理
SCM版本管理体系
质量保证流程与文化建设
问题推动与解决能力
三、互联网测试体系
测试左移:研发阶段的质量保证
测试:测试阶段的测试流程
测试右移:发布后的质量监控(大数据分析)
测试阶段的测试流程
内部交付:jenkins自动打包,提供内部网站下载入口
灰度交付:使用fir.im bugly tstflight服务
正式交付:Android:渠道包打包推送
ios:上传到app store
常见后端发布机制
代码编译和发布包构建
后端打包:mvn rpm docker
移动端打包:gradle cocospod
环境构建
docker
jenkins等自动构建和部署平台
测试推送
后端升级自动触发接口测试
测试结果自动推动到运维平台决策
建立测试的准入机制
冒烟测试通过
基本的测试checklist 和手段
功能测试:业务测试、回归测试
非功能测试:性能测试、专项测试
测试左移:代码分析,代码审计 sonarqube平台
测试右移:质量监控
合理的测试安排
新功能测试(新业务、新需求)
老功能回归(老功能和需求)
小版本测试(功能点搞定)
大版本测试(大功能改动或者新增)
回归与新功能测试每次都要执行
专项测试可以每个大版本可测试一次