• 测试开发到底应该干点啥 at 2022年03月22日

    本质职责:保产品质量底线,如有余力,再来说提升研发测试效率

    1. 常见的标准质量体系是什么
    2. 业务形态相关的特型质量问题在哪里
    3. 你的数据度量大盘有没有

    呈现上,你的能力地图(都已经有些什么能力),你的风险地图(盘点业务潜在的质量问题),早期通过度量大盘驱动业务建设,后期通过能力成熟度模型深化工程能力,这一套套看似官话套话的东西,理解下来,够做好多年。

    1. 深度结合公司内部的研发体系,从 流量抓取、发压机部署、测试流量染色、发压策略配置、压测度量 等各个环节做更深度的定制,得到更好的效果。这个是最主要的原因,大厂的基本环境,不是外部系统搬过来就能用的。
    2. 方案成熟,目标明确,建设起来晋升涨工资。
    3. 带一拨人排坑撸出来后,跳槽下一家公司涨工资,经验还能再复制一遍。
  • 中高阶的知识一般来源有:进阶书本、twitter 等各类外国社交论坛、paper、工作实战、业界了解等……

    测试技术相对来说,信息获取渠道更加局限,因为很多深入的测试技术是细分到具体领域的,而不会被人当成测试单独放在一起。

    比较可行的方式:工作实战、业界了解、paper。(书本太少、社交论坛很少深入探讨测试或者质量,更多时候可能放到效能工程里头去)

  • 数据为什么会走丢了呢? at 2022年03月15日

    找到了两篇相关文章:

    没想到协议栈底层原来会这样处理数据,send函数只是将数据写到了内核缓冲区,所以send函数的返回值不代表对方已经收到多少数据,挺有意思。

    1. 测试单独部署一个环境,在上面随便搞,搞完全量清除下次再用
    2. 测试数据添加一个标识,比如 id 或者 name 统统以某种特征开头,测完后手工 sql 删除
    3. 参考 3 楼
  • 个人看法,只要不是过度监控,就是有做得必要。
    收益:

    1. 尽早发现问题,尽早做出响应,争取更多时间,不用多解释
    2. 排查定位问题,如某特定类型的 error 日志开始暴涨,很容易知道是谁的变更引入问题

    但是在具体实施时要考虑一些因素:

    1. 监控触达率,不要搞低效的监控通知机制,比如群里甩个没啥信息量的报警,除非有明确的奖惩机制,否则一般没人管
    2. 监控误报率,监控不是做了就完事,是需要持续运营跟进的,不然后面监控准确性越来越低会直接影响正常工作,监控变成了垃圾
    3. 监控覆盖率,如果当成是一个正儿八经的事情来做,就需要考虑这个点,否则可以不管
  • 不排除楼主要搞竞品评测自动化😂

  • 建议提供现场信息,机型、系统、app 版本、wda 日志

  • 1 分钟真男人

  • 左右移思路上是做盘点枚举。

    从版本生命周期或者研发流程出发:

    需求提出与评审->技术设计&评审->测试设计&评审->代码合入&测试->灰度上线->全量上线

    从这里面逐个环节去看,质量和效能层面分别能做什么……就不会再说【每次 build 就触发自动化测试】而且还自我感觉说到本质了😂

  • 你一下子给好几个难度不低的问题,不知道要回答你哪一个……

  • 在互联网公司,看不同的团队定位和业务发展阶段,感觉跟业务领域没有很强的关系:

    • 业务线移动端:不做 or 很少做(部分沉库代码有做)。业务迭代快,变动范围复杂,需求压力大,单测要大量做不现实也不合理,人力成本黑洞
    • 移动端中台 SDK:一般都会做。因为要接入到多个业务宿主上,出问题概率高,业务也会要求中台做好质量管控,单测是很好切入点
    • 服务端:建议做。服务端频繁发布上线,不容易受移动端版本发布时间节点限制,集成测试不如移动端直观,单测是十分好的质量底线
  • 测试的产出到底是什么 at 2022年02月19日

    分业务体量而言,业务不同的发展阶段,本身在产品质量上的目标是不一样的。

    • 业务起步阶段,就是要快,要争取时间窗口,产品质量不可能是业务的核心。整个产品根本就不复杂,对测试的要求也很明确 —— 发现 Bug,线下抓一个 Bug 线上就少一个问题。本质上问题处于有限阶段,问题是可以被修复完的。
    • 业务发展阶段,业务长期方向明确,大家持续为业务添砖加瓦使得业务已经呈现一定复杂度,线上问题反馈在研发内部已经开始难以消化,产品质量开始成为大家的关注点。随着研发团队膨胀质量甚至出现回退,很容易就发现 50 人的团队使用 5 人的合作方式已经不可靠了,由于流程紊乱和信息不对齐,非常多低级 Bug 在研发早期被引入,这时测试的产出除了单纯抓 Bug 外,引入了更高的要求 —— 规范出更好的研发测试流程,在不同阶段定要求定标准,最终把控产品线上质量风险;Bug 是解不完的也测不全的,那如何兜底线上质量问题、如何高效吞吐需求、如何低成本跟进线上反馈,也就出现了效能建设的要求。
    • 业务成熟阶段,业务整体形态已经稳定,业务增长出现瓶颈,产品研发都在探索以求进一步突破用户体量。一般到了这个阶段,研发内部甚至都有人力空余下来,去做横向通用的技术建设(大公司就搞中台),本质目标是希望从成熟业务中孵化出通用能力,让下一个新兴产品做得更好更快更低成本。这种情况下,测试和研发可能是竞对又合作的关系,因为大家都在关注技术和质量,大家都可以做类似的建设。测试的产出要求就更加多,点点点的测试就很明显外包化了 —— 通用的质量效能建设,要求产出可支持横向拓展的平台服务、工具流程、质量标准,抽象来说,就是需要成熟业务的测试团队去产出 “可复制的质量”,从而让每一个产品都能享受到比较好的质量建设。

    以上其实并不全面,在细节上千丝万缕,不同的团队配置,不同的业务体量,不同的公司基建都会有不一样的要求。

    • 必备:

      • 实现宿主 demo,包装 SDK 进去单个功能做测试(人肉)
      • SDK 层面函数级别的单测
      • SDK 层面暴露测试接口,针对宿主 demo 做 UI 自动化更深入的测试
      • SDK 请求的服务端接口,对这些接口做自动化
    • 其他:

      • SDK 接入使用规范(防止接入方用预料外的奇怪姿势使用)
    • 高级:

      • 静态检测能力(比如楼主提到的库依赖冲突,宿主和 SDK 依赖了同一个库的不同版本存在冲突,需要 case by case)
      • SDK 性能:宿主资源占用、极端场景
      • 对被请求服务端的关注度
  • 本帖长期有效昂!!!感兴趣的同学快来看看

  • 公司开发人员参与度不高(可能认为就是形式会议)

    大概率是参与各方不理解用例评审的价值,这里影响因素很多,一方面是参与方意识和理解不到位导致对这个会议不重视,另一方面是主持人主持得不好让大家犯困了。个人感觉很重要的点,这个会议不能开太久,最好控制在半小时内,一小时已经有点难顶了……
    在技巧上,可以把这次会议当成与研发的交流会,在会上问研发对本次测试最关注的点在哪里,他们希望测什么以及为什么这么想,再反过来去补充用例或调整优先级,让各方参与进来的一些小技巧。(产品一般好像没什么必要参加,至少我参与过的评审都没有产品)

    测试用例过多,评审时间长效率低(是否可以筛选出部分用例进行评审)

    这个是要筛选的,用例评审不是流水账,重点是体现测试思路,其次才是曝光测试执行过程。一些很常规的、共识性质的测试用例就没必要啰嗦,比如核心路径和普通异常测试等。也不用啰嗦你每一步是怎么操作(除非真的很复杂有信息量在里面),大家也不是傻的,自行看一下就能理解。
    至于如何才叫重点测试用例,就要看需求来说了。

    无法感知到评审用例给整个团队带来什么(收效甚微)

    这个很难用数据来衡量,一般是看大家对用例评审的口碑和满意度,如果大家真的觉得不行,那言语上都会抱怨这个东西,如果大家觉得听了很有意义,对研发来说补充到没考虑的场景提高程序健壮性,对测试来说提升了影响力并通过评审找到了 “测试的感觉”,那就应该让它继续开展下去。

  • 在专门的测试团队中做测试

    我理解这种是测试同学属于一个质量保障大部门独立运行,测试同学以资源小组的形式打散到不同业务中去支持业务发展,与业务线的产品研发不在一个大部门中。

    • 优点:人多力量大,这种架构下质量大部门下会孵化出单独的中台质量技术团队,去探索先进测试技术,会做质量平台和工具来提效,这时候测试同学有更多机会往技术深入的方向发展,测试的方法论和目标一般会好,工作更加讲求效能逻辑、效能、计划。另外,不同业务线中的同学,有机会互相交流探讨不同业务形态下的测试工作差异。
    • 缺点:并不是每个人都可以去干最有含金量的事情,看清现实吧……其实还是要看所支持的产品线,如果产品线资源很紧张迭代非常快,其实测试同学也没精力去搞啥技术,只能从大部门中把测试拿过来业务上落地。不过这并不妨碍个人从大环境中学习成长。

    在开发团队中做测试

    我理解这种是测试同学跟业务绑定,和产品研发同属于一个团队。

    • 优点:研发测试沟通协作或许会更好(只是或许,不一定比第一种就好),有更多机会深入到业务中做建设,跟研发交流。
    • 缺点:缺少测试技术标杆,一般这种团队下成长起来的测试同学对测试体系的理解不深,更多是带着研发视角来看待问题。而且由于缺少大部门高纬度的工作方针指导,也没了大部门的撑腰,测试同学很可能沦为产品研发的下游角色,只负责最低端的测试工作,发展上限低。

    总结:我更偏向于第一种,因为第一种才真正代表着质量保障团队在发展壮大,测试同学才可以跟着大部门水涨船高,对于大多数人来说单打独斗是非常难做出彩的,长期来看少了对应指导也会让职业中后期产生认知和视野上的劣势。

  • 一些网络协议相关的问题 at 2022年02月15日
    1. IP 和域名瞎猜是落地保存但是有过期时长或过期策略,好细节真的给干不会了 😅
    2. 问题 2 已经看不懂了,不知是否问题表述上有出入【让服务器再次向 DNS 请求后再与被请求域名服务器建立 TCP 链接?】
    3. 同 2
    4. 每次请求前都清一次本地 DNS 缓存?(至于清理的方法,得靠搜索引擎了😅 😅
  • 4 楼回答得很棒,我做个精简版:

    1. 异步请求发起时 —— 响应方立即的接口反馈是否符合预期,比如最基本的异步消息入队是否成功
    2. 异步请求发起后 —— 验证中间态数据,着手点一般有:流量染色(服务调用链)、中间日志、数据库数据
    3. 异步请求结束后 —— 最终数据状态一致性,如请求结束各方是否工作完毕并正常
  • 细节纠偏,radis -> redis 😀

  • 其实还好啦,代码文件拉下来就 2000 来行,一大堆注释和增加可读性的空行,实际代码感觉不足 1000 行,拿两个小时出来专心点看一看,把过于细节的部分省掉只看核心,就是纸老虎了🍦

  • 招招招,只要是素质好的全都要,HC 很足呢~

  • 尝试以相对狭隘的视角去理解题主的问题,限制在小的范畴去回答。

    1. 理解业务形态,针对性做建设
      不同业务形态对应不同的质量风险或测试难点,如图文资讯、视频直播、电商购物必然意味着不同的前后端问题类型,深挖所负责的业务全链路,每个环节上研发做了哪些技术工作,再来看这个技术工作是否合理,做体系化(“体系” 这两个字难度真的很大)的建设和查漏补缺

    2. 不标准不规范的地方会引入混乱和沟通成本,找出并解决
      比较好下手的就是研发流程,狭义上我们说需求提交、UI 设计、技术评审、测试评审、技术开发、研发自测、测试执行、灰度上线、全量上线、线上监控等等的环节,从人工执行的环节下手,做好各种标准规范去约束混乱的自发行为;再拓展一下,可以细化到每个环节的具体,比如编码实现环节,施加质量层面的编码规范(数据信息的安全隐私、组件使用的姿势等等)

    3. 研发效能提升
      其实质量或测试本质上就是研发效能的一部分,拓展一下其实可以把研发效能也纳进来。是否有更好的工具平台来提升研发测试体验,如全链路日志检索平台、接口自动化平台、用例管理平台…… 这些平台数不尽说不完,还是要看研发测试的痛点。另外一些就是测试提效或测试深度,如接口抓包 mock 平台、UI 自动化框架、monkey 工具……