1. 测试行业的生存挑战:
- XP Scrum CI CD DevOps的流行加大了测试压力
- 原有质量保证体系从理论到技术思想已经全面落伍,缺乏工程化体系建设
- 互联网发展快,导致测试工程师跟不上发展速度
- 现有的知识体系缺乏完整的梳理和总结,导致新人学习困难且不成体系
- 网络和培训结构充斥着过时、落伍的知识体系
- 研发工程师也在进入质量保证和测试领域,研发主导就更不会招聘技术落后的测试工程师
- 部分测试服务公司鼓吹独立测试团队无存在的必要
2 .移动互联网服务架构
用户通过客户端/小程序/H5发起各种各样的网络请求发送给服务端。API网关通过分流实现流量均衡到达后段的服务集群
BI:大数据分析
3. 项目实施的关键过程
需求:项目团队对需求进行沟通、评审
设计:开发人员制定设计方案,并进行评审
研发:开发人员实现需求,并通过单元测试、代码审计、冒烟测试(手工+自动化)交付给测试人员
测试:服务端测试(接口测试、性能测试、安全测试)、客户端测试(UI验收、功能测试、性能测试、兼容性测试、安全测试)完成,交付产品
敏捷:需求->研发->测试。偏需求管理的实践
持续集成:研发->测试,自动化构建,自动化测试,不断进行迭代
DevOps+持续交付:研发->测试->交付。
质量监控:交付->测试。测试可以通过对线上产品已有数据的收集,实现质量监控
业务监控:交付->研发。研发用来监控一些业务的成功率及业务的基础数据,偏自身业务
运营统计:交付->需求。交付反馈到产品经历,如友盟,SDK
4. 质量保证工作实施的三大阶段
4.1 研发阶段的质量保证
4.1.1 研发工程师的交付物
* 设计文档:需求文档、设计文档、接口文档 * 代码:Java、python * 数据:SQL Mysql PG索引文件 * 可部署的产品:构建的二进制包、联调环境
4.1.2 研发阶段常见的质量保证手段
4.1.2.1 代码评审(code review)
- 定义:指对计算机源码系统化的审查、常用软件同行评审的方式进行,其目的是在找出及修正在软件开发初期未发现的错误,提升软件质量及开发者的技术。代码审查常以不同的形式进行,例如结对编程、非正式的看过整个代码,或是正式的软件检查。
- 价值点
* 代码规划约束,培养良好的代码习惯和追求
* 深入了解业务,实现知识和规划的传承
* 沟通设计思路并改进,互相评审防止代码烂设计进入 - 行业观点和落地
* 行业经验普遍认为代码评审是最有效的质量保证手段
* 借助标准的代码管理工具即可,比如gitlab的pr机制
* 整个过程测试工程师参与度低
4.1.2.2 代码审计
- 定义:是一种以发现程序错误、安全漏洞和违反程序规范为目标的源代码分析。是防御性编范式的一部分。该范式的目标是在程序发布前减少错误。
4.1.2.3 单元测试
- 定义:是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法。
4.1.2.3 自动化冒烟