• 我应该是全社区最啰嗦的人。 https://testerhome.com/articles/21015

  • 楼主,下次请讲师的时候最好先打听一圈吧。 你也真是不问世事。。。。。

  • 新人职业发展方向 at 2019年10月22日

    自己先用起来吧, 等自己对这个东西熟悉了, 帮助研发做镜像,做部署方案。 让他们尝到甜头了就好推了

  • 新人职业发展方向 at 2019年10月19日

    就坚持做自己最擅长的事儿吧, 别想太多了。 就算有 100 条比纯技术更好的路, 但是不适合自己也是枉然。

  • 新人职业发展方向 at 2019年10月18日

    恩, 怎么说呢。 其实在职业发展的路上,大多数人大部分时间都是自学的,能有水平好的师傅肯认认真真教你的情况基本上很难遇到,尤其测试领域里就更难遇到了。 所以楼主觉得老大教不了自己的这个情况不用太纠结, 因为大家差不多都是这样的。 等你成长起来以后你会发现, 一般部门里老大要委以重任的人, 是要教老大应该做什么的人, 而不是老大教你该怎么做的人。

    反而是一个有技术挑战的工作环境更能让一个人成长起来。 就像你说的学的东西不用在工作中的话, 你也不敢说熟练。 所以学以致用才是最重要的。多想想怎么在工作中进行创新来提高效率是很重要的。

    还有就是关于学什么东西,该往哪个领域发展的问题。 自动化,容器化, 大数据等等等等都是方向,关键在于你能不能找到相关的工作岗位以及你能不能坚持下去。 你现在的情况是先不要纠结哪个方向最好, 而是抓住一个机会就走下去。 毕竟你现在还没有挑工作的能力, 现在只能是工作挑你。 任何一个领域你研究的深了,结果都不会差的。 还有就是其实后来你就慢慢知道了, 技术不仅仅是写代码, 甚至往后面发现 当你处理一个大型系统的时候,你大部分精力都不是在写代码上。你要学习的东西也早就超越了写代码的范畴。 比如学习各种中间件,分布式系统, 容器编排系统等等等等。 很多时候就是学这些东西学 1,2 个月。 然后上手写代码去做相关的事情就 1,2 周甚至几天就结束了。 比如我在 K8S 下做环境部署的时候, 在这之前学 k8s 学了 1 个多月,到写部署脚本的时候 3 天写完。 因为只有拥有能足够维护一整套 k8s 的能力的时候,你才能去真的写那几百行代码, 否则出了点什么问题你都解决不了。 所以平时可以不要只关注代码层面的东西, 不懂代码的人绝对不是技术人,但是技术绝对不仅仅是代码。 事实上代码写多了你就发现就那么回事了, 什么 UI,接口,单测,白盒黑盒的都没什么挑战了。

  • 测试开发之路----概要 at 2019年10月16日

    没事的,条条大路通罗马, 加油~~~

  • 测试开发之路----概要 at 2019年10月15日

    你直接点开我的个人主页看把。。。我好久没维护这个目录了

  • 我明白了, 你想做个统一的页面把所有自动化测试类型集成进去。 在这个上面操作。 这个可以啊,纯 web 开发的领域了。 你们想怎么搞就能怎么搞了~

  • 为什么你们非要把自动化测试弄出个平台来。。。。。。还要弄的像个产品一样。。。。

  • 额,我不是写过么。 就是那个什么 UI 自动化军规和常用设计模式。 我们的 UI 自动化真的没别的花样了。 就是老老实实的写代码。 说有花样也就是 grid 是启动在 k8s 里的, 可以并发几百个浏览器进行测试。

  • TO B 的业务产品形态相对稳定, 节奏相对慢一些。 比较好积累自动化测试用例

  • 我们主要是 web,我们大多数是因为环境不稳定。 因为我们的产品关系。 会起非常多的分布式任务, 这些分布式任务有 hive 的, 有 spark 的, 有 k8s 的。 环境依赖很重,这些分布式系统本身就有抖动, 比如 k8s 某个节点出现点问题, 可能就有一些 case 直接失败, hadoop 如果出现 IO 抖动, 可能任务就超时了, 训练某些模型的时候,需要从外网下载数据, 如果当时网络卡了一点, 可能也失败了。 当然还有一些 case 就是不稳定, 有些 UI 交互很恶心, 就是非常不稳定的。

  • 基本上 UI 自动化稳定性超过 95% 的地方, 要么是用例太少, 要么就是把不稳定的直接删除了。 我们之前维护过几千多的 UI 自动化测试用例, 后来稳定性在 97%。 但是你要知道我们曾经删除了上千条不稳定的测试脚本。 想不删用例达到 95% 很那。 我现在的项目目前是 1700 条 UI 自动化测试用例。 这一次我们没有删除不稳定的 case,每一次跑少说也是几十个 case 的失败。 都是因为不稳定。

  • 第四范式

  • 其实路径有很多的,在不同的行业和领域下,需要学习的东西是不一样的。 当然了通用的能力都差不多, 比如需要学习 python 和 java,在语言的基础上写自动化测试 (UI,API) 和自己写点小工具和平台,还有 linux 基础技能这些都是作为测开需要的通用能力, 属于基本上在哪都用的上的。 但是接下来需要我们在某个领域上进行深耕,学习更底层的技能。 就像我之前说的 k8s,因为我是混容器圈的,这是我选择的领域,所以这个领域内的所有东西都要去学, 包括 docker,k8s 以及在他们之上构建的容器生态里的很多开源项目。为此我专门去学了 golang 语言,并用 k8s 的 client-go 自己编写 k8s 的 CRD,controller 以及编写针对 k8s 的混沌工程项目。 这些都是在容器这个领域内需要用的技能。 它跟通用技术不一样,它是服务端技术,并且是特定领域的服务端技术,虽然它跟通用技术不一样,这些技术被限定在了一个领域内才能发挥价值。 但是往往拥有比较深的领域技能才是通向高阶测开的门票。 所以选择一个领域比较重要, 我之前确实说要多学一学容器的东西,比如 k8s。 因为这是一个之后服务端的主流技术,到今天可以发现 k8s 的势头非常猛,各个厂商的容器化已经成了定势。 而且从最近开源出来的项目来看 k8s 已经侵入了 AI,大数据,分布式计算等领域, 所以我一直认为这是一个值得去拼的领域。 还有其他领域,比如大数据领域,AI 领域。 就看你个人如何选择了。 当然这些是从我的经历和角度去看的。 我没有移动端的经验,所以不知道移动端有什么领域值得去深入研究。 你要做一个选择, 选对行业,挑对公司, 努力是排在这两个之后的。

  • 求教不停机更新如何实现 at 2019年05月27日

    冗余啊~~~ 多实例设计就好了。 更新的时候在备上升级, 然后一切换。

  • 恩~ 我理解楼主纠结的是如果要重复进入 125 分别进行操作 1 和 2,重复的工作会带来运行时间的延长等问题。 那是其实在自动化项目里, 可维护性 > 性能 。 适当的把 case 进行拆分是必要的, 不能把太多的逻辑放在一起。 性能问题可以交给分布式运行策略来提升

  • 一般都是业务形态不一样导致的。 尤其 TO C 和 TO B 的发版周期差别巨大。 在 TO C 的业务上,隔几天发一个版本都是正常的。 但是在 TO B 领域动辄几个月甚至一年。 面对的用户群体不一样, 节奏就不一样。

  • selenium 定位问题 at 2019年04月30日

    是不是不在一个 frame 里?可以下载一个在浏览器上使用 xpath 搜寻控件的插件试试

  • 其实我没明白, 自动化上不去,他们是怎么有胆子重构的

  • 不是调用其他 case, 就是你应该封装一个业务逻辑层。 case 是去调用业务逻辑层的东西的。 比如所有 case 都要登录,那就专门有个地方是写登录的逻辑的。 比如有很多的 case 在测试的时候依赖一些数据, 比如要测试查询订单那就要先有这个订单存在。 那么就可以专门有一个地方是封装的下单的逻辑。 理论上,case 要是精简的。 大部分的逻辑要封装到业务层里去。

  • 第一个楼主纠结的应该不是独立性, 而是纠结一个 case 依赖的太多其他业务逻辑到底是不是好的。 其实你都已经是 UI 自动化了, 测试的就是系统集成, 这时候为啥还要避免这个情况呢。 case 尽量避免依赖这是单元测试的思路~ 所以才有各种 mock 技术么。

    第二个就是测试数据到底是应该预先创建好的,还是实时调用系统功能来创建的。 看你们的情况了, 个人建议是团队水平不错就实时调用系统功能创建 (我们团队目前是这么做的),水平不好的就预先创建吧。

    PS: 建议楼主现阶段尽量少看这些纯理论书,没啥好处。

  • 其实现在 kubeadmin 已经比我写文章那会好用多了~~~ 我写的时候还是阿尔法版本, 现在应该已经正式 release 了。 用那玩意装 k8s 还是挺简单的