软件测试周刊(第24期):最不重要的素质就是智商

article/2025/9/18 7:23:29

image.png

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

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

科普

Windows11

杨净 梦晨 

微软 CEO 纳德拉曾说,这将是 Windows 十年来最大一次更新。近日 Windows11 提前曝光!全新 UI 引发争议,有网友说:一股苹果味儿。

来感受一下:

image.png

image.png

image.png

文章

1. 施一公:最不重要的素质就是智商

施一公

image.png

施一公是少数在公众领域享有很高知名度的自然科学家。

施一公说:“无论什么学科,物理、工程、生物、文科,我认为最不重要的是智商”。

那最重要的是什么呢?

他认为,对于科学研究而言,最重要的三个方面则是:

  • 时间的付出:任何人不付出时间,一定不会有成功。不要以为你可以耍小聪明,世界上没有免费的晚宴,这是亘古不变的道理。
  • 方法论的改变
  • 建立批判性思维:挑战学术权威。怀疑是科学发现的推动力。

文章中还有很多金句,我摘录了几个:

  1. 我觉得兴趣是可以培养的,不是说你天生就有,不是说你听一个讲座突然灵机一动就对一件事感兴趣,我觉得都不是这样。

  1. 我认可一点:不要给自己理由 —— 当你觉得兴趣不足、没有坚定信心、家里出了事情、需要克服心理阴影、面对痛苦往前走的时候,不论家庭、个人生活、兴趣爱好等方面出现什么状况,你应该全力以赴,应该处理好自己的生活,往前走。不要给自己理由。因为你一旦掉队了以后,你的心态会改变,很难把心态纠正过来。

  1. 放眼望向你周围,当别人和你差不多聪明的时候,你会觉得别人比你聪明。所以当你觉得别人比你聪明的时候,他并不一定比你聪明,不要太自卑。

  1. 我还有一个性格特点是好胜。在座的同学可能很多和我一样,如果不好胜、不自强也很难走到今天,但特别好胜、特别自强的人也更容易受打击,也更容易自卑。很多情况下,你的个性决定了你的将来。我很自卑,但我又很好胜。

2. 玉伯:开源有带给我什么

Alibaba F2E

image.png

本文是玉伯在 2021 年 527 蚂蚁技术日上的分享。

我从 2009 年到 2018 年,接近十年时间,一直在做开源的一些事情,在这个过程中收获了很多东西。今天就和大家分享一下这十年我的一些收获和感触。

收获之一:高效工作

高效工作包括三点:

  1. 文档优先
    • 在文档优先这方面,老外比我们重视太多了。
    • 有的项目可能还只是个空壳,但里面已经讨论很多了,把很多想法思路、怎么做、可能遇到什么坑这些问题,通过文档和讨论,想的比较清楚了才动手去写代码。
    • 当你真的深度参与开源,并且以文档先行的方式去实践的话,你的收获会非常之大。
  1. 异步协作
    • 人们通常进行交流的手段就是听说读写。
    • 其中读和写是比听和说更高维度的手段,需要更多逻辑和抽象能力,更有助于问题的及早解决。
  1. 求同尊异
    • GitHub 上有些项目参与人数众多,大家参与讨论很激烈。
    • 如何在有分歧的情况下达成共识,以及不仅达成共识而是让社区往前走一步,这是需要一些领导力,以及一些意见领袖做出一些牺牲的。

在这里,求同尊异不是很虚的词,而是很实际的原则,影响你的很多取舍。

收获之二:学做产品

如果你把开源项目做为一个产品去打造,一定会遇到产品的灵魂三问:

  1. 为什么要做?(产品的客户是谁?差异化价值在哪?)
  2. 为什么是我做?(是我擅长的领域吗?为什么?)
  3. 边界在哪?(取舍定位 & 生态协同)

每一个开源项目在决定要不要去做的时候,都要问自己这几个问题。这其实和很多业务和产品遇到的问题很类似,你必须回答清楚之后才能再往前走一步。

收获之三:对事的热爱

但凡你曾经经历过为开源而疯狂,你就会理解什么叫热爱。而如果你没有疯狂过,热爱对你来说只是两个字而已。

把开源当做自己的事业的时候,即使生活上很朴素,你也可以过的很开心。当你写代码的时候想着怎么写的更好,某个内存占用怎么降低一点点,某个性能怎么提高一点点,当你满脑子在想这些的时候,一些物欲得失也就没那么重要了。

希望同学们通过开源,去参与和主导项目,能够感受到这份热爱。持续去感受过几份热爱之后,我觉得你整个人都会不一样的,面对许多事情,你会活的更通透,更透彻。

前不久在推特上看到一句话让我挺有感触,他主要说的是:

很多人说工作要跟对人,但其实没什么关系,跟你工作的地方和公司也没关系,跟什么人不如跟随自己的内心。真正一个人在职场生涯往前走,应该找到的是你的 mission 和 calling,还有找到对你有意义和热爱的一些事情。

3. 你需要了解的 APP 安全知识

小道安全

image.png

怎样的 APP 是安全的呢?

只要攻击者所花费的时间成本和精力超过其攻击逆向破解后获取到的收益,那么你的 APP 就相对安全。

作者以安全开发的角度出发,梳理了一个 APP 需要关注的安全问题。

一. 应用安全

1.1 二进制安全:

  1. 环境检测:
    • 检测模拟器:特有文件、模块、特征、代理类等等。
    • 检测 root:特有刷 root 工具的包名称、特有 root 的文件路径。 
  1. 反注入检测:
    • 注入工具: zygote 属于全局注入(xposed 工具)、ptrace 单进程注入(frida 工具)。
    • 检测方式:
      • 检测 APP 自身的 /proc/%d/maps 模块是否有第三方 so 模块。
      • 优先把自身 ptrace,那么其他就无法注入。
  1. 反调试检测:
    • 调试工具:用 jeb、IDA、GDB 等工具调试分析代码和数据。
    • 反调试方式:
      • 检测 /proc/%d/status/proc/pid/stat/proc/pid/task/pid/stat 状态值。
      • 检测调速器端口和名称和通信的关键文件信息。
  1. 代理检测:检测校验抓包所需要安装的证书信息。

1.2 敏感数据安全:

  1. 代码中敏感 URL:
    • 存在问题:直接将访问的网址或访问的 IP 地址硬编码写到代码中。
    • 攻击方式:攻击者可通过反编译获取此类信息,并将其作为攻击目标。
  1. APP 中敏感数据:
    • 存在问题:代码或配置文件中,存储着敏感而且没有进行做加密保护的数据。
    • 攻击方式:
      1. 利用 apktool 反编译 APP,然后查看二进制代码数据,就能直观的看到敏感的操作调用敏感数据。
      2. 通过代理模式进行抓包就可以直接抓到 APP 运行中的操作的敏感数据。
  1. 通用加密算法参数:代码中往往会出现一些保护敏感信息的常量字符串,例如在代码中硬编码 AES 加密的 key、iv 等,或者用户的 VPN 密码等等。

1.3 敏感资源安全:

  • 存在问题:APP 中的一些关键资源文件没有进行加密保护。
  • 攻击方式:攻击者可以从 APP 中提取关键的资源文件,进行二次使用或从资源文件中获取本地业务逻辑代码,从而对 APP 发起攻击。

1.4 完整性安全:

  • 存在问题:开发者如果没有对开发的 APP 进行做完整性校验。
  • 攻击方式:攻击者用 androidkiller 工具进行对 APP 功能的逆向修改,例如对 APP 植入恶意代码,木马、广告等等。对这些修改 APP 后,进行重新签名发布,会导致包的完整性被破坏。

1.5 证书存储安全:

  • 明文存储的数字证书如果被篡改,APP 客户端可能会连接到攻击者的服务器上,导致 APP 的敏感信息被盗取。
  • 如果明文证书被盗取,可能会造成传输数据被拦截解密,伪造第三方的 APP 客户端向服务器进行发送请求,篡改服务器中的关键数据或者造成服务器响应异常。

二. 组件安全

组件暴露会影响到 APP 应用的逻辑核心和泄露用户敏感信息,攻击者只要通过组件利用的方式就可以获取到关键信息,那么就会导致关键信息被泄露的风险。

保护方式:

在 APP 中如果非必要的组件不要进行导出;如果组件一定要提供给外部进行调用的话,可以对组件的权限进行控制。

三. 运行时安全

  • 日志输出:
    • 存在问题:日志信息往往会记录着一些敏感信息,如:用户名、密码、函数调用栈信息、Token、Cookies、网络请求 IP 或 URL 等等,在发布的 APP 时常会漏掉或者忘记将日志输出的信息进行删除。
    • 攻击方式:只要用 monitor工具就可以分析 APP 运行的敏感日志信息。攻击者可以将此作为攻击的入口点。
  • 数据存储:
    • 存在问题:APP 运行时候会进行记录或存储一些敏感信息:个人隐私、登录信息、本地验证码、聊天记录等等。
    • 攻击方式:存储的信息直接可以用 MT 管理工具或者直接用 adb 复制传输到外部电脑主机上,再通过可视化工具进行打开查看文件,会造成配置信息或敏感的账号信息泄露。
    • 保护方式:对于运行时的读写操作本地数据存储,在本地操作关键敏感信息,进行用一些加密算法进行做保护。

四. 通信安全

  • 存在问题:在 APP 通信过程中数据传输协议以及字段数据没有加以保护。
  • 攻击方式:攻击者可以通过对这些包进行分析伪造假的数据包等进行做影响 APP 安全的事情。
  • 保护方式:
    • 建议在通信传输功能可以采用SSL协议进行传输,并在客户端和服务端证书信息和关键数据加密和进行校验。
    • 加密过程中尽量避免使用 CBC 模式。

工具

1. 免广告看遍所有视频网站 - uBlock Origin

毕小烦

你平时在哪个网站看视频?优酷?腾讯?爱奇艺?芒果 TV ?还是 Youtube?不管哪个网站,没买会员是不是得先看段广告?

如何才能跳过这些片头广告呢?

用 uBlock Origin 。

image

uBlock Origin 发音为 you-block origin (/ˈjuːˌblɒk/) ,是一款开源的适用于多种浏览器的高效拦截器插件,本质上它不是广告拦截器,而是一种通用的拦截器,只是恰好能够起到“广告拦截器”的作用。

基本信息

名称

uBlock Origin

版本

1.35.2

浏览器

Chrome、FireFox、Edge、Opera

适用平台

macOS、Windows、Linux

开源地址

https://github.com/gorhill/uBlock

功能特性

  • 屏蔽视频网站的广告
  • 屏蔽恶意软件站点
  • 屏蔽网站跟踪器
  • 屏蔽网站的所有弹窗
  • 屏蔽网站的大型媒体元素
  • 禁用网站的所有脚本
  • ...

2. 一键直达页面顶部或底部 - Scroll To Top Button

毕小烦

我们在浏览网页时,可能会想快速到达页面的顶部或底部,该怎么做呢?

用 Scroll To Top Button。

Scroll To Top Button 是一款浏览器插件,支持 Chrome、FireFox、Edge、Opera,它能够让你快速到达页面的顶部或底部,可以选择使用按钮或快捷键。

基本信息

名称

Scroll To Top Button

版本

10.0.3

浏览器插件

Chrome、FireFox、Edge、Opera

适用平台

macOS、Windows、Linux

开源地址

https://github.com/PoziWorld/Scroll-to-Top-Button-Extension

3. 找出源代码中的性能问题 - Pyroscope

吴柏毅

image.png

Pyroscope 是一个开源的持续性能剖析平台。

它能够帮你:

  • 找出源代码中的性能问题
  • 解決 CPU 过度使用的问题
  • 理解应用程序的调用树
  • 追踪随时间变化的情况

功能特性:

  • 可以存储下多个应用程序长时间的 profiling 数据
  • 你可以一次查看多年的数据或单独查看特定的事件
  • 较低的 CPU 开销
  • 数据压缩效率高,磁盘空间要求低
  • 友好体验的 UI
  • 支持 Go、Ruby 和 Python

开源地址:https://github.com/pyroscope-io/pyroscope

方法

1. 腾讯是如何高效的测试 Feeds 的?

lynnmi

Feeds 是什么?

Feeds 一种给用户持续提供内容的数据形式,由多个内容提供源组成的资源聚合器,由用户主动订阅消息源并且向用户提供内容。

测试重点是什么?

样式和功能。

样式?

样式是指 Feed 下滑过程中每一个条目所展现的形式。

如下图所示:

image.png

Feeds 处理流程:

image.png

测试面临的问题:

  • 样式多:66个
  • 覆盖全:样式分布不均,需要全覆盖。
  • 消耗大:不断的刷样式(2小时)+ 白名单下发样式(等生效时间长) = 两周发一版

解决需求分析:

  • 减少后台频繁配置下发数据的频率
  • 能准确获取并存储外网真实数据
  • 能将外网数据准确发给客户端使用
  • 能按需整合不同样式,并下发
  • ....

解决方案设计:

  • 契约测试:在多个互相依赖的模块之间订立契约(Contract),每个模块都只对契约负责,不关心契约背后消费者(Consumer)。而消费者则只针对契约依赖,不关注契约背后的服务方(Provider)。

image.png

  • 借鉴 Sinon.js 的契约测试方案

image.png

  • 应用场景
    • 前端开发自测依赖 Provider 提供数据
    • DailyBuild 自动化冒烟验证
    • 手工集成测试中使用
    • 自动化性能数据收集

最终收益

  • 发版节奏两周缩短到一周
  • 集成测试时间 6H+ 缩短至 2.4H 左右

2. 新东方云教室是如何做移动端专项测试的?

房建宇

image.png

一. 安全测试:以发现安全隐患为目标

  • 软件权限
    • 校验隐私泄露风险:包括访问手机信息、接入互联网、用手机拍照或录音、读取用户数据、写入用户数据;
    • 校验输入有效性:对认证、授权、敏感数据存储、数据加密等方面进行检测;
    • 校验有无数据泄漏、非法授权访问等;
  • 安装卸载和升级安全性
    • 校验 App 的安装卸载和升级过程中对系统资源的占用;
    • 校验覆盖安装,升级安装的情况下前后数据的一致性;
  • 数据安全性
    • 校验敏感数据会不会被存储,会不会被破解;
    • 校验密码长度,且不以明文显示;
    • 校验应用程序读和写数据正确,如果数据库中重要的数据正要被重写,应及时告知用户;
  • 通讯安全性
    • 校验 APP 运行过程中,被通信(来电、短信、蓝牙、红外、NFC 等通讯或充电时)打断,是否能暂停程序,优先处理通信,之后能恢复软件原来的状态;
    • 校验 APP 应能处理网络异常、通讯延时或中断,并能及时将异常情况通报用户;
  • 人机接口安全性
    • 校验返回功能总保持可用;
    • 校验手机的功能设置不影响应用程序的功能,如声音、亮度、息屏时间、护眼模式等;
    • 校验应用程序必需能够处理不可预知的用户操作, 例如错误的操作和同时按下多个键;

二. 静态代码检查

  • 动态检查:程序运行时检查,侧重于内存和资源使用情况检查;
  • 静态检查:指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
  • 可用工具:
    • OCLint:一款静态代码分析器,可用于分析 C, C++ 和 Objective-C 代码中隐含的问题;
    • infer:facebook 开源的一款静态代码扫描工具,可以对 Java、C 和 Objective-C 程序进行分析。
    • SonarQube:是一个开源平台,用于管理源代码的质量。

三. 性能测试:评估 APP 的时间和空间的特性

  • 压力测试:多人在线时,测试 FPS 以及数据上报的稳定性;
  • 性能评估:
    • 每两秒一次的数据打点监控;
    • 第三方软件数据监控测试;
  • 竞品对比:从产品功能和易用性角度对比调优,根据业务需要也应该关注安全、性能、兼容性等方面的问题。

四. 兼容性测试

  • 手机兼容:手机型号、操作系统、屏幕形状、刷新率。Android TOP 300、iOS TOP 100;
  • 网络兼容:3G、4G、5G、WIFI、5G-WIFI;
  • 版本兼容:APP 新旧版本兼容性测试;
  • SDK 兼容:第三方 SDK 兼容性测试。

言论

1、

不管见识高低,一个人深度整理和收拾自己的内心,这事本身就很迷人。

-- 黎戈

2、

image.png

3、美德肥

image.png

图片

1、灭不尽的 BUG,刚灭 1 个 又多一群...

image.png

2、修复错误的时间 VS 错误的愚蠢程度

image.png

3、前第一夫人不堪其扰啊

image.png

订阅

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

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

image.png

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

(完)


http://chatgpt.dhexx.cn/article/0tYC7lc5.shtml

相关文章

面试 Notes|2021 年秋季 Android 弱鸡艰难求职记。。。

扯犊子之前,先放一张面试图吧: 求职?求生?Start… 说来也怪,从入职的第一天就觉得很不舒服,然后慢慢产生离开的念头,随后转变思想,回去打算按照步骤继续学习,避免下次求…

微信官方:刚刚拆散一桩19万元的姻缘

来源:微信派 这种微信电话,你一定还没接到过。 来自云南的张先生最近凑巧接到了一个。 接到微信支付客服电话时,他正在进行一笔19万元的转账。张先生称,他在某视频平台结识一位“女神”,“女神”主动要求加张先生微信,…

苹果新版iOS疯狂致敬安卓和微信,新Mac搭载自研CPU!这届苹果开发者大会料足槽点密...

点击上方“3DCVer”,选择“星标” 干货第一时间送达 当你一夜醒来,无数个关于苹果最新发布会的片段已铺天盖地。 有说苹果自嗨的——因为作为史上最特殊的一次WWDC,库克完全就在空无一人的会场独自演讲。 也有吐槽苹果这次疯狂“致敬”谷歌、…

苹果出现长方形透明框_看到我卧槽!这是苹果史上最疯狂的开发者大会

一场疫情加一场暴乱,让过久了滋润日子的苹果在2020年尝到辛酸... but...收入可减,店面可关,一年一度的 WWDC 大会可不能不办! 在此生意艰难之际,没有什么比这管鸡血更能提振消费者的热情了~ 按照惯例&#…

疯狂ios讲义之创建cocos2d项目(3)

13.3.3 cocos2d项目结构和代码分析 这一节将向游戏开发者介绍HelloWorld项目的目录结构,以及各个部分是如何协同工作的。通过本节的学习,你会对各个部分之间的联系有个大致的了解。 图13.22显示了HelloWorld项目的项目导航面板。 图13.22 cocos2d项目引…

2016如何突破自我,这么疯狂的事谁敢做

2016一定要做一件令自己疯狂的事,想想自己20多年过去了,却发现没有什么可以回忆的事情是多么的悲催…… 再不疯狂我们就老了…… 2016趁自己还年轻,还有激情,还有动力,放肆的去疯狂…… 一定要疯狂的去玩,…

前有视觉中国后有来电,知识产权勒索为何屡禁不止?

不久前,一张黑洞照片在全网引发了轩然大波,因知识产权被外界熟知的公司“视觉中国”在诸多蓝V的狂轰滥炸下狼狈收场。起因就在于,视觉中国高举知识产权大旗却对外行使近乎于“敲诈勒索”之事。“黑洞事件”后,就在公众以为知产行业…

2016如何突破自我,必做十件疯狂的事

2016一定要做一件令自己疯狂的事,想想自己20多年过去了,却发现没有什么可以回忆的事情是多么的悲催…… 再不疯狂我们就老了…… 2016趁自己还年轻,还有激情,还有动力,放肆的去疯狂…… 一定要疯狂的去玩&#xff0…

[android基础]《疯狂android讲义》重点整理(2)

十、Service与BroadcastReceiver: 1.Service与Activity还有一点相似之处,它们都是从Context派生出来的,因此它们都可调用Context里定义的如getResources()、getContentResolver()等方法。 2.与配置Activity相似的是,配置Service时…

大厂地震,疯狂裁员大换血,面试冲击大厂Android移动开发工程师就在此时

前段时间在准备面试跳槽Android高级工程师时,发现各个大厂都在疯狂裁员,对于处于大厂之中的程序员来说,无疑是一场大地震!但对于新想要冲击大厂的朋友们来说也是一场非常大的机遇! 不过在积极备战大厂时,发…

男子刷机多次拒绝来电 维修师傅的做法被网友怒赞

昨日,一段男子到维修店刷机的视频在抖音上火了,目前已经有18万人点赞。 视频画面中,一男子前往手机维修店,表示忘记密码要刷机。 师傅查看时手机突然来了个电话,维修师问男子要不要接一下电话,男子说“不接…

街电、来电、小电、怪兽们熬出了头?

配图来自Canva可画 近期,共享充电宝涨价的消息甚嚣尘上,一众涨价哀怨声中还夹杂着几条共享充电宝安全隐患的吐槽声。 2015年,共享经济崛起,万物共享的概念深入人心。彼时共享经济正火热,单车、充电宝、雨伞、鲜花等物…

安卓来电归属地_唯一数码带你看WWDC | 数码怪圈,安卓、IOS、WP居然互相抄袭

IOS一直是手机领域的系统高端产品,也一直是其他手机争相模仿的对象,不过这些年来,苹果是否有点“黔驴技穷”?比如这次WWDC2020开完后,网上一度的风评是:“苹果终于实装了这些安卓/WP上的功能。” 其实&…

安卓手机来电防火墙_手机号变“广告号”?来电显示暗藏黑色利益链!你可能也被卷入其中...

微调查:手机号变“广告号”?想取消,先交钱。来电显示暗藏黑色利益链!道钉说说你现在还接谁的电话,你的内心独白是什么? 当下,几乎人人手机上都会有“来电显示”。智能手机还会显示特殊的“标注”…

Linux系统安装Nodejs详细教程

前言 第一次在Linux系统上安装Nodejs,我的服务器系统是CentOS 7,找了很多教程,都不是很详细完善,特此记录一下本人详细的安装过程。下面我们就开始吧! 下载Node.js 方法一:下载到本地后上传到服务器 下…

Node.js 安装教程(Windows)

什么是Node.js? 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js是一个基于 Chrome V8 引擎的 JavaScript 运行环境; Node.js使用一个事件驱动、非阻塞式 I/O 的模型,使其轻量且高效; Node.js的软件包生态系统npm是全…

windows安装npm教程(nodejs)

1、在使用之前,先类掌握3个东西,明白它们是用来干什么的: npm: nodejs 下的包管理器。 webpack: 它主要用途是通过CommonJS 的语法把所有浏览器端需要发布的静态资源作相应的准备,比如资源的合并和打包。 vue-cli: 用户生成Vu…

Node.js下载及安装步骤

一、安装环境 1、本机系统:Windows 11(64位) 2、Node.js:v16.14.2LTS(64位) 二、安装Node.js步骤 1、下载对应系统的Node.js版本:Download | Node.js 2、选安装目录进行安装 3、环境配置 4、测试 三、前…

nodejs安装及环境配置详细教程

nodejs安装及环境配置一、nodejs安装环境 本机系统:Windows 10 Pro(64位) Node.js : 14.17.5(64位) nodejs安装及环境配置二、安装Node.js步骤 《1》下载对应你系统的Node.js版本: https://nodejs.org/en/download/ 《2》选安装目录进行安装 《3》环境配置 《4》测试 …

NodeJS、NPM安装配置步骤(windows版本)

原文章:NodeJS、NPM安装配置步骤(windows版本) 参考菜鸟教程学习nodeJS,碰到npm安装express,一直提示缺少xx文件之类的,终于找到解决方案了,原来要提前配置好环境变量的。 原文章棒棒哒,下面粘贴一下&…