• 接口规范性,从这个名字猜测,像是验证是否符合 json schema 。不过这个猜测没啥意义,老板的用词不一定那么讲究。

    但建议你和你老板聊下,了解清楚他想达到什么目标,再看对应做什么可以达到他的目标?

  • 如果是普通程序,写个 for 循环,循环点击每个台位,直到有订单就好。 appium 有提供 findElements 方法,可以找到符合条件的所有元素。
    但放在自动化测试,应该是你在前置条件就给某个指定台位生成好订单,测试时直接用这个台位就一定有订单。

    因为如果前置造数据自动化里没控制,你的自动化用例就会不稳定(比如确实所有台位都没订单,那你这个用例算通过还是算不通过?)。不稳定的自动化会在后面浪费你大量时间去排查处理,所以至少在思路上就保证路径唯一,减少可变因素。

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

    1.直接请求服务端,数据已经存储在你手机本地文件,不会被别人所影响;

    没太明白。比如金融类业务,“账户余额” 数据是服务端返回的,不可能 app 内置,也不应该存储在手机本地文件(安全性考量)。这类数据不会变化么?还是说你们的业务,确实就全部 app 存储数据?

    2.自动回放,我们主要是关于页面能不能跳转,也就是根据你操作的步骤,可能有一个误解,轨迹的回放,其实就是你操作的步骤加数据,所以可以保证你之前的页面,没有问题,而遍历测试指的是有序的遍历,比如你操作的了 A-B-C 页面,就会对先对 A 页面所有控件进行点击,执行完,再执行 B 页面,不会类似 monkey 的无序遍历;router 协议跳转,无法全部像有序功能测试全部验证逻辑,但一大部分可以验证,比如,进入 a,在进入 B,在进入 C,在 D 验证逻辑,那我就可以直接先进入 C,在 D 验证逻辑,数据都是我录制就有的;

    这个理解了,感谢。

    3.AI 的话,其实就是测试工程师测试完以后,apk 自动化上传测试的数据,服务端根据数据进行排序,类似排名,来确认这个版本哪些页面经常操作,并且这些页面是什么数据的,然后自动化就会定时去获取这些数据,进行页面跳转测试或者页面的遍历测试。其中 AI,就是自动化对数据的解析,最简单的应用。其中这个算法跟数据,还有很大改进。我们只是简单运用。

    这个在我目前看到的内容来说,只是聚类或者排序算法层面,还不属于 AI 吧?AI 一般特指机器学习或者强化学习,最基础需要有模型、特征、预测值这些,但你这里都没见到有相关的信息。不建议把所有算法都套上 AI 这个名字,容易变成标题党引起反感。

  • 探讨 if...else 的替代方案 at 2021年10月24日

    赞,很实用

  • MTSC 大会最近 2 届也有不少华为应用市场这类偏互联网业务的出来分享,所以不至于说完全封闭。至于是否到社区之类的交流互动,估计是公司内部缺少气氛或者协议有规定吧,毕竟华为一直都比较低调。

    另外,其实本身测试里面交流多的主要也是互联网领域,因为业务相似度高,容易交流。华为互联网相关业务相对较少,目前出来分享的都是应用市场、鸿蒙这类偏互联网的。如果是华为占比最大的偏通讯业务的出来交流,也不见得会在互联网测试的圈子里交流,所以可能这里也会存在幸存者偏差。

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

    被标题吸引进来了,思路确实是挺特别的,基于 app 内部提供的 router 组件统一跳转机制,达到跳转到任意页面的能力。以前我们公司内的 app 架构师也有分享这个,通过 router 来把各个页面组件进行解耦,提高复用性。

    有几个疑问点,想交流下:

    1、这种 router 提供的能力,主要是 app 部分的,但进入页面后请求服务端数据,还是需要依赖服务端。一般服务端数据也会可能因为有其他人操作导致变化,会引起无法正常回放,这块是怎么处理的?
    2、从楼主分享来看,自动回放/遍历方面主要关注 crash/anr ,而这种跳过所有前置步骤直接进入目标页面的方式,会不会导致一些长时间运行才会出现的问题或者组合页面才会出现的问题(比如对一些公共层数据的操作),无法出现?
    3、不知道楼主在标题特意强调的 "AI" ,指的是哪部分?微信的文章也看完了,没太看到在哪里运用了 AI 。

  • 这个工具以前所在公司别的团队调研分享有看过,当时有小范围使用,但后面也没有深度用,不知道有没有什么暗坑。

    而且这个工具不开源,且比较商业化,大部分公司还是更喜欢免费开源的工具。

  • get,已记录 issue

  • 你可以去一些沙龙大会看看,大部分用的是 mac 。我说下我选择 mac 的几个核心原因:

    1、稳定。我的 mac 几乎天天都用,但一年也就只会因为磁盘空间不足或者要升级系统关几次机,其他大部分时间都只是合盖休眠。这样能确保我每次不用再逐个打开各个软件(日常工作一般都是好几个 idea + 浏览器 + 聊天工具开着),节省时间,思维也比较容易恢复。
    2、续航强。windows 本续航能跟上 mac 的,价格基本都比 mac 贵。
    3、触控板超好用。我现在日常都用触控板,鼠标基本都不怎么用了。借助触控板 + 全屏应用,能让我更专注在当前工作,不会频繁被消息打断。

  • 看你预算,预算够 16G 内存更好,预算不够可以 8GB,或者直接看官方翻新版,一般同配置官方翻新版可以便宜 20% 左右,而且也可以免息分期。

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

    佩服可以面 30+,手握 10 个以上 offer 的。我毕业到现在累计面试过的估计都没 30 个公司。

  • 开源工具平台的系列文章,默认只加精第一个哈。你可以在第一个头部加上其他后续文章的链接成为一个合集。
    后面有干货更足的解析文章,再加精。

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

    感觉有点标题党。我理解的 “轻松搞起来” ,应该是某种机器学习通用套路的介绍,让大家对机器学习的认识能大道至简,快速上手?文中的介绍,感觉对学习机器学习没太大的实际指导作用吧?下面推荐的几本书,都属于专业书,不确定大家入门是否适合。西瓜书以前有看过,对于一个高数已经还给老师的我,前三章都迈不过。

    也这个地方分享大家一门我看到过觉得比较不错的机器学习的教程,google 出品的机器学习速成课程,有视频、有文章、有在线练习,学起来比看书要容易记忆。据说本身设计就是用来给内部非机器学习的技术人员快速用上机器学习的,不过内容其实也蛮多的,每天 1 小时,得坚持快 1 个月左右才能完全看完第一遍。

  • 你们这个问题,在于在团队在性能方面专业度不足、无法达成团队共识的情况下,对于性能测试相关决策,没有明确可以拍板的人。产品明显不具备能力,开发和测试意见又相左,甚至开发内部都有两种不同的意见。

    解决也不难,看按照你们公司现在的情况,线上性能出严重问题要背锅,是谁来背,然后这个背锅的人/角色来拍板就可以了。拍板的人觉得现在大家都不专业,性能测试做了也没啥意义(对于你目前这个团队情况,我觉得性能测试做完,线上仍然有性能问题这个可能性确实是有的),干脆一刀切全部不做,通过线上监控 + 云服务的灵活伸缩来处理,也是可以的。

    当然,从完善的质量保障角度,性能测试肯定不能全部不做,所以可以后面多给开发产品普及下性能出问题影响业务的案例,以及在后面真出事故后,复盘里增加对故障涉及接口的性能测试,这样来逐步推进。

  • 这个问题如果是正面回答,就是自动化两个语言都可以用。至于哪个更广泛,如果单纯按从业人员数量,python 更容易上手,数量应该更多。

    但我觉得哪个广泛实际并没有意义,个人理解你的关注点不是统计意义上的 “哪个更多人用”,而是和你切身利益相关的 “哪个更能让你找到好工作” 。所以,建议你要关注的是你的目标公司用的是什么语言。实际上更多人的选择是 主力深入一门,然后另一门也会写或者可以随时快速上手。语言这东西,很多思想其实是相通的,测试用到的大部分场景其实不涉及语言特性(如 java 语言特有的的字节码增强技术),所以深入掌握一门后,要上手另一门主要是语法做一些切换,比从零学习一门语言会快很多。写前后端分离的平台,前端还得用 js 呢,不也一样得学到够用为止?

    也从我个人角度,分析下实际用 python 或者 java ,背后的逻辑,仅供参考:

    python:上手快,语法相对简单。但因为公司内部自研的开发框架或者平台很少用(互联网大部分开发用的是 java ),所以对接开发框架时会比较麻烦,遇到问题开发也比较难协助。属于短期收益高,长期收益比 java 低一些。

    java:上手慢,语法相比 python 要复杂一些。但和开发语言相同,对接开发框架非常便利,而且遇到技术难题也非常便于寻找开发协助,甚至写脚本学会 java 后,还能增进阅读开发代码的水平,产生比做自动化更大的收益。所以属于短期收益低,但长期收益高。

    这可能也是为什么大部分测试技术做的比较深,和开发框架平台对接比较多的公司,选 java 的比例会高一些的原因吧。

  • 可以发下你收到通知的截图?有可能是你关注的人有上来回复了,也会收到通知。

  • 我意思是,我不确定你现在一直去纠结 “怎么把第三方 app 的控件 id 做到多设备一致” 这个,是否是你现在真正想达到目的的最佳方案。

    android 并非所有控件都一定有 resourceId ,采用 resourceId 也无法唯一指定界面的唯一元素。resourceId 的设计用途不是给 UI 自动化用的,而是给开发人员快速标识某个特定 view 控件,便于在程序中引用和操控的。从这个用途出发,不见得所有 view 都要加 resourceId(程序不引用就没必要加了),也不见得一定唯一(比如多个控件样子一致,也可能直接用一样的 resourceId )。详细介绍可以看看这篇文章:https://sharrychoo.github.io/blog/android-source/resources-find-and-open

    现在可以确定的是,“把第三方 app 的控件 id 做到多设备一致” 是一个技术成本不低的方案,毕竟第三方 app 对你而言是一个不可控的东西,只有你适配他,不可能他适配你。从更低成本解决问题角度考虑,此时应该就要再回去重新想清楚最终目的是什么,是否必须要用基于控件的 UI 自动化这个方案来解决,接口爬虫、直接录制回放型的自动化工具是否可以考虑。但你一直没说明你的最终目的是要做什么,所以也没法给你更有效的建议了。

  • 挺中肯的文章,受教了。

  • 我看日志,应该后面重试后成功了,现在这日志也看不出错误原因,建议再持续执行多几次,采集更多数据再分析定位吧。

  • 加精了,期望后面更详细的分享。

  • error: more than one device/emulator

    这个报错一般出现在连接了多于一台 android 设备上,运行 adb 命令时未明确设定设备的 udid 时。你看下你自动化脚本是不是没有指定 udid 给 appium ?

  • 熟练这个定义确实比较虚,个人理解一般是能把变成思路直接转化成对应的代码,并且里面用什么函数之类的都清楚,不用各种搜索引擎辅助为佳。

    放到面试考察这个场景:
    如果是为了面试回答问题,可以去看看常见 python 面试题,把答案都弄懂。
    如果是为了笔试,leetcode 选几个难度为低的,用 python 手写代码(不用 idea 辅助,也不搜索引擎查函数用法)试试,能做到手写出没 bug 能运行的代码应该也算。

  • http://testerhome.com/opensource_projects/sonic
    这个我这边收到的你提交项目的地址,你看下是否有权限可以改?

    默认审核未通过前,是不会出现在列表中的。

  • 1、你看下评论框右下角的 排版说明 ,你的 markdown 排版格式不对,所以内容展示不了。
    2、请按照 下拉框非下拉截图、下拉框非下拉状态的 xml 控件树、下拉框下拉截图、下拉框下拉状态的 xml 控件树 四个顺序来发吧,现在只有一个 xml 片段,一头雾水。