• 本帖持续有效嗷!!!🚥

  • 是的是的,这个业务讲解,一般我会讲这么些内容:

    1. 团队定位,本团队负责范围,合作团队工作,双方的工作边界 —— 让新人明白为什么要做这些工作
    2. 团队所有的方向,新人会接触的到子方向工作总览,以及直接接触的子工作 —— 让新人明白做的是什么工作

    以上时间大概 55 开,都很重要,但是不要陷入太多细节,要把主链路呈现清楚,不分散新人的注意力

  • 目前待过 4 名新人(社招校招均有),简单分享我的经验。

    • 入职第一天的业务讲解:这个是最重要的手段,重点是如何在一个新人面前将整体业务的逻辑讲清楚,需要考量新人的背景知识是否适合,讲解粒度是否要调整,很考验导师的水平(如果讲完新人不懂,我觉得是讲解人的表达总结水平问题)
    • 文档:文档以简明有重点为主,细节充足是好事,但是要能保证维护更新
    • 定期 1v1:前两个月每周或者每双周要 1v1 一次,这个 1v1 学问非常大,并不是找个时间让你去给新人洗脑,而是要真实关心新人的状态。1v1 要让新人来主导,让 ta 提问题你来回答或者解决。可以从【工作遇到的挑战、工作的成就来源、团队沟通合作、工作内容感受】等不同维度引导。里面有非常多的技巧性,个人水平有限也在持续摸索
    • 培训:大厂一般会有强制观看内部录制课程的机制,如果公司没有这样的机制那就只能看个人了,导师可以自行收集一些外网视频或分享会等资料,打包提供给新人,并建立简单的学习复核考察机制

    上面这些点,作用最大的是首日业务讲解,细水长流靠的是定期 1v1 和适当的文档。

  • UI 自动化中的分层设计 at 2021年11月08日

    我接触的 UI 自动化还停留在传统的 PO 封装上,看完此文后不知道我下面的表述是否正确:

    1. 组件层:这层基本上都是控件定位的封装,简单来说可能是各种 find、locate elements 等控件定位获取的操作?
    2. 页面层:基于组件层对所有控件定位的封装,在这一层就是把相同页面的控件整合在一起呈现一个页面的类,看起来似乎很薄?
    3. 业务逻辑层:这一层比较好理解,一个或多个页面上有业务一样的操作,比如账号登录是一个业务逻辑(当然也能说是一个用例,这里举例可能不够合适),在这一层给封装起来
    4. 用例层:很好理解,如果按照这样的模式,写用例基本就是调函数了
  • 同样没了解过,尝试猜测一下。
    首先大型游戏肯定都是模块化开发的,各个组件(物理、光照、)最开始肯定都是单独的测试,可能是单测、接口测试、宿主 demo 测试,个人感觉跟 sdk 的测试方法可能比较接近。
    当模块化的组件确保没有问题,开始组合成场景(不同的场景由同样的组件集合来组装,就是等价类的概念),场景中插入一些任务,这里的 “任务” 概念我理解就是业务逻辑,这个时候相当于是集成测试环节。一个 3A 游戏虽然复杂(剧情、玩法、各种要素、各种场景等),但从游戏迭代的角度来说还是应该高度自动化的(游戏 bugfix 补丁也可以去跑)。而集成测试,可能会有部分专业的人做探索测试,更多工作可能是给到外包团队低成本铺人去点点点。

  • 如楼上所说方案,我们目前也是用方案三,自己买主机挂载手机,同时连在办公网(wifi)下,而不是放在 idc 机房。
    idc 机房可能会跟办公网隔离,不同公司规章制度不一样。

  • 长见识了…… 真不知道还会有这种坑

  • 按照线上页面的 PV、UV 排个序,首先最高的页面下几个最高的场景肯定是要做的,然后 QA、RD、PM 内部商讨,剩余长尾页面哪些要额外补充 UI 自动化

  • 精准测试中的一些疑问? at 2021年10月28日

    举个例子,比如说你的增量调用链最后是 B->C->D,你通过覆盖率拿到你测试后的调用链是 A->B->C->D->E->F ,这样不就能理解你的的测试已经覆盖了你的增量链路么? 也就是判断子集的操作

  • 同楼上
    问题一:直觉上就是发压机的配置跟不上,如果你是用 PC 机发压,这个可能就更大了。建议关注一下发压机的配置,以及发压机在发压时候的资源占用情况。

    问题二:可以先盘点一下,部署在两台不同的机器上会有什么差异

    • 环境:机器配置(是否有一台的配置特别拉胯)、环境变量、
    • 网络:不在一个局域网,是否距离比较远如异地机器
    • 其他……(甚至可能是你在单台部署和两台部署时,没有控制好变量出现的差异)

    问题三:具体要看业务逻辑实现,对于 “校验客户密码” 这种接口,应该是每次都要查询数据库,合理的代码实现不应该使用缓存

  • 精准测试中的一些疑问? at 2021年10月27日
    1. 我理解去不了所谓的【无关调用】,你想在静态分析技术中处理动态运行存在的问题,看着有点玄幻。要不就是你本身已经具备先验知识,比如你事先知道要关注的调用链上游会包含什么因素,那你就只关注这条子调用链即可,其他的不管。
    2. 要判断【这条调用链有覆盖】,换个说法就是判断【覆盖路径 是否包含 调用链】,也就是调用链是覆盖链路的子集。具体怎么搞,那就看你的数据格式是怎么样的。
  • 继续在这种地方呆着不走,除非你有什么难言之隐,不然就是对自己的未来不负责

  • AI 自动化就这样实现了 at 2021年10月25日

    我理解是一样的道理,算法在 monkey 上的作用就是决策下一步要点击哪个空间获得的 “收益” 更大,还是有可能直接给点 “返回按钮”。
    我表达的意思是,这个手段在使用细节上还是有很多测试策略需要考虑的

  • AI 自动化就这样实现了 at 2021年10月22日

    我们内部有实现了一套差不多的玩意,我们管这叫 scheme 定向测试,只是说,可能定向过去的是一个原生页面、前端页面、内部其他技术制造的页面等。

    其实有弊端:

    1. 并非所有页面都能这样跳转,需要页面自身支持这样跳转才行。
    2. 跳转本身所携带的参数是你在收集那一刻就被写死的,它缺少了动态的变化,跳转过去遍历测试一样会存在覆盖的死角。

    不过还是有很多场景可以应用这种测试方式的,比如提高测试覆盖率、线下问题复现压测、某些特殊场景的定向测试。

    如果要结合遍历测试来做,还需要预防跳转过去后,monkey 给你点到回退到其他页面了。

  • 机器学习,轻松搞起来 at 2021年10月21日

    我觉得吧,能把大学那些数学课先捡起来(尤其是工作多年之后),就已经不是一件特别轻松的事情。

    如果真的很轻松,要不就是天赋过人,要不就是基础确实稳扎稳打,要不就是学了点套路当调参侠自嗨

  • 我如何面对 “双减裁员” at 2021年10月21日

    offer 中也有薪资开的比较高,越是工作年限比较久,越要知道下一份工作能得到什么,尤其在当下互联网环境,很难找到完美得工作,但是可以找到适合的自己工作.

    表示这一点非常赞同,一定要看准赛道跳进去,跳进去之前又要充分考察这个公司、团队、岗位是否适合自己发挥。到这种时候 base 上差个两三 k 已经不是什么需要关注的问题了,主要还是考虑未来继续发展的空间。

  • 对的,其实压测本来就是有两种目的,视不同场景:

    • 目的一:要上一个活动,这个活动从产品侧估计会有 N 人参与,所以某些接口必须要能支持这种程度的压力,这种就是在上线前就有明确的压力预期(一般是 8/2 原则来评估),压测的主要目标是 check 接口能否达到这个预期
    • 目的二:要上一个新功能,这个功能大家都不知道会有多少人用,是个船新的东西。这时需要旁敲侧击,比如有无类似的接口可以拿数据来参考,或者有个保底的用户人数,这时候压测的主要目标是看这个接口能承受的极限压力,先让大家知道这个接口能扛得住多少多少,然后在来评估是否合适上线

    压测我以前做过一个总结,可以看我的博客做个参考。

  • 如果产品不明白,那还是得耐心解释给他们听,其实这也是你在研发和产品之间制造自己影响力的机会,让大家觉得你知道得很多决策经常正确,那是一件好事。

  • 所谓的熟练掌握 python,一般只需要系统把 python 学一次就够了,要求就是一个普通的想法能用 python 这个工具正确实现表达出来即可。并不会强制你掌握那种 blingbling 的、很 pythonic 的、很奇技淫巧的实现方式。

    其实不仅仅是 python,对所有的编程语言都是一样,它们都只是我们的编程工具,只是说你追究到库源码实现、编译器虚拟机实现层面上,在某些特定场景下能帮助你解决问题和优化代码。单纯从测试开发的岗位来说,除非个人爱好或者工作面试需求,不然也不是非得到那种深度。

    当然,多看别人的代码,尤其是高效优美的代码(github 高 star 项目),对自己还是非常有帮助的。

  • mark,这个周末拉到家里的电脑认真阅读一下源码~ 看看能不能给找几个 bug hhhhhhh

  • 申请开通专栏~ 感谢 @simple

  • 曾经在企业里作为乙方对内部的网站系统搞过 4 个多月的渗透测试(或者叫安全测试更合理,因为不够专业),简单分享一下如何入门:

    1. OWASP 一定要看,每年都会有 OWASP 出台的 top10 安全风险,这些是说明安全问题重要性的重要依据
    2. 安全细分方向十分多,我猜楼主应该是问 web 方向(其他方向我也不懂,太深),先了解常用工具,burpsuite、owasp zap、sqlmap 等,要自行采集,网上一搜很多博客、github 也一吨开源工具
    3. 理解基本安全概念和安全漏洞类型,一定要理解,不然永远都是 script kiddie,鄙视链最底端,以下是部分列举:sql 注入、XSS、CSRF、水平与垂直越权、敏感信息泄露、命令注入、路径遍历、文件上传…… 理解这些安全漏洞的典型成因(如何写这些漏洞出来)以及带来的危害(怎么用这些漏洞搞事情)
    4. 找地方实战,建议本地搭建开源的环境进行训练OWASP juice shop
    5. 往下就是各种实战去精进技巧和意识,加深对各类测试工具和漏洞的理解,做更多白盒审计来挖掘漏洞,学习更多安全领域技术,不断变强……(我本人到第 4 步就没再往下了)
  • 一个接口做不做压测,是应该测试人员自己判断 ,还是听开发说呢?

    结论:产品、开发、测试共同判断。
    如果这个接口有历史数据,可以基于历史数据来分析接口重要性,再判断是否要压测。
    如果这个接口没有历史数据,是新增接口,最正确的方式都是产品、开发、测试三方一同判断。或者某方判断出结论后,正式地(会议、邮件均可,至少有书面记录性质的东西)跟其他方同步并征求意见最终确定下来(这样做的原因,是出问题一起背锅……)。

    应该怎么判断一个接口做不做压测?

    1. 有历史数据就基于历史数据判断重要性或者优先级
    2. 如果没有历史数据,要预估新接口的 QPS 和对应的服务器资源。如果 QPS 达到某个阈值就考虑压测,阈值要根据业务和历史压测其他接口的情况去判断
    3. 产品核心功能相关的接口一定要压测(除非真的没人力,而且预期没有负载压力)
    4. 测试直觉……(这个接口 tmd 肯定在压测时有严重 bug,那就压它证明自己)
  • 2 楼已经回答得很好,我补充一下个人的观点。从面试官的角度来问,其实本质上是考察你对整个业务的熟悉程度,面试官可能想从一个相对系统的视角来看看你有没有梳理过整个业务逻辑,所以才会问这种问题(我也偶尔会这样问,住)。

    ok,知道面试官的目的,我觉得就可以针对性回答。
    一些猥琐加分技巧:我们的目标是要让面试官能通过我们的口头描述,让他 “自认为” 理解了业务;同时为了让他听得开心,让他觉得自己的理解力好强,所以我们还要找重点去说,并围绕这个重点做深入。

    综上,回答方式可以这样:

    1. 先从典型的用户场景出发,描述整个系统在各个环节上偏户侧的输入输出,这是为了让面试官理解业务形态
    2. 从系统外部数据入口出发,对场景分割上下游等不同环节,将系统拆成 A->B->C->D 等简明流程(一定要注意抹去技术细节,有些很繁杂的业务互相调用,说出来会加深面试官理解难度,反而让面试官觉得你说不清楚没有条理)
    3. 逐个解释 A、B、C、D 各自干了什么事情,以及挑里面的一两个难点升华一下(这是为了突出你对技术细节的关注,如果了解够多,还可以说说业界一般是怎么解决这种问题)

    以上。

    一些点:

    1. 除非面试官问你数据库表的设计,否则不要说到那种粒度,因为没有必要,它不是重点
    2. 注意整体条理性和清晰性,在细节和简洁上做选择,个人建议牺牲细节。面试就是要让面试官理解,而不是把面试官说懵
    3. 这不是写文档般严谨的工作时序图,除非有纸笔现场画,否则真没必要讲得这么深这么晦涩
  • 关于遍历测试的想法交流 at 2021年10月15日

    Get ~