鉴定一下软件测试热门词汇
鉴定一下软件测试热门词汇。
(本期以一个简单的电商平台举例,该平台有商品管理、购物车管理、订单管理、会员管理四个模块)
回滚
电商平台发布上线后,你熟悉的打开商品页面,进行线上验证。
But,f**k,数据加载不出来!
当开发大哥挠掉几撮头发,依旧没有找到问题原因时,只能眼神呆滞地望着你,丢了一句:咱回滚吧……
于是,为了确保业务稳定,开发大哥将代码切换回到上一个正常的版本。这个切换操作就称之为回滚——向前回到上一个稳定的版本。
脏数据
电商平台发布上线后,你熟悉的打开页面,进行线上验证。
这次要验证新增商品分类的功能,然而因为线上验证流程的不规范,你在新增分类名时,将其打成“测试test”。
这样的数据就叫脏数据——不符合环境规范的数据。
如果用户看不到这条数据,还可以删数据挽回颜面;但如果看到了,并且产生了严重的影响,便会升级为线上事故,你得做好奖金被扣,亦或被辞退的准备。
空指针
你在电商平台购买了一块,却发现包裹是空的——包裹里没有“对象”。
你写了两行JAVA代码:
int[] array = null;
System.out.println(array[0]);
运行时报了空指针错误java.lang.NullPointerException
。
这是因为,array是null,不会创建新的对象(无内存地址),故在调用这个数组时会产生空指针异常。
空指针——当调用的对象是空(一个指针不指向任何内存地址),而抛出的异常。
微服务
在传统的应用架构时,所有的系统都在一套代码上。
比如,开头提到的简单电商平台,它有商品管理、购物车管理、订单管理、会员管理四个模块。
试想,商品管理上新了一个功能,这套代码是不是要全量发布?你得拉着负责购物车、订单、会员管理的研发、测试一起加班上线,并且,一旦服务上线出现问题,其他服务也会跟着出问题。
微服务便可解决这类问题——将应用由原来的单体变成几十上百个不同的应用,应用间通过接口、消息等方式通信。
此外,微服务化后,不必每个系统都用同一种编程语言实现,比如商品系统,你可以用Java写,购物车,你可以用Python写……
分布式
有了微服务的概念后,便能很好理解分布式。
将不同的应用部署到不同的服务器上,就叫分布式部署。比如,将商品系统部署到A服务器上,将购物车系统部署到B服务器上。
此外,将单个应用的各组件分开部署,也叫分布式部署。
比如,一个会员系统,它有数据库(管理增删改查会员数据),有前端页面(展示会员信息等样式),有中间件(收发消息,如订单完成,会通知会员系统给该会员增加积分)等等。也可以采取分布式部署,将这些组件部署到不同的服务器上。
总的来说:
微服务是分散能力,即,可广义理解为将一个应用拆分为多个应用,它是一种设计方法。
分布式是分散压力,即,将服务部署到不同的服务器上,解决高并发类问题,它是一种部署方式。
集群
多台服务器部署同一个应用,便构成该应用的集群。
比如,有十台服务器部署的会员服务,那就叫会员系统集群。
负载均衡
实现了分布式+集群,就必须考虑负载均衡。
还是拿会员服务举例。
假设一台服务器只能支持100个用户同时查看会员积分,但在双11时,同时有1000人查看会员积分,该怎么办?
方法一:不增加服务器,让用户排队,先请求到的先查到,但是,你得处理10个批次,如果每个批次用时1s,那么有的用户可能会等待10s之久。
方法二:再增加9台服务器,支持1s内同时允许1000名用户查看会员积分。
一般来说,选择方法一的都是伞兵。但是,方法二仍旧有问题,如果这1000个用户,同时请求到一台服务器了,还不得回到原点?
这时,便需要负载均衡——你可以简单理解为将这1000个查询请求(将负载)平均(进行平衡)分到(分摊到)10台服务器(各个操作单元上)。
全链路
前面讲到了微服务,将单个服务拆分成多个系统,每个系统即独立运行,又相互关联。
那么,这些系统相互关联形成的流程链条,就称为全链路。
比如:登录会员—>查询商品—>将商品加入到购物车—>下单成功—>会员记录积分。
这样一个完整的流程,就是一个加购下单全链路。
最后
咱们怀着欣慰的心情,学学如何写bug。
下回
攒够一波,再跟大家鉴定一下软件测试热门词汇。
测试奇谭,BUG不见。
大家好,我是谭叔。
节前,一位群友说她没接触过后端测试,不懂回滚、脏数据、空指针等词汇。于是,我安排了这篇文章。
当然,为了方便大家快速理解,有的地方,我讲得很浅、很片面,不过,你完全可以就着理解方向再去细化学习,以掌握到更多知识。
看到这里,有的人可能会问:作为一枚测试,我干嘛要关心这些词汇?
道理很简单:一名测试连待测系统“长”什么样子,都不知道,很不专业,会漏测很多东西。
比如,你测试的系统,线上环境数据库是读写分离的,有一个主库和多个从库,而测试环境为了节省资源,只配置了一个主库。那么,一些由主从延迟引发的业务问题,你就无法覆盖测试,或者说,你都不知道该怎么测试。
so,要不要了解,要不要学习,看你自己~
最后,如果你还有弄不懂的词汇,欢迎评论留言,下回攒够一波,再跟大家鉴定软件测试热门词汇。