导读,先从云化说起,再谈谈云化形态下,除了常规的功能测试,云化的测试,还需要有几个必须要get到的硬核指标,最后在分别详解这些关键点硬核指标是什么,和如何测试呢。这是个值得深思的问题,希望所有测试人都get 到这些,且比贴子说提到的做得更多,提炼出更多 check point。

先回顾一下云化的掘起之大势

当下oracle裁掉整个中国研发中心,正闹得沸沸扬扬,一关键原因是,oracle受云计算等新兴技术冲击,自身业务成长乏力甚至下滑,所以更关注成本控制,从而进行战略性人事调整,为云计算腾出更多资源;今天,阿里云已超越微软Azure,成为仅次于亚马逊AWS的世界第二大云计算公司,10年前在百度和腾讯都不看好的情况下,马云认为云计算是未来,每年投入1亿,不知道猴年马月咸鱼翻身的情况下,马云就这样投了王坚的阿里云10年,最后真的把马化腾说要1000年才做成的事给办了!但是当时全中国没有一家公司愿意投入云计算这种“虚无缥缈”的事业中,最艰难的时候,80%的工程师因各种原因离开了阿里云,十年前的王坚博士,在很多人眼中就是一个不折不扣的“骗子”。

早期云厂商,主要提供的云资源偏重于iaas 层,当前随着云计算的深入发展,从iaas,到paas ,serverleess  加容器技术,已经成为云厂商标配产品,云化是一个不可逆转的趋势,已被大众所接受,当然受一些非技术因素的限制或是一些历史包袱的限制,混和云,多云和公有云一道将长期存在。越来越多的公司把服务放在云端,小公司可能只是仅仅把服务搬到云端(也就是把先前的本部署,搬到云端),实际上这是不真正的云计算,当然容灾备份能力有质的提升,saas 厂商,或是大厂商,会在云厂商的pass 平台上,构建一个胶水层, 整合PAAS和SAAS形成自己的云管理平台,透明实现弹性计算,横向扩展和可视化运维监控等非功能性的管理需求。

云化测试这些非功能性必测的硬核关键点必须get 到 

这些非功能性硬核关键点和云计算的特性有着必然的关系,同时也和服务的可靠性,服务的计量和治理有着密切的关系。简单来说你要保证你的云服务的可靠性,可用性,可管理性,必须具有一些云化后的非功能性指标,因为你业务功能再好用,不可靠,对用户来说是没有保障的,如下8个硬核点就是云化的非功能指标,后续一节再分别讲述,这些硬核点的的定义以及如何来测试这些点,特别是第1,第2,第3,这三个缺一不可,否则你的软件只是搬到云端,并不具备任何云计算的特性,也就是假云。

第1弹性,也叫自动伸缩;

第2,服务无状态;

第3 ,多租户支持;

第4,故障转移/隔离;

第5 ,服务限流保护;

第6 ,应用安全;

第7 ,调用链追踪,

第8 ,可视化服务治理(可观测,可自动健康检查,服务优雅关闭等)

用一个示例来说明8个硬核点以及测试方法或手段

下图是一个在aws,建一个VPC  且通过VPN和本地服务组成一个混合云的网络架构图,

创建4个子网,分别用于部署:租户注册 Web程序、数据库、进销存 Web程序、进销存 App程序;,为了实现高可用性,每种类型的子网按照可用区各创建a、b两个。

租户注册成功后,调用CloudFormation接口,自动部署的云进销存业务系统。(实际是物理隔离)

再回到前述8个硬核指标

第1弹性,也叫自动伸缩

说起弹性,先从常说的云服务器,ecs 说起,它就是Elastic Compute Service的缩写 ,是一种处理能力可弹性伸缩的计算服务器,这是从IAAS (更偏硬件资源:CPU,内存,磁盘,网络)层来实现弹性,这解决了硬件或是底层资源的弹性;实际从提供云服务的软件层现来看,还要有软件自身的弹性也就是saas或是paas层的弹性,例如,需要根据时间或是其他的策略(基于流量,或是硬件资源的特定基线)横向扩展,如高峰期,挂号服务需要10个节点才能保证支撑高峰期的并发量,非高峰期,再减少挂号服务节点,腾出计算资源做其他事情。在云上,实现集群节点的扩展是很简单的事,配置好扩展策略即可。测试的时候, 必须把弹性作为一个check point ,如何验证,从前面其定义就能明白,这里就不再重复了。现在问题来了,动态扩的服务,如何让集群感知,且可用呢,请看如下第2项

  第2,服务无状态;

接上一个问题,动态扩的服务,如何让集群感知,且可用呢?让集群感知有两个办法,一是服务在横扩的时候,向ELB(负载均衡)动态注册(如果扩展了节点,需要手动配置并重启负载均匀相关组件,这不叫弹性),或是通过服务发现注册组件来实现,这有很多成熟的技术,这里就不多说明,重点是,新横扩出来的服务,加到集群后,要让他能对外提供服务,这要求服务是无状态的 ( 比如会话session ,或其他上下文,不依赖服务所在属主容器,如tomcat ,jetty,weblogic ,iis等),否则某个请求被路由到新扩的服务节点时,可能会为因为会话或上下文的问题,导致服务在业务上不可用。测试的时候, 必须把服务无状态作为一个 check point,如果服务实现方,是通过在负载均衡上通过“ 黏住” 策略,来实现会话共享,的话,有一个大问题,当服务节点减少,或是某些服务节点挂掉时,之前这些服务节的服务的客户端后续的请求,转移到其他节点,session 就会丢失,通常做法是,把session或上文下外置在服务线程所在容器(tomcat ,jetty,weblogic ,iis等)之外,如memcache 中,redis 中。

如何验证这个无服务的检查点呢?假定是一个Web 程序,通过关闭单一节点,再重启检查,是否为同一个session。测试这个完全可以在非云环境来验证,用一个单单一节点来测试(非集群模式),比如先登录,进入到某页面,且准备做某个对session 有依赖的操作,这时,停下正要操作的功能,先停掉这个节点,然后重启这个节点,,重启后再在之前登录的页面上,接着做这前的作操作,并没有提示要重登录,或是session过期,操作成功,可以验证;当然也可以用两个节点来验证(集群模 式),每个节点上,放两个相面的页面,在上面,打印出session id ,以及节点的名称,先请求这页面,记下打印的session id 及节点名,关掉任意一个节点,再刷新这页面,看看打印的session id 一样不,如一样,只是节点名变了,说明服务是无状态的。还有其他方法,这里只是抛砖引玉,提供一下思路。如纯后台API ,只要检认证信息是否过期,或是是否是同一个认证信息。

第3 ,多租户支持;

既然是云上的服务,必须要求不同的客户(租户/单位/组织)都能使用,且互不影响,实现多租户,通常有两种隔离方式,逻辑隔离和物理隔离;逻辑隔离指,大家其用一套系统,只是在数据库层在表中加一个字段,数据所属租户;物理隔离,这每个租户单独部一套系统。测试的时候, 必须把多租户支持作为一个 check point,测试方法,通过对隔离的阐述,自然就知道如验证,支不支持多租户,以及是以什么方式隔离。上面示例中,租户注册成功后,调用CloudFormation接口,自动部署的云进销存业务系统,这实际是物理隔离。

第4,故障转移/隔离;

云服务,一定会有出故障的时候,为了保政故障产生的影响最小,必须有应对故障的策略,故障转移也分两个层面的,,一个是IAAS层的,一个是业务服务自身的故障转移。如整个系统宕机,或是有故障,利用镜像,自动重新实例化一个实例,只是网络属性未变,这是IAAS层面的,在PAAS看来,实际是和之前是无差别的,相当于,传统方式下,快速启用冗余或备用的服务器、系统、或者硬件接替它们工作;另一个是软件层面,业务服务系统,在服务不可用时,支持的重试逻辑,同时支持重试,就要求保持幂等性(简单说,对同一个数据做同一个操作,做一次和做N次,结果是一样的),或对出错的服务进行隔离,不隔离会引发雪蹦效应,或是采用服务降低的错施。一句话,测试的时候, 必须把故障转移/隔离作为一个 check point, IAAS层的转移,只需向云厂商确认即可,基本上云厂商这层面都已实现,软件方面的故障处理,需要根据隔离策略来执行相应的测试,细节具体根据具体应用再详查,主要是不要漏过这个测试点。

第5 ,服务限流保护;

既然是公有云,面向的是所有你的客户,某些情况下,访问量会爆增,或是受到恶意的访问攻击,这时服务的可靠性,隐定性也必须得到保障,通过对并发访问/请求进行限制或者一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务或者排队等待,从而使服务不会引过多的访问而崩溃,这就是限流。

测试方法,通过压测,或是增加到并发量,到系统支持的极限后,系统有没有因访问量太大而崩溃。测试的时候, 必须把服务限流保护作为一个 check point

 第6 ,应用安全;

       服务放云上,面向整个互连网,除了要应对恶意的攻击,还要防止服务器被劫持,还要保证数据安全,和授权内访问等等,安全是一个很专业的一个方向,测试的时候, 也必须把安全作为一个 check point, 测试人员在这方面,只能做一些常规的安全测试,如SQL 注入,XSS跨站攻击,敏感信息是否明文传输, API的访问是否要通过验证,一些等存级别高的业务,还需要双向认证,甚至实名认证等,其他的则需要请专业的安全公司进行全面的安全测试,他们能扫描出系统存在的安全漏洞和不安全的因素,并给出好的整改建议

第7 ,调用链追踪,

这要看服务是否是一个分布式应用,分布式应用中,系统存在互相调用的情况,形成一个 调用链,通常一个请求,会引发A组件,调用B,组件,B组件调用C ,C调用D,可能还有更长的调用链,实话说,调用链追踪,有点偏向于运维,在测试时,分布式环境下,不借助调用链追踪有些问题根本没法定位,比如说,某个请求出错了,实际是错调用链的哪个节点上,或是某个功能很慢,慢在哪,不借助于调用链追踪,你都没办法跟程序,就算让研发自己打断点,也要搞死人的,分布式加集群,同一个服务,每次调用时,调用链都可能不一样。上云的应用,通常是分布式用,作为测试人员,也有必要把调用链追踪作为一个 check point,才能在分布式场景下,提出定位更准,更专业的问题,而不只在BUG的表像上。开源调用链追踪有zipkin,pinpoint,skywalking等。调用链跟踪需要研发那边来集成,测试这边要get到这个点和会使用。下图是昨天用zipkin 的一个截屏示例

第8 ,可视化服务治理(可观测,可自动健康检查,服务优雅关闭等)

       服务治理,也是偏运维的东东,他自身的定义,各位可以自行百度;在这里,我只简单场景上来说明,服务治理的大概意思,你的服务在云上,可靠性要有保障,主要在于预防,不能抓瞎,真正问题发生了,就炸锅了,需要通过可视化的方式,观测到服务的状态,健康状态,流量情况,响应速度,并发量,资源使用情况等,并根据于些,采用自动或半自动的方式启动弹性扩展,或是采取隔离,熔断等措施,以保障服务的可用性。在devOps 大行其道的当下,测试人员向运维多靠一点不是坏事,会给测试提供更多灵感和带来更多测试手段。云上的服务。服务优雅关闭,顺带提一下,要关闭某个服务时,正在服务中运行相关业务线程会同进被关掉,也就意味着这些业务操作肯定要失败,与之相反服务优雅关闭,指在关闭前,他会拒绝新的进求进来,同时要完成当前的所有业务后,才关闭,有点像银行的窗口,不接受业务了,但要把当前正办理的业务处理完。测试人员以此作为一个 check point ,可用来验证云服务实现水平的高低,又能为服务的可靠性测试提代相关测试手段/方法,这个点也要get 到。

总结来说,就是测试云上应用,除了业务功能自身的测试,还要测试上述提到的8个非业务功能硬核点,特别是前3点,是区分真云,假云最关键点;云化绝对是不可你逆转的趋势,测试人的相关观念也要以时具进,才能跟上发展的需要。当然个人水平有限,认知有限,论述后可能会存在偏颇之处,欢迎拍砖和补充。itest 测试技术团队,一直关注测试新技术,新前沿,并以itest 开源管理测试软件作为理念的落地实现,itest ,是一款汇聚10年经验,流程驱动测试的开源的测试管理软件,是我们测试人自己开发测试管理软件,体现我们对测试的情怀,是最懂测试人的开源测试管理软件新秀  ;Itest 开源团队成员由来自对软件测试有情怀,热衷于开源,又热心传播分享我们测试理念的一群人组成。(流程驱动开源测试管理软件新秀官网)

上云测试,这些关键点你get 到没有的更多相关文章

  1. [转帖]上云测试,这些关键点你get 到没有

    上云测试,这些关键点你get 到没有 https://www.cnblogs.com/mypm/p/10852656.html?tdsourcetag=s_pcqq_aiomsg sticky 还有s ...

  2. 移动APP云测试平台测评分析

    随着智能手机的普及率和渗透率越来越高,App开发软件也越来越多.有专家预测,2017年的App应用下载量将会突破2500亿,整个移动科技市场规模将会达到770亿美元.身处在这个"移动&quo ...

  3. Testin云测试平台初体验

    这几天偶然接触到了一个叫做Testin的云测试平台,经过一番体验,感觉还是不错的,因为里面提供了大量的测试机型,可以针对Android手机的严重碎片化现象做出比较全面的测试,同时Testin的测试内容 ...

  4. 传统业务上云:跨AZ容灾架构解析

    本文由  网易云发布. 数字化转型浪潮之下,采用云计算服务提升业务敏捷性.降低运维成本,成为了传统企业的优选方案.网易云资深解决方案架构师张亮通过某物流企业客户的实际案例,分享了传统业务系统在云上的架 ...

  5. 从DevOps到Cloud Native,应用上云姿势全解锁

    本文由  网易云发布. 作者:林帆 序文 伴随着IaaS.PaaS等云端基础设施技术的成熟,“应用上云”成为许多企业软件部门的心头大事.通过把传统软件系统搬到云上,一方面可以让业务方获得更多的资源灵活 ...

  6. 上云、微服务化和DevOps,少走弯路的办法

    本文由  网易云发布. 作者:张亮 如果说一个项目的发展历程就像一段未知的旅程,那<云原生应用架构实践>就像一张地图,基于前人的探索标明了在这段旅途中将会碰到的障碍,并注明了越过这些障碍的 ...

  7. 硬核评测:企业上云的极速存储挑战,华为云全新极速IO云硬盘性能评测

    来源:至顶网 作者:董培欣 借助华为云全新一代极速IO云硬盘开启邀测的时机,至顶网评测实验室展开了一次华为云极速IO云硬盘与超高IO云硬盘的性能对比测试活动,并且尝试通过相关测试成绩,对云硬盘的应用能 ...

  8. 腾讯云-ASP.NET Core+Mysql+Jexus+CDN上云实践

    腾讯云-ASP.NET Core+Mysql+Jexus+CDN上云实践.md 开通腾讯云服务器和Mysql 知识点: ASP.NET Core和 Entity Framework Core的使用 L ...

  9. 应用上云新模式,Aliware 全家桶亮相杭州云栖大会

    全面上云带来的变化,不仅是上云企业数量上的攀升,也是企业对云的使用方式的转变,越来越多的企业用户不仅将云作为一种弹性资源,更是开始在云上部署架构和应用,借助 Serverless 等技术,开发人员只需 ...

随机推荐

  1. easyui权限

    实现权限目的: 是为了让不同的用户可以操作系统中不同资源 直接点说就是不同的用户可以看到不同的菜单 我们先来看下3张接下来用到的数据表 1.菜单表(t_easyui_menu) 2.用户菜单中间表(t ...

  2. Java JDK 运行环境安装

    1 Windows系统 1.1 安装包准备 安装包本文档讲解为64位系统,如果是32位系统需要下载32位系统安装包 1.1.1 下载方式 打开jdk官方下载地址,该文档提供jdk版本为1.8 http ...

  3. jwt揭秘(含源码示例和视频)

    JSON Web Tokens,是一种开发的行业标准 RFC 7519 ,用于安全的表示双方之间的声明.目前,jwt广泛应用在系统的用户认证方面,特别是现在前后端分离项目. 1. jwt认证流程 在项 ...

  4. go 爬虫

    package main import ( "fmt" "io" "io/ioutil" "net/http" &quo ...

  5. javaagent的实现

    实现javaagent功能的是一个叫做instrument的JVMTIAgent(linux下对应的动态库是libinstrument.so),另外instrument agent还有个别名叫JPLI ...

  6. Paper | Compression artifacts reduction by a deep convolutional network

    目录 1. 故事 2. 方法 3. 实验 这是继SRCNN(超分辨)之后,作者将CNN的战火又烧到了去压缩失真上.我们看看这篇文章有什么至今仍有启发的故事. 贡献: ARCNN. 讨论了low-lev ...

  7. geth 基本使用

    概要 geth 是以太坊的官方 golang 客户端. 通过 geth 的使用可以直观的了解以太坊, 乃至区块链的运作. 下面, 通过 geth 来构造一次搭建私链, 创建账户, 挖矿, 交易的流程. ...

  8. 深圳龙华有轨电车BIM项目

    本项目是“龙华有轨电车BIM+GIS运维管理平台“研发组成的内容之一,包含站台.电车.变电所等模型绘制. 龙华区有轨电车是深圳市的一条位于龙华区的有轨电车线路,项目规划了三条线路,总长51公里.试验线 ...

  9. mybatis的参数传递

    mybatis的参数传递分为两种:1.单参数传递  2.多参数传递 单参数 mybatis会直接取出参数值给Mapper文件赋值 例子如下: 1.Mapper文件内容如下: public void d ...

  10. Mysql相关问题-----1045 Access denied for user 'root'@'localhost' (using password: YES)报错

    MySQL 连接错误,使用Navicat连接MySQL出现错误:1045 Access denied for user 'root'@'localhost' (using password: YES) ...