• 测试环境的简单理解


    测试环境的简单理解


    背景

    • 测试无法穷尽产品中的问题.
    • 测试的目标是保证产品的质量,力助实现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,不写安全问题,保不准,操作系统有,数据库有,中间件有,浏览器有.
    没有任何实在东西是绝对的.  只有变化才是永恒与绝对的.
    
    其实不应该害怕问题,前几天看国民党徐恩曾的故事就发现,越是掩盖问题,越会带来更大的问题.
    是问题就应该剖析, 作为编码规范的反面案例来培训.
    就像是美团技术分析问题一样, 对待问题应该层层抽丝剥茧, 让大家领悟到问题的本质与原因下一次才不会犯.
    上学时期的错题集就是这种目的. 错题集是需要常常拿出来看, 甚至留给下一代的学生看的. 
    高手不是不犯错误的人, 高手是能快速发现问题本质并且不会在同一个地方犯相同错误的人.
    希望产品越来越好,希望不用加班~
    
  • 相关阅读:
    UML 类与类之间的关系
    HTTP协议基础
    LDAP介绍
    UML 类与类之间的关系
    我的桌面
    RoR的OO与敏捷[1][88250原创]
    Ubuntu7.10纯仿Leopard[00原创]
    37个我爱Ruby的理由
    在Ubuntu 7.10上安装Rails[00整理]
    RoR的OO与敏捷[1][88250原创]
  • 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/16217400.html
Copyright © 2020-2023  润新知