软件测试周刊(第20期):恐惧,来自只思考却不行动

Posted 毕小烦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试周刊(第20期):恐惧,来自只思考却不行动相关的知识,希望对你有一定的参考价值。

这里记录过去一周我们看到的软件测试及周边的行业动态,周五发布。

本周刊开源(GitHub: SoftwareTestingWeekly ),欢迎提交 issue,投稿或推荐软件测试相关的内容。

科普

元宇宙

image.png

元宇宙的概念最近非常火,虽然这三个字我们都认识,但连起来,还真不知道是什么意思。

其实,元宇宙的英文名叫 Metaverse,由 meta (超越/元)和 Universe (宇宙)结合而成。

Metaverse 的概念源于美国作家 Neal Stephenson 于 1992 年出版的科幻小说《雪崩》。

简单来说,

就是现实世界中的所有人和事都被数字化投射在了这个云端世界里,你可以在这个世界里做任何你在真实世界中可以做的事情。

比如在上边跟家人朋友吃饭逛街、用虚拟 Facebook 社交、刷虚拟亚马逊商店购物等等。

与此同时,你还可能做你在真实世界里做不到的事情,

比如瞬移到阿尔卑斯山滑雪,跟相隔千里之外的朋友一起买票去听场虚拟周杰伦开的演唱会。

需要注意的是,Metaverse 并不是有且只能有一个平行于现实的虚拟世界,它可以是多个虚拟世界同时存在。也就是说,任何公司都可以来构建一个虚拟世界,Facebook 可以构建一个虚拟游戏世界,迪士尼可以构建的一个虚拟游乐园,亚马逊可以构建一个虚拟购物世界...

但 Metaverse 的最终形态是,这些世界要能够互联互通,还要存在一套能够统一运作的社会、经济系统。

如果你看过斯皮尔伯格导演的电影《头号玩家》,应该能比较好的理解上面的内容。

参考资料:

文章

1. 你应该知道的 6 种数据脱敏方案

序员内点事

image.png

什么是数据脱敏?

数据脱敏也叫数据的去隐私化。通过我们给定的脱敏规则和策略,对敏感数据比如 手机号银行卡号 等信息,进行转换或者修改的一种技术手段,目的是为了防止敏感数据直接在不可靠的环境下使用。

比如在淘宝买东西订单详情中,商家账户信息会被用 * 遮挡,保障了商户隐私不泄露,这就是一种数据脱敏方式。

数据脱敏又分为静态数据脱敏(SDM)和 动态数据脱敏(DDM)。

静态数据脱敏(SDM):

  • 将用户的真实 姓名手机号身份证银行卡号 通过 替换无效化乱序对称加密 等方案进行脱敏改造。
  • 适用于将数据抽取出生产环境,脱敏后分发至测试、开发、培训、数据分析等场景。

如下图所示:

image

动态数据脱敏(DDM):

  • 访问敏感数据时实时进行脱敏,因为有时在不同情况下对于同一敏感数据的读取,需要做不同级别的脱敏处理,比如不同角色、不同权限所执行的脱敏方案会不同。
  • 一般用在生产环境。

注意

脱敏时也需要保持原有的数据特征、业务规则和数据关联性,保证在开发、测试以及数据分析类业务不会受到脱敏的影响。

一句话:你爱怎么脱就怎么脱,别影响我使用就行

数据脱敏方案

image

数据脱敏的方式有很多种:

  • 无效化:通过对字段数据值进行 截断加密隐藏 等方式让敏感数据脱敏,使其不再具有利用价值。
  • 数据替换:与无效化处理相似,不同的是这里不以特殊字符进行遮挡,而是用一个设定的虚拟值替换真值。
  • 随机值:字母变为随机字母,数字变为随机数字,文字随机替换文字的方式来改变敏感数据。
  • 对称加密:通过加密密钥和算法对敏感数据进行加密,密文格式与原始数据在逻辑规则上一致,通过密钥解密可以恢复原始数据。
  • 平均值:针对数值型数据,先计算它们的均值,然后使脱敏后的值在均值附近随机分布,从而保持数据的总和不变。常用在统计场景。
  • 偏移和取整:通过随机移位改变数字数据,偏移取整在保持了数据的安全性的同时保证了范围的大致真实性,比之前几种方案更接近真实数据,在大数据分析场景中意义比较大。

最后,

数据脱敏规则在实际应用中往往都是多种方案配合使用,以此来达到更高的安全级别。

2. 浅谈如何进行埋点质量管理

五花肉

image.png

图片来自:https://www.sohu.com/a/411479736_716346

埋点数据作为日常数据最重要的三大来源之一(另外两个是:业务数据和对外合作数据),其重要性不言而喻。上能影响推荐、AB 实验、数据分析的准确性;下能影响仓库的结构设计和日常维护成本。

常见的埋点质量问题有哪些?

环节

问题点

需求阶段

  1. 埋点需求不合理或触发逻辑不清晰,增加了需求沟通成本,也提高了出错的概率。
  2. 埋点结构设计不合理。

开发阶段

  1. 埋点开发过程导致的漏埋。
  2. 数据类型 string、int 等类型随意定义。
  3. Null、undefined、"" 随意定义。
  4. 字段命名规范不统一:版本前后同一个参数用不同的 Value 代替。

数据传输阶段

  1. 触发逻辑异常导致数据重复上报。
  2. 传输故障导致数据丢失。

那么如何保证埋点质量呢?

01 抓意识

任何一个组织创建时都需要有一个文化或者信念,在做事的时候可以时刻提醒自己。所以在质量管理的第一个重要角度是意识。

对于执行层:

  • 无论是分析师或埋点产品必须要对出自自己手中的需求要负责。
  • 要时刻意识到,埋点需求是整条数据链路的源头,而且用户实时发生数据拥有着不可回溯性

对于高层管理者:

  • 要适当的给予数据治理一些侧重,无论是在人力上还是时间上。
  • 让自己或自己的上级领导提升一些基础建设的意识,用产品进行向上管理,毕竟是一个看的见、用得到并且能“体会”价值的载体。

02 定制度&流程

任何一件事有一个良好的规范去执行,那出错的概率就会比每个人自由发挥低很多。

主要从两个方面下手。

2.1 角色流程

埋点从需求产出开始要经历:埋点开发、数据上报、数据采集、数据清洗、数据入库最终到业务应用,涉及的人员包括埋点产品&分析师、开发、测试、采集工程师、仓库工程师等。

各个环节能有机组合就需要一个良好的配合制度,既能保证工作有条不紊,同时又避免了权责混乱导致的问题无法及时响应。

image.png

图片来自:http://www.woshipm.com/data-analysis/4297452.html

2.2 采集规范

  • 文档规范:
    • 细化的需求文档有利于降低其他环节同学的理解偏差,也便于埋点使用时了解前因后果及错误信息。
    • 所以要求负责埋点的同学列清相关需求点,包括:所需要的事件信息、统计位置、打点逻辑、上报时机,甚至还可能有失败后如何处理、失败原因、变更历史等相关内容。
  • 接入规范
    • 指业务开发同学在使用埋点组件时要严格遵守组件方提供 sdk 的使用规则,例如,通用事件内扩展字段的埋点位置、上报时机等。
    • 切不可根据“自我经验”进行更改优化。
  • 命名规范
    • 命名规范适用于埋点信息的命名,包括事件 id、事件参数以及实际的参数值。
    • 做到以下原则:
      • 方便解读
      • 不要有特殊字符,不要采用系统关键字或预置关键字进行命名。
      • 字段不易过长
      • 版本前后字段映射统一
    • 无法挨个维护的参数值可以采用 spm(超级位置模型)或 scm(超级内容模型)来制定采集规范。

03 用工具

3.1 埋点模型

埋点模型采用的是事件模型,事件模型描述了一个人做某件事情所需要的几个重点要素:时间(when)、地点(where)、人物(who)、途径(how)、结果(what)

例如:小明4月3号早上 9 点用小米手机在京东买了一个 iPhone12,转译到埋点语言就是:

image

2.2 埋点平台

埋点质量的最后一个环节就需要通过平台化来进行辅助管理,主要包括:

  • 元数据管理完善、可溯源,提升查询效率。
  • 自动化测试+人工校验,降低漏测风险。
  • 质量监控,提升对错误埋点的发现效率。
  • 引入埋点流程,辅助进行“团队管理”。

最后,

数据质量问题在业务发展到一定阶段都会遇到,就像升职以后需要管理团队一样,不同级别面临的问题不一样,所需要采用的手段也不一样

工具

1. ODiff : 号称是世界上最快的图片对比工具

image.png

ODiff 是一个非常快速的本地图像对比工具,以毫秒为单位快速找到两幅图像之间的视觉差异。

效果如下:

image.png

项目地址:https://github.com/dmtrKovalenko/odiff

2. 用于分析和比较源代码的命令行工具 - Semantic

开源前线

Semantic 是一个用于分析和比较源代码的命令行工具,支持多种语言。

支持的语言

语言解析

AST(抽象语法树) 符号

堆栈图

Ruby
javascript
TypeScript🚧
Python🚧
Go
php
Java🚧
JSON⬜️⬜️
JSX
TSX
CodeQL
Haskell🚧🚧

项目地址:https://github.com/github/semantic

3. 超级好用的 macOS 进程管理工具 - Sloth

image.png

Sloth 是一款 macOS 应用程序,能显示系统中所有正在运行的进程及其所使用的文件、目录、套接字、管道和设备,用户可以非常方便的查看哪个应用程序正在使用哪个文件。

项目地址:https://github.com/sveinbjornt/Sloth

方法

1. 做的都是琐事,怎么展示能力?

小马宋

image.png

如何在琐事上展示能力?

有两个故事。

第一个故事

1906 年的时候,吉尔布雷思发现,数千年来,砖瓦匠砌砖的工具和技巧几乎没有什么变化。仔细研究了砌砖过程之后,他能够在不增加砖瓦匠负担的情况下,将砌砖效率提高一倍。 

通过把砖和灰浆的托板提高到及胸的高度,每位砖瓦匠每天能免去数百甚至数千个俯身取东西的动作

通过使用可移动的脚手架,熟练的砖瓦匠就不必费时费力地踩着梯子往上搬砖了。

如果灰泥能够源源不断地供应,砖瓦匠把砖垒起来之后,只需要用手轻轻一拍就行了,而不必用瓦刀敲好几下——这种做法很浪费时间……

第二个故事

我有个朋友,他早年没有文化,就在一家奶茶店打工。但是为了更快的学习,他主动要求不轮班,直接在奶茶店干满全天,而公司也没有给他更多的薪水。

有一天晚上,店长觉得他实在太累了,就强制要求他回家。然后他回家前顺手就拿了一把奶茶店的外卖单,在回家路上沿街给各个店铺发奶茶外卖单。结果第二天,店里多了好多奶茶外卖的电话(那时外卖还是店里自己送)。

后来他自己经营一家奶茶店,再后来就有了自己的奶茶品牌,目前有 200 多家奶茶店,这个奶茶品牌叫霸王茶姬。

你看,即使一个泥瓦匠的工作,经过思考设计都可以提升一倍的效率,即使是一个奶茶店的员工,也可以用心经营让一个店做得更好。

那么,你应该怎么做呢?

2. 如何搭建一个拖垮公司的技术架构?

Mr.K

image.png

作为架构师,如何搭建一个拖垮公司的技术架构?

01 系统主链路尽可能单点

单点系统,就像苏伊士运河一样,一旦航道出故障,整个运输系统都瘫痪,非常酸爽。

02 程序中多用循环

无限死循环... 当你看到 CPU 利用率百分百的时候,你就知道应该甩锅给运维了。

03 系统间增加依赖

在系统里增加内部依赖、外部依赖、第三方依赖。

04 没有重试策略

服务调用失败,你还想重试?我可不是随便的接口。

05 不做系统隔离

千万别做系统隔离,要挂一起挂。

06 代码同步调用

做系统就要步调一致、讲究和谐,尽量同步调用,多写 bug。

07 不做热数据缓存

RPC 的意义是什么?就是被调用啊。疯狂地调用,是对一个服务最起码的尊重。

08 不做系统分级

对系统要一视同仁,不要区分核心系统、非核心系统,你有考虑过系统的感受吗?

09 没有服务降级

服务降级就 low了,就算宕机也要一起扛。

10 无灰度和回滚方案

上线全凭运气,没有回滚方案!就是那么自信。

11 程序多做远程调用

能远程调用的,绝不本地调用,都5G时代了,网络延迟那点事不算什么。

12 不做代码扫描

要有工匠精神,自己代码自己 review,机器哪里懂得欣赏你的代码艺术?我那骚气的注释、奇妙的函数、神乎其技的 Copy/Paste。每次看代码,都被自己的才华吓到

13 不做线上压测、不做熔断机制、不做服务补偿、不做幂等设计、不设置超时、控制流量、不做监控预警

最后,

以上任意一项玩到极致,都足以把公司搞垮,且玩且珍惜。

3. 如何自夸才合适?

HBR-China

image.png

自夸是一种自我推销的手段,但没人喜欢老是自夸的人,也许是因为自夸会让人感到厌烦和嫉妒。那么,如何在不引起强烈反感的情况下进行有效的自我推销呢?

01 他人询问时再分享

当某人为了回答一个问题而详细说明了自己取得的一项成就时,其他人不会介意。

比如:“你最大的优势是什么?”或“你是如何这么快就完成工作的?”

但如果提出问题不是因为你想得到答案,而是因为你希望有人问你相同的问题,那么给人留下的印象会比直率的自夸更糟糕。

02 他人分享时我亦分享

在他人也在分享的情况下,人们可以成功展示自己的成就,同时又不会留下讨人厌、自负或不顾及别人的印象。

03 寻找第三方评估者

人们认为第三方会比较客观,商业场景中也是如此。

对比一下自夸和被夸的感受:

  • “与我共事过的人都认为我是天生的领导者。”
  • “与她共事过的人都认为她天生就是一位领导者。”

明显后者感受更好。

04 自夸时要找到一个平衡点

人无完人,当人们呈现出平衡的自我形象,而不是仅仅讨论成功,会给人留下更为可信和友善的印象。尤其是那些地位很高的人,在认可成就的同时也应该承认失败和弱点。

05 去用正确的庆祝方法

我们都希望自己的成就得到他人的认可和称赞,但又不想给人留下自夸的印象,应该做呢?

  1. 找到工作中和生活中的密友,他们会把你的胜利等同自身,并为之喝彩。
  2. 当然独自庆祝也可以。奖励自己一顿美食,一件新衣服,或者放松一个晚上观看自己喜欢的电视节目。

实际上,我建议你花些时间定期复盘自己的成功。为什么呢?

因为当我们完成某项重大任务时,例如升职。我们的幸福指数最初会上升,但很快就会恢复到基线水平。我们得益于回忆成就、反思复盘并因此取得进步。

最后,

如果你发现自己一直在与自夸的欲望作斗争,那么扪心自问这么做的原因。

每个人都喜欢赞美,但你是否过度依赖它?内在动力不足吗?觉得你的职业被低估了吗?

如果是这样,原因是什么?

这些问题的答案可能会促使你进行更深刻的自我反省,也许会给你带来比自我推销更多的好处。

言论

1、所谓的编程法则...

image.png

2、

“世界上任何书籍都不能带给你好运,但它们能让你悄悄成为你自己。”

-- 赫尔曼 黑塞

3、

image.png

图片

1、用户要加的功能在产品经理眼中的样子...

image.png

2、

image.png

3、你们有过类似经历么?

image.png

订阅

本周刊每周五发布,会同步更新在微信公众号

微信搜索“毕小烦”或者扫描下面的二维码,即可订阅。

image.png

如果文章对你有帮助,请随手点个赞吧!

(完)

以上是关于软件测试周刊(第20期):恐惧,来自只思考却不行动的主要内容,如果未能解决你的问题,请参考以下文章

软件测试周刊(第40期):大部分的恐惧与懒惰有关

软件测试周刊(第89期):编程是思考,而不是打字。

软件测试周刊(第89期):编程是思考,而不是打字。

软件测试周刊(第66期):成熟有一个最大的标志,就是能承受委屈。

软件测试周刊(第66期):成熟有一个最大的标志,就是能承受委屈。

软件测试周刊(第90期):许多人几乎不用自己的眼睛看,他们只听别人说。