软件测试周刊(第23期):你理想中的工作是什么?

Posted 毕小烦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试周刊(第23期):你理想中的工作是什么?相关的知识,希望对你有一定的参考价值。

image.png

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

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

科普

消费互联网、产业互联网、物联网、互联网+、工业互联网

小枣君

image.png

互联网、传统互联网、消费互联网、产业互联网、物联网、互联网 +、工业互联网这些都是什么意思?

什么是互联网?

凡是能彼此通信的设备组成的网络就叫互联网。

什么是消费互联网?

以前的“传统互联网”,准确来说,应该叫做消费互联网

消费互联网紧密围绕消费者。它的主要作用,是帮助人们在衣食住行、社交娱乐(网络游戏、视频追剧、电商购物、移动支付)等方面获得更好的消费体验

什么是产业互联网?

产业互联网,服务的对象是企业,目的是“降本增效”。

通过 ICT(信息和通信)技术,赋能产业企业,实现对信息、资源、资金的整合,降低无效成本,提升产业的运行效率,这就是真正的产业互联网

产业互联网和互联网 + 有什么区别?

这两个词经常混为一谈,但其实还是有区别的,简单理解就是一个「深」、一个「浅」。

“互联网+”,可以理解为“互联网 + 各行各业”。它强调的是连接,是发挥互联网在社会资源配置中的优化和集成作用。

例如“互联网 + 教育”,就是基于互联网连接所带来的信息交换能力,削弱信息差,让教育企业服务快速触达用户。

“产业互联网”则不同,它除了强调互联网的连接作用之外,还强调互联网技术与具体产业的深度融合 —— 互联网渗透进企业的骨髓,改善管理、流程、制度和工艺,提升产业效率。

什么是“物联网”?

除了人与人之间需要连接之外,人与物、物与物之间,也需要连接。这种万物互联,能够创造更大的价值。

狭义的物联网,是指的物联网技术,包括蓝牙、Wi-Fi、Zigbee,还有现在逐渐流行起来的 Cat.1、NB-IoT 等。

广义的物联网,是指的物联网场景和行业。利用物联网技术,加强对数据的采集,对终端的控制,形成数据流,服务于行业的应用。

通常情况下,我们提到物联网,更偏向技术层面。

物联网概念出现后,从连接对象的角度,互联网分为人联网和物联网

什么是工业互联网?

2012年11月26日,美国通用电气公司(GE)发布了白皮书《工业互联网:打破智慧与机器的边界》,首次提出工业互联网(Industrial Internet)的概念。

当时,通用电气董事长兼 CEO 杰夫·伊梅尔特(Jeffrey R. Immelt)表示:

“互联网改变了我们利用信息和沟通的方式,如今,互联网还能做更多事情。通过智能机器间的连接并最终将人机连接,结合软件和大数据分析,我们可以突破物理和材料科学的限制,改变世界的运行方式。”

中国移动前任董事长王建宙这样简单理解:“工业互联网就是将互联网中人与人之间的沟通延续到人与机器的沟通,以及机器和机器的沟通。”

工业互联网跟产业互联网有什么区别呢?

产业的概念范围,显然是远远大于工业的。

产业一共分为三类。简单来说,第一产业是农林牧渔,第二产业是采矿、制造、能源、建筑。第三产业是指除第一产业、第二产业以外的其他行业。

工业是第二产业的组成之一,我们现在说的数字化转型,绝对不是单指工业,而是整个百行千业。

image

产业大于行业,行业互联网可以约等于产业互联网

所以,当你看到工业互联网,如果只和工业制造有关的,那就是狭义的,如果不仅包括工业制造,还包括了第一和第三产业的落地应用,那就是广义的。

文章

1. 低效能人士的几个习惯

作者:粥左罗

image.png

虽然成为高效能人士遥不可及,但低效能习惯的坑我们很容易就能躲开。

01  只知拼命加班

“长期拼命加班”是用勤奋来掩盖效率低下的表现。

作为一个脑力工作者,最大的优势不是比拼蛮力,而是转动脑筋提高生产力啊。

与其做一只不知疲倦的牛,干嘛不变成一辆拉风高效的拖拉机呢?

当你的核心竞争力是加班,你难道不会害怕吗?

02  原地踏步转圈圈

到底怎么才能从原地踏步 → 一路小跑 → 撒丫子狂奔呢?

一句话,别把自己当人

把自己这个个体转换成一个“产品”甚至“小微企业”。

把自己当成一个产品,可以思考:

  • 目前的版本有哪些问题?
  • 用户反馈(领导和同事对自己的看法)是什么?该怎么处理?
  • 面向的目标群众有哪些(服务谁)?如何为他们提供价值?
  • 如何让更多人知道我这个产品?
  • 出现 bug(工作失误)后该怎么应对和处理?
  • 该怎样迭代升级?

……

把自己当作一个小微企业,可以思考:

  • 行业趋势大环境如何?
  • 如何提高公司软实力 + 硬实力?
  • 要为哪类客户提供服务,哪些客户是核心资源?
  • 如何成为这个行业的头部?
  • 如何打造品牌和口碑?
  • 商业变现模式有哪些?

……

这种思路转换有两个优势:

  • 一是能让大家从“自我”中跳脱出来,更加客观理性的认识自己,避免情绪化和主观性对自我评价的干扰。
  • 二是能方便大家量化自己的改变,通过审视 1.0 版本、2.0 版本、3.0 版本的自己,不断打磨和优化。

03  计划“又大又宽”

每个人都有至少一张附有 deadline 的计划表,然后拖到 dead 那天。

100% 完成计划的是大神, 完成 70% 的是牛人,完成 50% 的是精英,完成 30% 的是正常人,而完成 10% 的大有人在。

很多计划表是“又大又宽”型计划表,看起来很“丰盛”,但没啥营养。

什么是“又大又宽”的计划呢?

简而言之,就是做的计划表不够具体,太过宽泛笼统和粗糙,“颗粒度”太大,执行人消化不了。

比如说:

提交一份上周的会议报告

和技术碰一下需求

每天跑一会儿步

怎么改进呢?

很简单,只要把计划分解分解再分解就好了。

比如“和技术碰需求”这个计划就可以分解成:

跟技术约在下午 5 点的休息区碰面,具体讨论 5.0 版本的 feed 流展示问题。需求是在 APP 首页显示十条消息,前五条消息按照阅读量排列,后五条按照评论数排列……

大脑处理任务的方式是单线程的,要么“思考做什么”,要么“立即行动”。详细的步骤为大脑扫清了“思考该做什么”的障碍,自然就能无所顾忌的去行动。

04 疯狂“输入”但从不“输出”

输入不输出,愣是把大脑变成了一只爱屯粮的仓鼠。

只有在输出时,大脑才会调动一切资源处理接收到的信息,从“浅度理解”变成“深度加工”。

而且,大脑越是在一件事情上花功夫,对它的印象越深刻,掌握程度也越好。

05 追求完美,行动滞后

完美是完成的敌人。追求完美,在这个世界里本来是一件很酷的事情,可惜变成了很多人拖延的挡箭牌。

世上没什么事情是在想得非常完善之后再做就能成功的。

与其纠结细节,不如先行动起来,好歹先破局,搭建一个粗糙的框架,之后再一步一步优化升级也不迟。

06  在无效社交上动感情

什么是无效社交?

如果和对方交往时无法进行大体上等价的价值交换,那就是无效社交。

价值交换可以是情感上的,可以是经济上的,也可以是肉体上的,双方觉得 OK 那就 OK。

无效社交有两种常见形式:

  • 对方无法为你提供价值,但你舍不得不理 TA。
  • 你无法为对方提供价值,但你忍不住想抱大腿。

前者叫“拎不清”,后者叫“巴结人”。

2. 如何实现持续测试?

 作者:ushil Kumar

image.png

在大多数 DevOps 实践中,测试仍被视为最令人头疼的瓶颈,显然,这是一个常见的挑战。

image.png

怎么办呢?

进行持续测试,但持续测试究竟是什么?我们又如何实现它呢?

在维基百科中,持续测试的定义是:「在软件交付流水线中执行自动化测试的过程,目的是为了获得关于预发布软件业务风险的即时反馈」。

请注意,除了自动化以外,持续测试从根本上转变了测试, 它把线性过程中的时间点事件嵌入到整个过程当中去,作为基础贯穿于整个软件交付周期的所有活动中

敏捷环境里持续测试的目标应该是「迭代内测试(in-sprint testing)」。不管你的迭代是两周还是四周,目标都应该是完成迭代内所有类型的测试,这样每个迭代都可以得到一个测试完备的,准备交付的软件。

七个步骤实现持续测试

1. 尽早规划测试,甚至早于写代码

使用像行为驱动开发(BDD), 验收测试驱动开发(ATDD)和基于模型的测试这类技术所使用的工具,确保业务相关方充分沟通并记录需求,定义清晰的测试用例,提早编写测试脚本,以达到一个流畅的测试过程。

2. 优化测试覆盖率

全量执行所有测试非常浪费时间,要测试那些需要测试的部分,通过可视化模型探索路径,最后可以只用少量的测试用例就能做到最大化的覆盖率

3. 测试左移

开发自测,测试团队提供测试基础能力的服务,自动化测试覆盖 UI、功能、性能和安全,各个团队通力协作,专注于价值交付。

4. 提供完整的测试环境

提供测试环境的能力对实现持续测试是至关重要的。虚拟机、Docker 容器化,都可以满足迅速准备、部署测试环境的需求。

5. 获取正确的测试数据

为了准确的测试新功能,测试数据应该尽可能的跟生产环境时所应用遇到的数据相近。

6. 别忘了测试右移

测试向右移动,使用开发周期和生产中的数据来优化测试周期、调整测试用例,以建立最佳回归测试套件。

右移技术包括真实用户监控、金丝雀部署、A/B 测试、混沌工程等。

7. 使用数据矩阵持续优化

建立跨团队协作,根据可行性分析和反馈机制不断优化。收集并且总结数据以帮助你提出持续优化的确切建议。

工具

1. 将 Windows 中强大的 alt-tab 功能带到 macOS - AltTab

毕小烦

如果你习惯了 Windows 中的 Alt + Tab 切换窗口,怎么在 macOS 延续这样的习惯呢?

使用 AltTab 这个工具。

image.png

AltTab 将 Windows 中 Alt + Tab 切换窗口的功能带到了 macOS。支持中文。

开源地址:https://github.com/lwouis/alt-tab-macos

2. 免费听所有平台的所有歌曲 - Listen1

毕小烦

听歌你要装几个 APP?网易云音乐? QQ 音乐? 酷狗音乐?酷我音乐?bilibili?咪咕音乐?千千音乐? 要买几个会员才能听到自己想听的歌?

用 Listen1,这些就全免了。

image.png

开源地址:https://github.com/listen1/listen1_chrome_extension

3. 打马赛克就安全么?看它给你一秒还原 - Depix

小秋

如何从马赛克中恢复原始内容呢?使用 Depix 可将数字、字母从像素化的图片中还原。

目前有它的一些限制,仅适用于使用线性滤波器创建的像素化图像。

image

许多领域都使用像素化来混淆图片中的信息,像素化描述了部分降低图片分辨率以审查信息的过程,Depix 的算法使用了线性滤波器的原理。

线性滤波器?

线性滤波器采用一组像素,并用这组像素中所有像素的平均值覆盖这些像素。线性滤波器是一种确定性算法,因此对相同值进行像素化将始终产生相同的结果。

image

开源地址:

https://github.com/beurtschipper/Depix

方法

1. 如何设计一款更好用的 Flutter UI 自动化测试框架?

作者:小匠 闲鱼技术

Flutter 页面无法直接使用 Native 测试工具定位元素,给自动化测试带来很多不便。

虽然 Google 官方推出了 Flutter driver 和 Integration test,但是在实际使用中存在很多问题,如:

  • 不适用于混合栈 APP,虽然 appium 中有相关的 driver,但是无法切换环境。
  • 元素定位能力相对薄弱。
  • 依赖 VMService,需要构建 Profile 或 Debug 包。

基于上述问题,闲鱼的 UI 自动化框架,选择使用图像处理技术来扩充原生自动化框架对 Flutter页 面的测试能力支持。

整个测试方案架构如下图所示:

image.png

与 Google 官方框架的对比:

image

用例设计策略:

01 优先使用原生定位能力进行定位操作

对于有 name、label 以及 xpath 不易改变的元素定位,优先使用原生定位能力进行定位操作。

02 其次使用 OCR 文字匹配进行定位

在处理无法使用原生能力定位的元素时,优先使用 ocr 文字匹配来进行定位,准确率较高,不容易受分辨率的影响。

03 对于纯图片则通过图片查找的方式进行定位

对于一些常见的元素控件例如商品卡片、价格、icon、头像等,我们构建一个训练集,使用图像分类来判断元素的类型,从而实现常用控件的定位。

04 页面元素与测试逻辑分离

考虑到脚本的健壮性以及可维护性,在实际脚本开发中将页面元素封装到单独的类中,并与测试逻辑分离,从而保证后期元素迭代时只需要修改对应的页面元素即可,减少维护成本。

image.png

(完)

2. 如何开一场成功的 Kick-off Meeting?

image.png

为什么要开 Kick-off Meeting?

项目要开工了,需要有一种仪式感,就像奠基仪式一样,会上要讲清楚项目的背景、计划和目标,明确一下分工,定下一些约定,鼓舞一下士气,更重要的是获得管理层的关注和支持。

很多人都参加过 Kick-off Meeting,但如何组织一场成功的 Kick-off Meeting 呢?

分三部分来看。

一 . 会前筹备

  1. 成立组织:成立筹备委员会,用于会议工作讨论、筹备分工、指挥执行等;
  2. 会议内容:筹备会议内容,项目背景、目标、计划、里程碑、干系人、职责和分工、沟通机制;
  3. 主题基调:确定主题和基调,或激情,或庄严,或热闹……
  4. 设计亮点:设计亮点环节,为成功加分,可以是燃情四射的视频,或者一句响亮亮的口号和旗帜标语,或者管理层总动员;
  5. 常规内容:筹备常规会议内容,会议地点、时间、参会人员、通知、议程、演示文稿、主持人、记录人等;

二. 会中组织

  1. 验收场地:完成会场布置,包括各种机器的调试;
  2. 入场服务:引导参会人员就坐,维持现场秩序;
  3. 把控节奏:整体把控现场节奏,安排演讲人衔接;
  4. 会议记录:包括会议内容文字记录和会议现场影像记录。

三. 会后总结

  1. 同步共识:会上达成的共识和后续的工作,以邮件或其他书面形式同步给所有相关方;
  2. 总结改进:对会议进行总结,包括会议目的是否达成、组织是否良好,是否需要改进等。

3. 如何做一次高效的事故复盘?看看腾讯的做法

作者:zhongyitan 腾讯TEG运营规划

image.png

事故复盘是系统服务可用性管理或 DevOps 建设中非常重要的一个环节,但却很难做到高效。

先来看看传统事故复盘的做法

  • 像审犯人一样,对「嫌疑工程师」各种追问,试图找出事故的根本原因,然后讨论采取什么行动计划来确保这种事情不再发生。
  • 关键部分是对这个事故进行定级,以及对责任人的处罚。
  • 最后会有一个长长的改进任务列表,列出各种长期或者短期的任务,从流程上或者意识上避免再犯类似的错误。
  • 可惜任务列表上的任务往往很少得到跟进。

这种复盘,是一种 Blame Game(即甩锅游戏),是不适应现代快速发展的系统架构和云基础设施的要求的。

为什么这么说?

  • 在甩锅游戏中,承担责任的工程师,会以一种沉重的心情来进行事故复盘,他最后会很不愉悦的快速接受责任认定,那么事故过程中的各种场景不会得到很好的回放,也就不能充分说明当时的场景
  • 同时因为快速得出结论,事故中涉及到的各种架构问题和流程问题不能得到很好的澄清,也不能在团队里面促成很好的知识传递。
  • 那么即使换了一个人,同样的事故是不能避免发生的。

我不太认同这种聚焦在责任事故和负责人认定的甩锅游戏因为现在的分布式系统各种依赖,非常复杂,出现事故是在所难免的。

  • 首先,网络故障是非常难以避免的,而且不可控。
  • 其次,硬件设备也是非常容易出错的。
  • 最后,软件是人写的,是一定会出 Bug 的,即使我们把各种操作都自动化,那些自动化的脚本也是人写的,也是会有 Bug 的。
  • 回到人为错误上:犯错误本身就是做创新性工作的不可避免的副产品
  • DevOps 的实施离不开一个信任和合作的文化,而这种文化的建立,是需要在开发团队(Dev)和运维(Ops)中建立起信任。
  • 很显然,甩锅游戏会极大的破坏这种氛围,导致无法真正建立起团队的信任,即使他们两个团队被强行捏到一起。

来看看现代事故回顾的做法

  • 首先本着非常严肃认真的态度,召集所有相关的人员,进行事故现场的回顾
  • 然后进行认真的分析,对这种事故,我们如何能更快的发现?如何能更快的定位和止损?如何从架构上做出改进,来做到自动容错
  • 要点在于把每一次事故当做学习的机会。

总结:

  • 传统的事故回顾的重点于定责和避免事故的再次发生,有点像甩锅游戏;
  • 现代的事故回顾的重点在于把每一次事故当做学习机会,让自己做的更好;

言论

1、

image.png

2、

image.png

图片

1、你理想中的工作是什么?

image.png

2、你为什么要应聘我们公司?

image.png

3、产品经理最怕遇到的用户类型(我笑了半天)

image.png

订阅

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

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

image.png

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

(完)

以上是关于软件测试周刊(第23期):你理想中的工作是什么?的主要内容,如果未能解决你的问题,请参考以下文章

软件测试周刊(第36期):为什么你要当程序员?

软件测试周刊(第62期):无论你处于什么状态,你都要明白,生活的目标是健康和快乐。

软件测试周刊(第65期):不要害怕重新开始。因为这一次,你不是从头开始,而是从经验开始。

软件测试周刊(第65期):不要害怕重新开始。因为这一次,你不是从头开始,而是从经验开始。

软件测试周刊(第84期):这个世界根本不存在“不会做”“不能做”,只有“不想做”和“不敢做”,当你失去所有依靠的时候,你自然就什么都会了。

软件测试周刊(第84期):这个世界根本不存在“不会做”“不能做”,只有“不想做”和“不敢做”,当你失去所有依靠的时候,你自然就什么都会了。