维度 | 关键措施 |
---|---|
缩短反馈时间 | 测试金字塔下移、并发执行、数据准备优化、精准测试、用例瘦身 |
降低反馈成本 | 小型测试为主、逻辑隔离替代实例隔离 |
提高可信度 | 提升稳定性、代码/业务覆盖率、自动生成用例 |
缺陷逃逸率 = 测试发现Bug数 / (测试发现+线上发现)
(变更代码行数×线上Bug数)/1000
全链路功能根植于影子体系,按照之前的介绍,影子体系是通过影子标来标记影子流量、通过影子表保存影子体系数据的。影子表和正式表同库,表结构和线上保持一致,只是表名加前缀,如同影子一般,因此,存储在影子表中的数据被称作影子数据。
影子数据的生成:
全链路功能要提前验证大促招商的所有数据,涉及的影子数据是上亿级的,且是各库表的各种类型的数据,如何圈定线上数据,将线上数据迁移成可用的影子数据,并且不会对线上数据造成影响,就成为首先需要解决的问题。
影子数据平台是在解决这个问题的过程中诞生的,它构建了一条通道,将正式表的数据搬运到影子表中,产生可用的影子数据,影子数据的生成过程如图 2-7 所示。
影子数据的生成过程,并不是完全的复制过程。虽然有了影子表,有了中间件作为媒介透传影子表、识别影子流量
(小公司可以通过通过 X-Shadow-Test: true 等 Header 或 URL 参数标记压测影子数据,然后数据库影子表统一同步,读写数据都通过影子表来完成)
数据库执行 SOL 查询的时候,会先在缓存池中查询是否已经有结果,如果没有则会进入下面长长的解析、优化和计划执行等过程。因此如果能提前向缓存池中放入热 SQL 的执行结果,则能大大降低请求到数据库的处理响应时间。预热系统也可以同时预热多个单元的数据库实例,支持按照用户单元规则将热点数据进行路由。
(确实存在缓存,如查询 gps 数据能感觉到第一次查询很慢,有了缓存之后才快起来)
设想一下:当需要编写一个用户注册流程验证的自动化用例时,我们可以利用 SoloPi 的录制回放功能,按正常流程进行注册,这时 SoloPi 会同步生成一份 UI 操作自动化脚本。为了能够重复利用其间的注册信息,我们可以利用 Mock 功能将当次的请求数据保存下来同步关联到上述录制的脚本中,完成注册流程验证的自动化用例编写。同时为了后续能够定时执行,我们还可以将用例放置在云测平台上,设定定时执行时间和结果通知方式,这是一件多么惬意的事呀!
主要事在自动化,一机多控、性能、兼容性(不同机型不同策略)、android 或 ios 升级等方面、云测、mock 等方面展开
DDD(Deadline-Driven Development) 截止日期驱动开发
BDD 行为驱动开发
TDD 测试驱动开发
1)软件总会出错(人非圣贤)
2)测试不可穷尽
3)质量的设计出来的,不是测试出来的(比如 A 项目 1000 个 bug 修复了 到了 B 下项目也是 1000 个 bug 甚至更多 请问质量提高了吗)
服务端测试倾向于离效率更近一些,客户端测试倾向于离质量更近一些,因为服务端 Bug 更容易被修复。最后,工程能力的提升,会帮助我们找到新的平衡点。