测试环境的简单理解
背景
- 测试无法穷尽产品中的问题.
- 测试的目标是保证产品的质量,力助实现SLA,而不是保证没有问题.
- 测试应该尽可能多的发现问题,发现深层次的问题能够体现测试的功力的价值
- 测试应该了解代码,了解业务,了解环境,需要三方面的能力才能够更好发掘产品中的深层次问题.
- 业务是一切测试动作的源头,脱离业务去测试,最多只是实习生Level所为.
- 这次不讨论业务与代码, 简单讨论一下环境相关.
测试环境
测试环境分为多种:
0. 开发自测环境.
1. 功能测试环境.
2. 性能测试环境.
3. 安全测试环境.
4. 稳定性测试环境
5. POC测试环境
6. UAT测试环境
7. 准生产测试环境.
- 本次不讨论 单元,系统,验证回归测试环境, 他们与这个分类是两个维度.
测试环境
准生产环境:
数据流程尽量模拟现场实际数据, 需要做脱敏处理.
能够尽可能的发现特性的问题, 或者是用户特殊数据下的问题.
UAT环境:
一般为上线前的测试环境, ERP交付中入场节点到上线节点之间很大工作量在于UAT环境.
UAT类似于满足性测试,验证产品前期交付设定的内容是否满足客户的需求.
UAT测试更多的着眼于现在的需求, 有具体业务人员来分析使用.
UAT结束可以有一笔回款,也是很重要的一个流程节点.
POC测试环境:
一般为签单前准备环境, 需要从技术业务等多种角度满足客户的需求
主要着眼于未来, 而不是近期的需求.
从管办分离的角度:
UAT类似于办事员, 官吏中的"吏" 是事务人员关注具体工作的.
POC类似于管理员, 官吏中的"官" 是管理人员关注未来以及带来效益的.
这三类环境 一般与测试人员关系不大
更多的是 交付于客户打交道的部分.
测试环境
稳定性测试环境:
其实稳定性测试环境要求的主要是 环境参数以及功能压力的持续性.
5*8的业务和7*24小时的业务要求是不一样的.
关于国计民生的必须7*24,需要加入chaos混沌测试手段.
验证高可用等内容.
安全测试环境:
安全测试测试环境应该是raw安全验证.
尽可能多的不加安全防护措施,让攻击者能够尽可能多的发现问题.
根据安全测试的结果 在真正部署生产环境时予以重点加强.
没有绝对的安全, 只有将攻击的成本提高到高于收益才不会有人主动犯贱.
性能测试环境:
性能测试环境是一个面多加水,水多加面的过程.
每次加压力都必须测试出来一个具体的瓶颈,然后解决瓶颈验证更高的性能.
性能测试不仅要求了解软件,更应该了解各种开源组件还有硬件.
数据库,组件的调优设置, 硬件的要求以及调优
简单的比如 网卡的bond设置, CPU的affinity设置. Raid的设置与优化.
需要关注比如JVM参数,连接池参数,线程池参数等.
也需要差距一个特定并发量,数据量是的参数最优配置指南.
测试环境
要求:
仅需要能够满足测试需求,版本不能最高,性能不能很好.尽可覆盖最多的客户场景.
关于功能测试环境的配置, 如何尽可能多的发现问题:
其实这个Blog本身事是着昨天的文章来说如何发现串sessino的问题, 结果写跑题了.!-_-!
1. 内存配置不能太高:
应该取所有客户环境里面的中低档的配置.
这样的配置对内存泄漏等问题很敏感, 能够保证在测试环境数量不是很大的时候能够很快的发现问题.
千万不要将测试环境设置的比客户生产环境还要好.
测试环境的目的是发现问题, 而不是验证开发的代码没问题.
2. 关于连接池与线程池的配置:
建议与序列号一样, 够用就好, 需要在作死的边缘试探.
springboot的线程池其实是存在异常清理不干净时串session的问题.
数据库的连接池如果存在连接池泄漏,越小的连接池越容易再现问题.
所以测试环境应该本着够用就好的方案来. 这样才能够在代码出现异常时尽可能早和快的发现问题
比如如果有笛卡尔积,memory leak等情况, 低内存,低池化资源很容易就可以发现问题.
也能够很快体感到性能问题, 可以快速反馈.
3. 关于版本:
需要选择兼容性最差,最低与问题最多的系统来测试.
这样可以讲兼容性的工作放到平时,哪有什么岁月静好, 测试环境多扫雷.生产环境才好回款.
数据库与组件的版本, 补丁版本应该尽可能的低一些.
比如Oracle11g的表名不能超过32位,Oracle12c的可以是128位
SQLSERVER2016增加了SQL2012不支持的语法.
其实就应该选择客户选择最低的版本. 这样才不会自己的测试环境没问题,但是生产的环境有问题.
总结
只要是人写的东西都会有bug.
只要是技术都会有落后的那一天.
你自己不写Bug,不写安全问题,保不准,操作系统有,数据库有,中间件有,浏览器有.
没有任何实在东西是绝对的. 只有变化才是永恒与绝对的.
其实不应该害怕问题,前几天看国民党徐恩曾的故事就发现,越是掩盖问题,越会带来更大的问题.
是问题就应该剖析, 作为编码规范的反面案例来培训.
就像是美团技术分析问题一样, 对待问题应该层层抽丝剥茧, 让大家领悟到问题的本质与原因下一次才不会犯.
上学时期的错题集就是这种目的. 错题集是需要常常拿出来看, 甚至留给下一代的学生看的.
高手不是不犯错误的人, 高手是能快速发现问题本质并且不会在同一个地方犯相同错误的人.
希望产品越来越好,希望不用加班~