鉴定一下软件测试热门词汇

鉴定一下软件测试热门词汇。

(本期以一个简单的电商平台举例,该平台有商品管理、购物车管理、订单管理、会员管理四个模块)

回滚

电商平台发布上线后,你熟悉的打开商品页面,进行线上验证。

But,f**k,数据加载不出来!

image-20210921095726694

当开发大哥挠掉几撮头发,依旧没有找到问题原因时,只能眼神呆滞地望着你,丢了一句:咱回滚吧……

image-20210921095615038

于是,为了确保业务稳定,开发大哥将代码切换回到上一个正常的版本。这个切换操作就称之为回滚——向前回到上一个稳定的版本。

脏数据

电商平台发布上线后,你熟悉的打开页面,进行线上验证。

这次要验证新增商品分类的功能,然而因为线上验证流程的不规范,你在新增分类名时,将其打成“测试test”。

这样的数据就叫脏数据——不符合环境规范的数据。

image-20210921100601549

如果用户看不到这条数据,还可以删数据挽回颜面;但如果看到了,并且产生了严重的影响,便会升级为线上事故,你得做好奖金被扣,亦或被辞退的准备。

空指针

你在电商平台购买了一块,却发现包裹是空的——包裹里没有“对象”。

image-20210921101353943

你写了两行JAVA代码:

int[] array = null; 
System.out.println(array[0]);

运行时报了空指针错误java.lang.NullPointerException

image-20210922112704384

img

这是因为,array是null,不会创建新的对象(无内存地址),故在调用这个数组时会产生空指针异常。

空指针——当调用的对象是空(一个指针不指向任何内存地址),而抛出的异常。

微服务

在传统的应用架构时,所有的系统都在一套代码上。

比如,开头提到的简单电商平台,它有商品管理、购物车管理、订单管理、会员管理四个模块。

试想,商品管理上新了一个功能,这套代码是不是要全量发布?你得拉着负责购物车、订单、会员管理的研发、测试一起加班上线,并且,一旦服务上线出现问题,其他服务也会跟着出问题。

微服务便可解决这类问题——将应用由原来的单体变成几十上百个不同的应用,应用间通过接口、消息等方式通信。

image-20210921103849135

此外,微服务化后,不必每个系统都用同一种编程语言实现,比如商品系统,你可以用Java写,购物车,你可以用Python写……

分布式

有了微服务的概念后,便能很好理解分布式。

将不同的应用部署到不同的服务器上,就叫分布式部署。比如,将商品系统部署到A服务器上,将购物车系统部署到B服务器上。

此外,将单个应用的各组件分开部署,也叫分布式部署。

比如,一个会员系统,它有数据库(管理增删改查会员数据),有前端页面(展示会员信息等样式),有中间件(收发消息,如订单完成,会通知会员系统给该会员增加积分)等等。也可以采取分布式部署,将这些组件部署到不同的服务器上。

image-20210921103726823

总的来说:

微服务是分散能力,即,可广义理解为将一个应用拆分为多个应用,它是一种设计方法。

分布式是分散压力,即,将服务部署到不同的服务器上,解决高并发类问题,它是一种部署方式。

集群

多台服务器部署同一个应用,便构成该应用的集群。

比如,有十台服务器部署的会员服务,那就叫会员系统集群。

image-20210921104002412

负载均衡

实现了分布式+集群,就必须考虑负载均衡。

还是拿会员服务举例。

假设一台服务器只能支持100个用户同时查看会员积分,但在双11时,同时有1000人查看会员积分,该怎么办?

image-20210921104214700

方法一:不增加服务器,让用户排队,先请求到的先查到,但是,你得处理10个批次,如果每个批次用时1s,那么有的用户可能会等待10s之久。

方法二:再增加9台服务器,支持1s内同时允许1000名用户查看会员积分。

一般来说,选择方法一的都是伞兵。但是,方法二仍旧有问题,如果这1000个用户,同时请求到一台服务器了,还不得回到原点?

这时,便需要负载均衡——你可以简单理解为将这1000个查询请求(将负载)平均(进行平衡)分到(分摊到)10台服务器(各个操作单元上)。

全链路

前面讲到了微服务,将单个服务拆分成多个系统,每个系统即独立运行,又相互关联。

那么,这些系统相互关联形成的流程链条,就称为全链路。

比如:登录会员—>查询商品—>将商品加入到购物车—>下单成功—>会员记录积分。

这样一个完整的流程,就是一个加购下单全链路。

image-20210921104402732

最后

咱们怀着欣慰的心情,学学如何写bug。

image-20210921142048454

image-20210921142938471

image-20210921143052620

image-20210921142644750

下回

攒够一波,再跟大家鉴定一下软件测试热门词汇。


测试奇谭,BUG不见。

大家好,我是谭叔。

节前,一位群友说她没接触过后端测试,不懂回滚、脏数据、空指针等词汇。于是,我安排了这篇文章。

image-20210921143231596

image-20210921144312305

当然,为了方便大家快速理解,有的地方,我讲得很浅、很片面,不过,你完全可以就着理解方向再去细化学习,以掌握到更多知识。

看到这里,有的人可能会问:作为一枚测试,我干嘛要关心这些词汇?

道理很简单:一名测试连待测系统“长”什么样子,都不知道,很不专业,会漏测很多东西。

比如,你测试的系统,线上环境数据库是读写分离的,有一个主库和多个从库,而测试环境为了节省资源,只配置了一个主库。那么,一些由主从延迟引发的业务问题,你就无法覆盖测试,或者说,你都不知道该怎么测试。

so,要不要了解,要不要学习,看你自己~

最后,如果你还有弄不懂的词汇,欢迎评论留言,下回攒够一波,再跟大家鉴定软件测试热门词汇。

image-20210921142522240

posted @ 2021-09-22 15:28  程序员小谭  阅读(391)  评论(1编辑  收藏  举报