职业经验 聊一聊职业发展

刘晓光 · 2018年10月08日 · 最后由 lazydao 回复于 2023年09月28日 · 24059 次阅读
本帖已被设为精华帖!

老生常谈,再谈谈测试职业发展

有这么个普遍现象

测试招聘者,特别是一、二线互联网公司的招聘者最苦恼的事儿就是招人。想找到一个合适的人难于上青天,每天各种撒网,简历看几百份,面大几十人,能捞到一个中意的小伙伴就谢天谢地了。但同时很多测试小伙伴发现找工作很难,特别是进大一点的厂,他们特别挑:代码要会写,要有软件架构能力,问一大坨平时根本用不到的技术问题,还挑经验,挑沟通能力,挑这挑那,有时候还特么挑学历、挑年龄。。。 供求总难以匹配起来,造成了双方都很痛苦。

Why?

能力要求不匹配是最核心的问题。软件、互联网近 20 年来飞速成长,其实也经历了很多阶段。行业软件兴盛阶段和外包兴盛阶段(2000-2010 年)行业进入了大量的测试人员,当时最主流的测试实践是:重心放在系统验收阶段。测试人员的主要工作基本都投入在了基于业务的黑盒测试上,对代码能力、系统理解的能力要求不多。2010 年后,互联网行业的真正兴起让国内软件开发模式开始缓慢调头,快速迭代的模式逐步兴起,开发周期越来越短,迭代越来越快,但系统越来越庞大、复杂。原来的测试工作模式和工作范围越来越无法满足要求了。但大量从业人员技能范围转变是一件很难的事情,行业是有巨大惯性的。从宏观上看大量 QA 技能转变跟不上需求转变是造成市场供求不匹配的主要原因

So What?

三个观点:1. 只做手工测试,不懂系统实现的测试工程师的职业发展会越来越受限。2. 能够转型成适应市场需求的同学将在近几年的时间获得超额回报(因为市场供不应求,企业不得不抬高价格来寻找这样的人)。3.对于个体来说,自我成长永远最重要,自己永远要对自己的发展负责,别依赖外部环境,自己想办法变成市场的香饽饽才靠谱。

到底什么样的人抢手?

按照我一点理解讲一讲什么样子的人会抢手吧,限于篇幅会偏重技术角度来讲。个人之见,欢迎讨论和拍砖。

  • 测试的底子 - 项目经验
    有比较复杂系统的测试实战经验,你就超过了 50% 以上的应聘者。什么叫做比较复杂系统呢?投入 50 人年开发出来的系统就可以称作一个复杂系统了。因此,复杂系统并不是很罕见。但是,如果你只接触一个简单的模块,甚至只是测试一个稳定模块的维护性开发,而不是通盘理解,不能说是测试过复杂系统。有从头到尾接触一个完整项目的经历很宝贵。

  • 测试的底子 - 基础知识
    对照三本书:《ISTQB 基础教程》《高级软件测试设计》《高级软件测试管理》(后两本是 ISTQB 的高级认证教程)。这里边的内容你都能熟练应用(真的是熟练应用,而不只是有概念),你就能超过 80% 以上的应聘者了。面试过数百人,我经常会问几个问题:如果测试时间不够,你会怎么办? 如果让你去测试一个你完全不熟悉的系统,你会怎么办?你平时会使用那些测试设计方法? 看似很稀松平常的问题,非常考验人。因为大部分从业者都没有经受过系统训练和学习,工作多年,依然技能不足,意识跑偏。

  • 熟练使用一门主语言
    满足这条,你就超过了 70% 的应聘者。什么叫做熟练呢?拿 Java 来说吧:系统学习过 Java 的教程,高频面试 50 题 这样的题可以自测一下,可以回答上 35 个以上;熟悉最主流的 Spring 框架,能够写出一个简单的网站,实现基础的 Restful 服务;读懂过一个测试框架,如 mockito 或者 Junit 的源码;能够熟练实施接口测试(基于一些测试框架 如:rest-assured+Junit);能够读懂开发的业务代码,对他们的代码进行 Code Review;

  • 对一门语言有比较深入了解
    满足这条,你就超过了 90% 的应聘者。什么叫有深入了解呢?还拿 Java 来说吧:熟练使用 Java 的常见 API;深入理解基于语言特性/系统特性的知识,如 Collections 的实现机制、类型系统、I/O、网络、多线程等;熟知设计模式(广义范围的设计模式,不局限于 GOF 的设计模式);熟悉 JVM 的工作模式;熟练使用调试排查工具解决性能问题;熟练掌握市面上常见的脚手架;熟练掌握周边知识(OPs 相关,网络知识相关)有不错的实战开发经验(做过真正被生产检验的东西);对于测试开发,AOP,Java 字节码技术是很重要的知识。。。 这是一个很长的学习 list,需要几年时间来养成。做到这点,其实你可以胜任普通的开发岗位了,这也是高级测试开发岗位的技术底子。

  • 在一个领域知识有不错的了解
    人不可能什么都懂,但工作几年之后,会在工作的域内一定要有积累才行。
    例如,你测试一个核心电商系统的交易模块三年了,业务上你一定要熟练讲出来:商品列表、购物车、下单、退单、废单、支付、发货、库存、退款、优惠使用等等一坨业务流程,和可能出现的常见的坑(各类问题产生的资损、各类问题产生的服务不可用、逻辑矛盾),不然根本无法体现你经验沉淀和深入思考;技术角度上,你要能够画得出来系统的交互图,熟悉最核心的接口和最核心的参数,能够读懂开发的代码,熟练使用 trace 和监控工具,诊断定位线上问题到代码行。

  • 用技术保障质量的能力
    测试开发岗一定会问到一个问题:你能够举一个你用技术手段提高测试效率,增强测试能力的例子么?这是面试时最大的一个坎。 很多人会讲一些自动化测试回归的例子,但是真正成功的例子非常少,因为为什么做,怎么做都没有想好就照网上一个教程攒了一个,结果变成了玩具。 做好自动化,不仅仅是会使用工具、框架,其实要对被测物特性,软件生命周期有很深的理解并且有很强的开发知识才行。实际上,在环境、CI、数据、测试用例生成、数据比对的很小的一些点上,都能有不错的提效产出,从这些点能够做得好,会得到不错的加分。有一个不错的成功案例,你胜出的几率就超过了 80%,没有短板,就十拿九稳了。

  • 技能以外的东西- 实战案例
    以前的工作印证了你的能力。能够讲清楚一件特别拿得出手的工作,证明你能力的案例是面试时候最有用的投名状。

  • 技能以外的东西 - 你的个人特质
    一般有如下特质会大大加分:快速学习、系统性学习、学以致用、系统性思考、强大的推动力、技术思维、突出的沟通能力、条理性、抗压性、乐观精神、抗挫折能力、迅速调整的能力、迭代改进的意识、ownership、团队合作、愿景和规划。 这些特性体现人的内核,有强大内核的人,做什么都行,技能暂时不足,也一定能补足。所以,在招聘的时候往往对是否录用的判断起决定性作用

高段位要求(高级职位需求)

  • 计算机领域知识的通盘理解
    这条范围非常大,人不可能什么都懂。但最最基础的知识是不能有盲点的:
    操作系统工作基础原理与基础操作:如 linux,要通读过 linux 操作系统的书,熟悉最基本的概念,基本命令要熟悉,shell 要能写和读;
    网络知识特别是 TCP/IP, HTTP 知识:推荐两本书《图解 tcp/ip》《图解 Http》这两本书里的东西要懂。
    数据库知识:市面常见数据库(redis,mysql,oracle)的常见 DBA 操作,问题排查;SQL 的熟练使用;
    Web 及移动端知识:能够懂 HTML,CSS,能够读懂 Javascript 代码,能够读懂 Android 或者 iOS 的代码,做简单开发最好。
    安全知识:常见的安全防护方法、工具使用;基本的安全攻防原理;
    软件工程/开发过程管理:实战中各种磨练,建议系统的学习 PMP,敏捷开发的一些认证课程。

  • 在一个域的深耕
    人不可能什么都懂,但在一个领域是需要深耕的。比如,在做了四、五年移动端测试以后。android 和 iOS 都要具备一定的开发能力了,能读懂开发的业务代码是最基础的,能够代替开发实现部分业务功能,完成部分组件开发是个非常好的自检点。能够对移动端自动化工具栈、监控工具栈(如友盟、bugly、newrelic 等)、内存泄露检测、卡顿检测、耗电量、弱网、流量、埋点、灰度、版本控制、兼容性、用户体验、安全等等的质量保障方案有通盘搞定能力。
    什么叫搞定呢?举个例子:比如,使用多种手段把崩溃率降低到千分之一以下。对于一个小团队,这是个很不容易实现的坎。做到这点,你需要了解如何收集崩溃率,如何使用一系列工具来定位核心问题,如何推动开发改动,并且预防(静态代码扫描工具引入,阻止乱用第不成熟的第三方插件,代码 reivew 防止常见 pattern 如空指针引发的崩溃,推动开发养成良好的 log 习惯,推动移动端防御性编程编程开发习惯,推动后端开发按照规范吐接口,帮助开发引入内存泄露、卡顿工具,趋势报表,警钟长鸣,各种灰度方式设置,线上监控。。。一个数据的改观,背后要有大量的质量相关工作)。

  • 使用综合手段来保障软件质量提升效能的能力。
    听起来很抽象,举几个例子吧。
    例子 1:你所在的 team 总在被开发抱怨测试用的时间太长。如何能缩短一下测试时间呢?
    通过调研,发现测试小伙伴诟病的最多的就是环境不可用。环境到底多不可用呢?
    你基于 Grafana 和 Prometheus 做了一个环境可用的监控报表,使用后,发现环境在工作日整体可用率只有 35% 左右,主要原因是:几个核心热点应用经常挂了没人管。
    你拉了整个 team,明确了部署责任人,约定了部署规则:只能中午饭和晚饭时间部署,并且部署后要自己看一下是不是 OK。
    一周后,环境可用度上升到了 65%。再深入分析,发现 2 个同学不守规矩,总是他们在破坏规则,你去找他们单独谈话。
    一周后,环境可用度上升到了 80%。还是有少量人不守规矩。
    你找 SRE 的同学提需求,做了部署卡点,非部署时间部署必须 TL 审批。
    一周后,环境可用度上升到了 85%。有些 TL 也不守规矩。
    你建了个报警,环境乱部署,坏掉了,在大团队的群里 @ 全体,告知谁搞坏了环境。
    一周后,环境可用度达到了 92%。
    你加了一个 feature:应用挂了一段时间无人响应,自动重启服务功能,仍然有问题,就自动回滚上一版本。
    你推动了开发解决了某个应用启动时间过长的问题。
    你推动了环境分组。
    你推动了测试环境版本上线的规范流程实施。
    你推动了冒烟自动化用例卡点。
    你推动了环境部署人备份机制。
    你推动了全员基础环境部署培训。
    你总结了部署手册。
    你做了。。。。。
    最后,环境可用度稳定到了 97% 以上。你为测试节省了 60% 以上 block 时间(原来可用度为 35%)

例子 2:上面的问题,除了环境,还有一个槽点:开发提测质量不高。测试的头几天,很多主流程都走不通,导致测试总是在等待,或者是跟着开发一起联调。而这段时间,已经被习惯性的认为是测试时间了,因为:提测了。

你推动了:测试提供冒烟用例,开发必须完成一定程度的自测才能提测。
你推动了:测试和开发做自动化同期共建,在开发过程中,核心功能就被自动化用例保护起来了。
你推动了:开发切分 feature 提测,而不是攒一个大招一下子提一坨。
你推动了:代码 Codereview 变成团队常规活动,QA 在早期跟进核心代码,把问题坑杀在萌芽阶段。
你推动了:外部资源联调非常早的进行,不会让它在测试后期成为测试 blocker。
。。。

例子 3:你发现测试时间长,QA 自己也有问题。

你推动了:有明确的测试计划,并让所有干系人都有明确的预期。
你推动了:测试依据风险测试,最大的风险得到最快的 cover,科学分配时间,明显缩短 bug 反馈时间弧。
你推动了:bug 严格管理,所有重要 bug 都及时修复。
你推动了:良好的沟通和汇报机制,每天让团队主要干系人清晰的知道,距离发布还差多远。
你推动了。。。。

你能讲出自己做过 5 个以上这样的成功例子,我敢保障,你会被 1 线大厂疯抢。职级基本都是专家起。

  • 持续学习能力和复杂问题解决能力

例子 1:
你近期的工作是帮助团队提升后台服务稳定性。你看到了 netflix 内部使用一个叫做 ChaosMonkey 的东西来随机对生产服务期进行攻击,而逼迫工程师提高稳定性,所以,你也实现了类似(更温和)的内部机制,推动团队稳定性的提高。
你怎么知道这个叫做 ChaosMonkey 的东西呢? 因为你会习惯性浏览一线厂商的技术博客,参与行业大会,关注各类新技术。持续性的养成习惯。

例子 2:
做大规模接口自动化好难,外部数据依赖太难搞,参数构造太费劲,assert 太难写。如果能够简单的录制回放就好了。
但是,外部依赖是个天坑,写操作 mock 也是个天坑,assert 也是个天坑。
实际的案例是,经过几年多个团队持续不懈的填坑,阿里内部已经有应用级的录制回放工具了,数百个应用成功的是用了它,把不可能回归的任务变成了可能(上万数量级的 case 当天生成,当天投入使用,并可以分析覆盖率),自动化测试实施需要付出的工作时间革命性降低(不足原来付出时间的 10%)。

你能讲出自己做过 5 个以上这样的成功例子,我敢保障,你也会被 1 线大厂疯抢。职级基本都是专家起。

  • 其它能力 测试是个万金油,高阶一些的职位需要什么都要会一些 ,因为越高阶的职位需要解决的问题越综合,需要打交道的人的种类越多。不然很容易变成你职业短板,做个 list 吧(一定不全):
    • 很好的项目管理能力,至少与开发经理能力同级,甚至要强于他。
    • 一定的软件架构能力。
    • 一定的产品 sense:可以跟一个资深的产品经理能够顺畅的交流,明白知道他为什么会这么想,所要实现产品的意义,路径;从产品质量方面的考虑要超过产品经理,给他输出。
    • 极好的沟通能力。
    • 团队管理能力(这个太重要)
    • 目标管理能力
    • 有一个好的内核(上面提到过)

怎么转型/怎么进阶?

其实不难,没有什么高端的方法。下面这 4 条就够了,核心秘密就是坚持不懈

  • 熟悉你的被测系统,熟悉你的被测系统,熟悉你的被测系统。 能够从技术、业务角度做到对被测系统熟悉是做一个好 QA 的最基本职业素养,也是能力提升的最主要源泉。
    自检点:我能够画出系统的架构图么?我能够读懂开发的代码么?我熟悉常见的业务监控系统么?熟悉日志系统么?知道开发是如何调试和定位问题的么?给我一个线上问题,我能定位么?我能给别人完整的介绍这个域的核心业务么?我能自己直接动手发布上线一个系统么?知道如何回滚么?灰度是如何做的? 我知道所有关键的技术点么,如一个交易的幂等性是如何实现的?我在团队中有:“这家伙对系统最熟” 的口碑么?
    如果自检点全部是否定答案。。。 花一年时间把它全变成肯定答案。这一过程,你一定被迫学到了很多很多,并且获得了极为长足的成长,这是进阶的必由之路,也是卡了很多人的地方。 如果说做不到,后面不用看了,前面的也全部忘掉吧。
    方法:通读所有文档,强迫自己读代码,积极参与开发所有讨论,不懂的狂问,观察开发如何上线,如何排查问题,模仿,学习,善用搜索引擎,总结。。。

  • 找到问题解决问题,找到问题解决问题,找到问题解决问题。 你一定有一堆问题,如果你觉得自己做得挺好,没有问题要解决,那必然是你自己有巨大的问题!
    自检点:找一支笔,写出你觉得质量方面,你的 team 的 10 个问题,做排序。排出最重要的 3 个。
    方法:找到 top3 的问题,选一个,列个接话,去解决。如果找不出来,使劲去观察,然后去看看做的好的同行,比比你比人家差在哪里。尝试去解决这些问题,从小问题,能够见到效果的问题入手,设置一个时间点。你真正解决了 5 个以上问题以后,感觉一定会有。

  • 系统学习,系统学习,系统学习
    自检点:我系统的学过一门知识么?我能讲清楚我这么操作,我写的这行代码的原理么?
    方法:从工作出发,确认你需要补足哪些知识。从网上找一个具体知识的学习路线图,订个计划,照着来。 参加学习小组,找到帮你解决难题的人,多请他吃饭,多请教他。获取知识后,马上回到工作中做检验。还是学以致用才能有所增长。结合工作来系统学习的效果是最好的。
    再举个例子:
    上家公司有个小伙伴(他应该也会泡这个社区),开始应聘的时候,他说熟悉 jenkins,用的很多。所以第一份工作是:把所有 CI 的日常工作交给了他,并告知 2 个月内要全部搞定。 他一下懵逼了,原来那些不深入的理解支撑不了工作要求。后来他每天死磕,看了 jenkins 所有的文档(对,几乎所有文档通读了一遍),翻了无数问题的解决帖子,记录了上百个问题解决的过程,写了上百篇 jenkins 的小 blog(现在还没公布出来)。几个月以后,他比我熟了,他的一项基础能力成长为:可以独自给一个小公司完整的搞定前端、后端、移动端的一整套 CI 解决方案。其实单凭这一套,就能找到不错的工作了。这是依托工作,系统性学习的结果。

看到有同学说要裸辞,去接受培训。我的建议是,别这样。裸辞你就失去了学以致用的阵地,失去了真正解决问题的机会,还失去了资金来源。依托工作,自主学习是王道。自己饶过不去坎,其实有很多网上教程和非脱产培训班啊。

  • 选择有挑战的团队,选择有挑战的团队 自检点:在团队里有很多人比我强么?周围的同事都是我佩服的么?我做的事儿有挑战么? 方法:如果这三点都是否定的,并且你处于职业生涯的早期。也许(只是也许),你该考虑一下换个团队了。

总结

偏重技能角度讲了讲市场的需求和 QA 如何做如何满足市场需求。行文仓促,认识有限,其实也并没有什么新东西。欢迎讨论拍砖啊:)

最后放一篇老文,前 google 测试总监写的,写了快 10 年了,但我觉得常读常新。

顺手发个招聘广告

我的 team 在招聘 QA 小伙伴。地点北京,技术职级 P6 或者 P7 。 P8 也有可能(只要你足够强悍)
偏后端测试,有意者请邮件我啊 daohe.lxg@alibaba-inc.com

-----------------------------------------------------------我是分割线--------------------------------------------

经营成功的测试职业生涯

(James A. Whittaker)

你是如何开始做测试工作的?

1989 年,我在田纳西大学读研究生的时候,完成了从软件开发人员到软件测试人员的转型。而这一转型并非出于我自己的选择。我命运的改变发生在一个早晨,我的教授质问我为什么缺席那么多开发会议。我解释说因为会议被安排在星期六早上,很不方便。

而怍为一个生平第一次离开家的新入校的研究生,这个时间段有些麻烦。十分有意思的是,等待我的惩罚并不是一纸解聘通知书,而是被判罚为该小组的唯一一个测试人员,且不能与开发团队有任何交流。

对于我的职业生涯来说,这是一个意义多么重大的决定啊!正是这个决定最终成就了几十篇关于测试的论文,构建了多得连我自己也记不清的各种工具,出版了五本书,带来了无尽的快乐工作时间。测试一直就是我拥有的那份具有创造性和技术挑战性的快乐职业。不过,并不是所有人都喜欢这样。可以说我最早接触测试是在攻读研究生期问,不可否认,那时的高强度学习和工作确实让我受益匪浅。另外,我认为从初学者阶段到专家阶段之间存在着一个 “测试的山峰”,人们需要通过一系列个人辅导、获取信息和接受常规指导来翻越山峰。成为一个测试初学者是很容易的,成为职业的测试人员也并不艰难。本章的重点正是讨论如何翻越那座位于职业测试人员和测试专家之间的山峰。

回到未来

在软件测试领域,时间似乎已经停滞了。我们在 21 世纪做事的方法与上个世纪几乎完全相同。Bill Hetzel 在 1972 年出版的测试知识丛书至今仍然相当有价值。而我自己所写,于 2002 年首次出版的 How to Break Software(如何攻破软件) 系列,到今天仍被作为实用软件测试技术主要资源的代名词。

确实,如果我们可以把 20 世纪 70 年代的测试人员转换时空用在今日,我猜想他们的的技巧足够应付现代软件的测试。当然,他们需要学习网络和各种网络协议,但是他们拥有的实际测试技术将能得到很好的应用。如果从 20 世纪 90 年代找一个测试人员,则不几乎不需要任何训练。

对于开发人员来说,却不是这样,他们所掌握的那些上世纪的技巧几乎已经完全过 时。让一个有一段时间不写代码的人重新开始编程,看看会有什么样的反应。让我感到很不安的是,我们可以从马路上直接雇用人手,而雇来的这些人从第一天起就能够测试,就能够有收获。事情真的有那么简单吗?或者是我们的期望值只有那么低?让我更加不安的是,我们没有任何可预测的方式将合适的测试人才从胜任工作状态训练为测试专。测试真的就那么困难吗?

这又是那个山峰了。门槛很低,但通往精通的道路却很艰难。

在通往测试山峰的入口,我们倚仗的是这样一个事实:测试的很多方面都很容易掌握。大多数人都可以学得有模有样。甚至只要将一点点常识应用于输入的选择,就可以找出缺陷。这个层次的测试就如同在桶里钓鱼,简单到足以让任何人都认为自己很聪明。然而过了入口以后,道路迅速陡峭起来,而测试知识变得越来越晦涩难懂。我们发现有人擅长于此,我们称这些人为 “有天赋的人”,并欣赏他们的本能。

难道一定要依靠本能么?对于那些看起来不具备特长的人们,是否存在着一条翻越山峰的途径?是否可以以某种方法传授测试技能以培养出更多的专家呢?为认为这座山峰是可以通行的,而这一章正是我关于应该如何走这条路的笔记,你可以在自己的职业生涯中加以应用。这并不是一份食谱配方,一份职业生涯烹调书。不过你可以做一些事情来加速你的职业成长。但是,正如你可能已经猜到的,真正是说来容易,做起来难。

上山

测试职业的早期阶段主要是为征服测试山峰的漫长攀登做准备。我所能给出的最好的建议是从两个方面来思考问题。对于你参与的每一个项目,都有两部分(不一定相等)的任务。第一部分的任务是保证当前的测试项目获得成功。而第二部分的任务是学习你应该做些什么以便使下一个测试项目更加容易。我把它称为 “测试今天的项目,准备明天的项目”。如果你做每一个项目把它都分割成为上述的两半,那么几乎可以保证你能持续获得进步。这样,你就可以随着每一个参与的项目逐渐成长为更优秀的测试人员。

现在就让我们来关注第二部分的任务 ------ 为下一个项目做准备。我们需要注意三个概念:重复、技术和漏洞。

重复

做任何一件事,绝不要重复两次而不意识到或质疑这其实是个问题。我希望所有年轻的测试人员都牢记这一点。我见过很多初学者,他们在单调的任务上浪费了太多的时间,比如,设置测试机器,配置测试环境,在实验室里安装待测试的应用程序,选择一个产品版本来测试 - 这些任务列表可以变得很长,最后你会发现真正花在测试软件上的时间少得可怜。

这是许多新手常犯的错误。他们没能看到他们日复一日所做的工作的重复本质,儿当他们意识到这种重复时,几个小时已经过去了,而在这几个小时内他们没有做任何实际的测试工作。关注这些重复劳动,并且留意由此造成的真正的软件测试工作时间的流逝。为了能翻过测试的山峰,必须做一个测试人员应该做的工作,而不是实验室管理员或者测试机管理员的工作。

测试自动化是解决重复劳动的方案,也是本章稍后的主题。

技术

测试人员常常会对软件失效进行分析。分析缺陷时,我们从开发人员的失败中学习如何编写可靠的代码。我们也分析那些被我们忽略的缺陷。在应用程序上市以后,客户就会开始报告缺陷,我们将要面对处理一大堆失效的情形并寻找其中的重要缺陷。用户报告的每一个缺陷都说明我们的流程有问题,我们的测试知识还不够完善。

但是分析我们的成功也同样重要,儿许多新入职的测试人员却没能利用这个唾手可得的资源。我们在测试中找到的每一个缺陷都说明我们的的测试流程正在有效工作,都是一次成功。我们需要紧紧抓住这种绝好的机会,只有这样才能使成功不断的重复下去。

运动队常常这样做,他们会观看比赛录像,并分析每一个动作为什么奏效或者为什么不奏效。我清楚地记得一个小故事,我的一个朋友拍下了我儿子踢足球的一些照片。其中一张照片记录了她踢球的瞬间,那个球超过对方守门员成功进球了。当我把它给我儿子看时,我之处他站立的那条腿的姿势非常完美,他踢球的脚尖紧绷且出球点在鞋带间恰到好处的位置上。他盯着那张照片很长时间,从那以后他很少用不正确的姿势踢球。他那次得分可能只是碰巧做对了,但从此以后他有意识的运用这些技术使之接近完美。

现在回到新手测试人员的课程上来。我们每一个人都会有得意的时刻。我们找到重要的漏洞或发现优先级很高的缺陷,并为此雀跃不已。不过先花点时间考虑一下整体状况。我们使用什么技术找到了那个缺陷?我们是否可以创建一种方法来找到更多这类缺陷?我们是否可以记住…些实际的测试经验并不断地加以应用来帮助提高我们的工作效率?软件的哪些症状可以提示我们它具有缺陷?我们将来能否从那些症状中得到更多的警示?换句话说,这不仅仅是一个缺陷或是一次成功,这个缺陷教会了我们什么,是否使得我们将来成为更好的测试人员正如我儿子的进球一样,尽管第一个缺陷是偶然间发现的,但它不代表其余的成功都是偶然。理解我们成功的原因很重要,只有这样做,成功才能被复制。对于测试人员来说,这种保证成功的原因就是一系列的测试技术、建议和工具,它们可以提高我们在未来项目中的工作效率。

漏洞

测试人员最终都会变得很擅长寻找缺陷,但是要翻过测试的高峰,我们必须更快并且更有效率:高速低阻。换句话说,我们必须拥有一种本身不含缺陷的缺陷查找技术!

我喜欢这样来考虑问题:测试人员检视自己的工作时也需要发挥那种寻找缺陷的能力。我们必须使用和寻找产品缺陷一样的流程来寻找我们自己的测试流程,测试过程中的缺陷。我的测试流程是不是有问题?这里面是否有缺陷?这里是否存在着妨碍我提高效率的障碍?

你必须一直寻找更好的方法。有意识地去确定那些限制能力、阻碍前进、减缓速度的东西。就像缺陷限制了软件满足用户需求的能力一样,是什么限制了测试的能力?使用你拥有的测试能力来最优化自己的测试流程,这会帮助你在测试的山峰上快速攀登并增加你翻越山峰后成为专家的机会。

测试山峰的巅峰处是一个美好的地方。如果你成功地到了那里,恭喜你.但这并不是最终日标。这表示你已经成为一个杰出的测试人员。而此时的下坡路就是用你的洞察力和专家知识来帮助周围的人也成为优秀的测试人员。自己一个人登顶是一回事,帮助其他人(那些能力不如你的人)登顶却完全是另外一回事。

一般来说,那些成功登上测试巅峰的人会成为使用工具的大师。那些商业工具、开开源免费工具,和自己写的工具(我个人最喜欢的工具)是极好地提高工作产出、增加工作成效的方法。不过,工具只是实现该目标的一种方法,但在许多其他方面它反而是一种限制,因为太多的人看不到工具的功能之外的东西。他们被限制在工具能为他们所做的事情中,没能看到或理解对工具还有更多的需求。登顶需要真正掌握的是 “信息”。因为很多工具能处理信息,并使得信息的获取更加容易,所以测试人员变得过于依赖于他们的工具。但是信息本身以及如何利用这些信息才是真正的成功关键。

熟练掌握信息,指理解有哪些信息,这些信息将如何影响测试,保证最大限度地利用这些影响。有几类信息是测试登顶者必须关注的。这里我要谈的是其中两种:来自应用程序的信息和来自之前测试的信息。

来自应用程序的信息包括需求、体系结构、代码结构、源代码……甚至是关于应用程序在执行时做了哪些事情的运行信息。在编写和执行测试用例时,需要考虑这类信息,但信息的多寡在很大程度上取决于测试人员的能力,这是一种能够使测试更高效的能力。在测试中使用这类信息越多,测试就越偏向于工程而不是猜测。

在微软,我们有一个游戏测试组织(Games Test Organization,GTO),负责 Xbox 和 PC 游戏的测试。谈到利用应用程序的信息,他们是最优秀的。游戏是难以想象的丰富,测试起来非常复杂。游戏中很多可测试的内容都是隐藏的(因为让那些玩家找寻可以交换的物品正是游戏的乐趣之一)o 如果 GTO 的测试人员所做的仅仅是玩游戏,那么他们找到的问题不会比最终用户更多。为了能做得更好,他们与游戏的开发人员合作创建了一些信息控制板,这些控制板暴露了一些基本上可以算得上作弊的信息给测试人员。这样,测试人员就能提前知道怪物会被投放在何处、物品被隐藏在哪里,他们可以看到墙的另一边,可以控制敌方的某些行为。他们的作弊工具(即测试工具)基本上使他们成为游戏里的神,让他们可以控制看到的信息以便更快更巧妙地测试。这个例子给有测试人员都上了一课。

来自测试的信息意味着你必须关注在测试时所做的一切,并使用获得的信息来影响今后的测试。你是否知道你的测试是如何与需求结合的,知道何时某一特定需求已经得到足够的测试?你是否使用代码覆盖率来影响未来的测试?你知道当代码更新或缺陷修复时那些测试会受到影响,还是知识重新运行所有的测试?理解测试进行到什么程度并随着测试调整测试策略,这是测试成熟的标志。

我以前曾在微软的 Visual Studio 的一个小组工作过,我们大量使用代码改动量(由于添加新特性或修复缺陷而改变的代码)和代码覆盖来影响我们的测试。我们花了很大的力气将代码覆盖和代码改动量通知测试人员,帮助他们理解哪些测试用例对覆盖率有贡献,帮助他们测试改动过的或修改过的组件。最终的结果是在代码确实被改动时,我们清楚地知道哪些测试会被影响而只重新运行那些测试。我们还知道每个新的测试用例是如何对总体的接口,特性和代码覆盖率产生作用的,从而指导我们的测试人员,让团队中的每个人在他们所创建的所有测试用例基础上,写出更有意义的测试。

你用哪些信息来指导你的测试?你如何保证信息是可获取的,以便在测试中随时可以得到?你如何使得信息变得有用,以便它能以良好的方式影响你的测试?这些问题的答案将决定你在走下专家测试山峰时的前进速度。

下山

到达测试山峰的顶峰的时候,你已经成为一个十分能干的测试人员了,能力也许相当于你组里所有同事能力的总和。无论你在做什么,请不要试图做得比你的整个团队都好,不管你对此感觉有多好,或是你的老板对你遏得有多紧。一旦你走在下坡的路上,就不要再去争取 “找到最多缺陷的人” 或是 “找到最有意义缺陷的人” 这样的荣誉头衔。反而我推荐你减少花在测试上的时间,而把创新作为你的首要任务。

在测试上创新指不急于向前,而是仔细观察、洞察先机、找到瓶颈并改进团队中所有其他人的工作方式。你的工作变为帮助其他人进步。在微软,我们有一个专门为此而设的正式职位——测试架构师。不过,不要因为缺少一个很酷的头衔而让你沮丧。无论别人怎么称呼你,当你在 “下坡的路上,你能做的最好的事就是尽量保证更多的人能成功地爬上山峰的另一侧。

共收到 150 条回复 时间 点赞

国内的公司会认为测试是相对技术含量偏低的职位,更希望招收年轻有活力的小朋友。
超过 35 岁,从大公司离职可能就意味着找不到合适的工作。大佬是如何构筑自己门槛的呢?

magicyang 回复

35 岁现象的确有的。但也不是那么绝对,市场对能力高的应聘者是饥渴的,提高自己还是王道啊。如果 35 岁了,面试的时候给人的感觉能力上跟入行两三年的小伙伴一样,就会非常尴尬了。

年龄歧视现象哪里都存在,前几天米国一堆应聘者体诉讼谷歌年龄歧视了,只能期待整体劳资关系变得更好。作为个体,在这点上没法直接改变什么,最能控制的就是提高自己的竞争力了。

再有,就是自己的预期了。高端职位本来就是稀少的,养家的职位还是有的。不停的努力,不停的寻找机会吧。

我也 35+ 啦。如果换工作的话,真没有信心说一定会比现在的工作要好,但养家糊口还是行的。

多聊一句:现在 IT 总体大环境还行,但也许整体近期会下行,所以,如果有比较稳定的工作,看准好机会前,不要冒险。

刘晓光 回复

谢谢啊,我今年过于激进了,很有点高不成低不就的感觉。。。。
有点要把自己玩死的节凑了。。。O(∩_∩) O
确实应该更谨慎一些,多谢!~

https://testerhome.com/topics/16329 看到了匿名吐槽的这个帖子。

请相信我,真的不是故意挑三拣四。好多面试到的技能真的是岗位需要。在大厂,系统都会很庞大,但迭代丝毫不会比小厂慢,甚至更快,稳定性的要求上也十分苛刻。“既要、又要、还要” 带来的挑战真正在里边工作的人才会体验到。就算你是把牛刀,也不会 over qualified。因为,很多时候你可能有机会,或者不得不去杀恐龙。。。

向大佬学习一个

思寒_seveniruby 将本帖设为了精华贴 10月08日 14:47
僅樓主可見
8楼 已删除

稳稳稳。果然大佬都是稳如狗

keep learning & keep sharing,太多的要学了,继续加油

ownership

佩服,跟大佬学习

大佬,我搜到你了,哈哈哈。好文顶!

文中的理念我非常认可,就是有一些错别字是否可以改改。

学习

大佬说的最后一点:当我发现我的团队已经不能满足我的学习提升需求,而且我能一眼看得到以后的工作的时候,我选择换团队,然而公司就一个,所以我换公司了。。。找工作的时候才发现最近不景气。。。最后找了一家 996 的还算大的公司,毕竟毕业两年,我不想止步不前,走好走坏看自己走的路吧

在搞编程里的三大浪漫之一:编译原理

求带

Felix 回复

小伙伴们别叫大佬啊,当不起的。

雷毅萍 回复


这两本。 里面很多技能还是值得掌握的。高级测试经理,里边有一些方式和方法可能不合适你所在的企业,但是一些框架性的知识和意识可以活学活用的。

21楼 已删除
丁老九 回复

thanks,我一会儿去校对一下。😄写的挺糙,没校对就发了。

skytraveler 也是测试老兵了,玩微博的时候有关注过。

24楼 已删除

今天早上刚好在探索式软件测试里面读到了这篇文章😀 😀

僅樓主可見

光哥这篇文章拳拳到肉。
经过这一年打磨,再看光哥这文,真的觉得很值得回味。

光总写文章就是高屋建瓴,都是职业经验提炼的,跟那些动辄 “我在做 XX 的时候” 的口水文着实高出不止一个档次

追求高标准。真的做到这个水平,不做测试转行开发也能养家糊口了。个人推测高端的专职测试人员应该会越来越少吧,甚至会被其他形式替代。

刘晓光 回复

“既要、又要、还要” 六字够精辟~
虽全文在畅聊时,错别字蛮多,但仍不愧是一篇深入人心的好文~

测试路漫漫,当下测试环境,首先掌握一门主流语言才能稳住脚跟。学无止境,楼主分析得透彻。测试行业宽进严出,如果真的达到高阶段位的测试人员,要么是开发转测试,亦或者选择了做开发吧。从小白到高阶测试段位的人,或许会少些吧。。

好文,很实在,鼓掌~

看完后感悟真的 很多,又刷新了自己对测试的了解。我大学是电气工程专业,毕业后一个偶然的机会进入到测试行业,目前做了三年测试,对测试还是了解的很浅。之前一直认为学好一门编程语言就算入门了。现在看完大神的帖子,发现自己离测试入门越来越远。需要学习的地方太多了。

👍 不断学习~~

干货,鼓掌👏

厉害,原来测试可以这么牛。榜样,值得学习。 准备打印出来贴家里墙上,一个一个技能的突破。

《高级软件测试设计》《高级软件测试管理》这 2 本书有没有电子版?在亚马逊没找到。。。

好文,读了几遍,有些例子非常有共鸣,特别是质效提升的,很值得回味。

那问题来了,企业招聘到底是按自己的要求招,还是根据市场的行情来招?

yyy丶 回复

是博弈,不同企业上下文不一样,所以答案也不一样。

zyx 回复

万能的淘宝上有

欢迎晓光来社区多多发文啊!😀

能不能推荐一些质量比较高的大佬的博客或者学习资源

我是这么看的,软件测试这个职业在逐步完善自己,作为工程化中的重要过程,以前在行业野蛮成长时对人员能力要求不高已经是过去式了,现在是回归正常。

测试路漫漫,我将继续修完。(另外错字再改改吧)

能做到这些的人,干哪一行都发财了

樂易 回复

我和层主的情况相同,公司就我一个测试,也打算明年换个团队。

看完觉得我要失业了~~~😂

不断学习才是根本。35 岁不一定能做到高端职位,但只要跟上行业的进步速度,退一步养家糊口还是问题不大的。

面试过数百人,我经常会问几个问题:如果测试时间不够,你会怎么办? 如果让你去测试一个你完全不熟悉的系统,你会怎么办?你平时会使用那些测试设计方法? 看似很稀松平常的问题,非常考验人。因为大部分从业者,都没有经受过系统训练和学习,工作多年,依然技能不足,意识跑偏。
特别想问问楼主,心里合适的答案是什么,请赐教~

加油:)以前有个同事学水土保持的,通过自学现在也做的不错。工作后的成长其实比大学四年更重要。我本科学的数学,大学毕业的时候连个简单的小网站也写不出来,第一份工作写 JSP,头三个月被折磨死了,后来也挺过来过来了,后续的具体知识其实大部分是自学的。

刘晓光 · #55 · 2018年10月11日 Author
僅樓主可見
刘晓光 回复

哈哈

我只想说,此文应当知识付费!

刘晓光 回复

太强了。感觉那些 测试设计 就有很多不懂。这方面应该多看哪方面的书?

又看了一遍大佬的帖子。大佬是真的热爱测试,愿意努力。
惭愧的很,我开始就不喜欢测试,只是图清闲,在混日子,对自己要求太低,比较失败的测试生涯也不足为奇。
希望大佬未来能带动更多的小伙伴走上高峰。

问题是给多少钱?这个要求可不是不高,而是相当高

simonpatrick 回复

对自己要求高点还得管别人要钱?
你也可以对自己不作要求,佛性一点,生活一样也很美好,怎么选择自己开心就行~

槽神 回复

👍 👍 👍 ,对自已要求高是好事,居然还有人这个时候谈钱,想不通。

simonpatrick 回复

要求的确不低,这算是行业挑战吧。但价钱是好价钱。根据我的了解,好的测试开发比普通测试工程师高出不少,甚至比普通开发工程师工资都会高。30k+ 每月的 base 在一、二线的公司都是可以能够拿到的,部分人的薪水是是 4xk,甚至更高。对于一个工程师来说,真的很不错啦。

我司的薪水没有得到授权,不敢乱说。但网上应该有不少讨论了,可以参考一下的。如果是 P7 及以上,相当有竞争力。

认真读了晓光哥的文章,收益挺多的。努力完善自身,提升能力。THS

hoohyou 回复

推荐的就是那本 The little black book on Test Design

僅樓主可見
Michael_Wang 回复

不同团队差异很大的。整体的导向是让开发承担更多质量活动,提高开发测试比。

刘晓光 回复

那开发会打用例结果吗,比如冒烟用例

大东 回复

还好我已经保存下来了

樂易 回复

996 的我是吃不消了.

谁能给下这三本书的链接啊。。。。找不到呢。。。
《ISTQB 基础教程》《高级软件测试设计》《高级软件测试管理》

或多或少的自己思考,使用过大神说的一些方法,成长还是感觉有点慢。大神的体系给渴望成长的测试很大的启发,真的有同感,本文应该知识付费。

拜读好文,200 赞👍 👍 👍

实战经验提炼出来的好文 👍 👍 👍

感谢 TesterHome 让我看到这篇文章。感谢楼主的分享!

如果我们年轻的时候能看到看懂这篇文章该有多好😜

上山看过很多次了

即将步入测试领域,非常感谢指导。

大佬,膜拜

好文,真心不错,谢谢

读了楼主的好文,是时候静下心来花时间去学习了~

楼主请问下,数据库学习有啥书推荐么~

第二次读了,感觉自己就是一个懂了一点代码的菜鸟~~

拜读大佬的干货~~~~

Mark,收藏分享了! 感谢作者。---提醒自己:脚踏实地,戒骄戒躁!

看了楼主的文章,醍醐灌顶,意识到自己的优势和薄弱之处,精通比了解更重要,感谢楼主~

学习啦,进阶到高级真的还有好多需要学习

僅樓主可見
Dadaxyu 回复

你很可能会遇到短板。短板是:可能无法让团队变成一个技术型团队,来应对越来越多挑战。如果公司转型,会比较痛苦。
谈一谈我的观察。在多年前,有很多离岸的测试中心,印度的 infosys ,文思、东软的测试外包兴盛年代会有大量这样的机会。但是离岸外包测试的岗位这几年在大幅度收缩。传统企业也在转型,同研发过程结合越来越紧密的 QA 的工作范畴大了很多,技能要求也在逐步加强。只掌握黑盒技术的 TL 无法带领团队很好应对现有的挑战,所以这样类似的职位是会不断萎缩的。这是大趋势。

能够知人善用,找专业的人来补充技术的短板,自己 own 起整个质量解决方案是一条路,我见过一些成功案例,一些管理型的 TL 能够走到比较高的位置,也能把团队带的很好。不过它有几个前提:1.你能搞的定领导,他只信任你,认可你。如果你的领导只关注结果,你又能搞的定结果,这是走得通的。2.你能搞定底下的小伙伴,他们愿意这样跟着你干,技术好,综合能力强的人愿意甘于你下(长期下来这点挺难的,如果你无法正确作出技术决策,无法给底下小伙伴方向上的引领,人家凭什么服你,开心的长期跟你干?)3.大团队的历史:你跟团队长期奋战,一同成长,团队飞速发展,你被顶到了那个位置(如果空降,只有所谓的纯管理能力,还是挺难的,我没有见过这样成功的例子)。4.持续补足自己的技术短板,不见得是具体的怎么撸代码,而是要了解业界主流技术,他们能解决的问题,长处短处,你的团队是否需要他们,团队里谁可以撑起来。5.对你所在公司的业务要全通,尤其是 IT 系统需要支撑的业务要精通(不多说,这点很重要)。6."技术管理"能力真的行(什么是技术管理能力,可以参考底下那本书)。

推荐的书:成为技术领导者 最近去世的大师温伯格写的,系统性论述。我是几年前读的,对我一直影响很大。

89楼 已删除

http://www.qkey.top/ce-shi-kai-fa-gong-cheng-shi-de-career-path/ 阿里的测试最高 P 的职业路线的建议。

通读 2 遍,细读一遍,通篇干货 。
可以作为,软件测试从业者,职业发展指南 。

举的例子,都是很多团队真实遇到的 。

感谢老司机的经验谈 。

某个版本的某个模块问题很多,但上线时间紧迫怎么办?
这个要怎么回答

qinhh0802 回复

又被面试啦,简要答一下:
通用的思路:
基于风险的测试。测试的本质是抽样,时间资源总是有限的。要把资源用在刀刃上。先看看那个模块是干嘛的,是不是重要,如果出问题,影响面有多大?然后具体问题具体分析。如果是核心模块,会造成重大损失,那质量一定是不能丢的,抽调别的力量加强这块儿投入,把风险明确的传递给主要干系人,必要时延期项目。如果是非关键模块,识别出问题,可以做:设定一个最小实现目标,砍 feature,用运营/客服的手段补足。长效方法:自动化防护网建立,让回归的时间成本、人力投入成本低下来;在项目的初期就能够一定程度的识别这种风险,早加资源,别让这种事儿变成到了最后:一坨毛病,deadline 不变。 QA 最大的一个价值就是:像探照灯一样很早的预期到风险,并同步给主要干系人。

其实这类问题,主要是看看你以前在项目里怎么做的。实战经验非常重要,能积累很多 “土方法”。

94楼 已删除

快 300 个赞了。。。

96楼 已删除
97楼 已删除

大神的文章通读下来,实际上每个人都有深有体会,特别是我们这批老测试,而且还是在三四线城市的测试,国内现在测试行业的断层实际上非常严重,不论是从公司角度,还是从测试行业角度。
那我这边有几个问题就是:

  1. 楼主你认为测试的技能提高主要是依托于公司平台还是依托于外部个人自学能力?
  2. 对于国内大部分公司来说,测试的职能的普遍低估,楼主是如何处理这类问题(由于从业内地,大部分公司都是小公司),如何提高公司领导层对于测试的地位?
  3. 测试也细分了很多的专项测试,楼主认为:从测试的个人发展来说,是专项测试发展更符合,还是全面的系统测试发展更符合未来要求呢?
  4. 至于说到测试开发(能力超高)默默的问下,这个级别的,是否已经脱离了测试范畴,而是隶属于开发职能呢?或者说,无论测试还是开发,大家属于殊路同归?开发最后也是测试,测试最后也是开发?
jackyin 回复

试着答一下啊。
1.都要依托。如果没有复杂的环境和复杂的问题需要解决,时间长了人就会蹉跎,面试的时候遇到了很多这样的同学,被自己一成不变的工作耽误了,在职业生涯的中早期,平台的好坏其实更取决于它能不能制造一大堆问题让你解决,成为你成长的养料,而不是普通意义上的高大上就是好公司,举个例子,前两年有一段时间总接到一个著名外企的工程师应聘,但是存在一个通病:公司平台把什么都封装了,应聘者也没有去研究怎么封装的,为什么要这么做,做了多年的"点点点"同学,虽然有准一线大厂的背景,但是能力上几乎丧失了竞争力。 但是,如果平台不错,你自己蹉跎了自己(看不到问题,不愿意解决问题),那也不行,面试时候也遇到了很多这样的同学,很多问题视而不见,这样工作多年可能和工作一年没啥区别。 还是努力能力增长-》换更有挑战,也回报更高的工作。这种正向循环最重要。

2.小公司更重视结果。小公司问题也往往十分多,你能把这些问题清晰的定义出来,给出改进指标,把收益说明白,然后做到了,很容易得到认可。实际上小公司是更容易争得话语权的,因为里边能人不多,稍微优秀一些就能体现出来。举个例子:在上家公司的时候,有个测试小伙伴就做到了一点:比产品懂业务细节,所有开发的代码做 CR,懂的所有的代码细节。慢慢的,他变成了团队中话语权最强的人,因为他总能指出别人的错误,说的特别在点子上。所以每次考核总在前边,所有团队成员都很佩服,重大产品方面决定很多都会咨询他,是否能上线基本上也是他说了算。工资自然是涨了很多。 另外一个建议是别给自己设限,别把自己只定位成测试,例如,如果自己是最懂产品的人,小公司很容易转变成产品,甚至产品总监。 有准备并抓住机会的话,小公司很容易胜出,见过很多这样的例子。

3.我觉得其实还是问题驱动,努力解决好你眼前的问题,被认可,其实就全面发展啦。一个我非常佩服的同事的一篇文章供参考:http://www.qkey.top/ce-shi-kai-fa-gong-cheng-shi-de-career-path/ (上边也贴过)我十分认同
另外从市场角度看,其实:安全测试工程师、性能测试工程师这种工种的岗位需求是很少的。原因两点:1.小公司需要人是万金油,啥都做。2.大公司全部平台化服务化了,实施没有啥技术难度,很多人依托平台很快上手。大厂,很多性能测试是开发自己完成的,调优也是开发完成的,不需要什么专职的性能测试工程师。

4.职级越高,需要懂的东西越多,因为懂得足够多才能正确决策。其实在我心中质量是所有人的事儿,“测试开发” 的定位是用自己的开发能力更好的保证系统质量。比较认同 google 团队中的职责划分,具体可以参考: https://testing.googleblog.com/2016/03/from-qa-to-engineering-productivity.html

5.不是大神,共同学习。

刘潇 回复

如果我年轻的时候就悟到这些,有多好。😄

blackcoffee 回复

学成这样不是为了钱,为啥呢

simple 专栏文章:[精华帖] 社区历年精华帖分类归总 中提及了此贴 12月13日 14:44
ivy520 [該主題已被刪除] 中提及了此贴 12月16日 22:55
ivy520 [該主題已被刪除] 中提及了此贴 12月16日 23:53
唐吉柯德 [該主題已被刪除] 中提及了此贴 12月18日 21:45
啄木鸟 [該主題已被刪除] 中提及了此贴 12月20日 13:06
simple [精彩盘点] TesterHome 社区 2018 年 度精华帖 中提及了此贴 01月07日 12:08

收益匪浅,另外想说大佬例子中的小伙伴写的关于 Jenkins 的 blog 发出来了吗,最近开始跳到这个坑里了

匿名 #109 · 2019年01月22日

我觉得真心不错,解决了一直以来自己的困惑

原来,评论里,才是干货啊😂

通读一遍写的好棒,Mark 起来下班继续读

很久以前国内测试已经被带跑偏了,测试本身是开发剥离出来的一个岗位,关键是人,想法不同自然道路不同。开始国内人多,有些客观因素,毫无开发实战经验的人都去做了测试,从而过盛,在加培训机构等多方夸大宣传,随时间推移导致现在形成一个恶性循环。回到题目,职业发展需要追溯测试源头,它的诞生,这样你才知道,该如何去做

匿名 #114 · 2019年04月22日

深度好文,已经通读 2 遍。请教下楼主,面试中被文自动化搭建的最大成本和难度是什么?怎么回答会好一些

结合你工作中的感悟和思考回答会好一些。没有标准答案。
通用的来说:最大的成本其实是编写成本和维护成本。最大的难度就是遇到困难,觉得没收益,然后就废了。自动化的实施跟被测物技术架构,开发模型,测试、开发人员能力,项目的类型都有很大关系。所以不结合上下文,没有标准答案。建议多看或者多经历一些实施案例,特别是成功了的实施案例。

这贴子太牛了,真牛人。赞。

僅樓主可見
simple 请求大佬解答 第一份工作该如何选择 中提及了此贴 10月22日 12:05
Eva · #119 · 2019年10月25日
僅樓主可見
刘晓光 回复

这个地址好像进不去 特别想看看 哪里还能看的到啊

Nisir 掌握什么技能才能去找测开的职位 中提及了此贴 12月04日 14:11
僅樓主可見
僅樓主可見
zlba111 回复

发现被墙了。

DUxuebing 一些招聘心得 中提及了此贴 04月03日 16:01

尽管发布两年了,现在回顾一番依旧觉得受益匪浅。

厉害,透彻

刘晓光 回复

英文不好,请问这本书有翻译过的中文版吗

勉强的读完了一遍 The little black book on Test Design ,感觉有类似《海盗派测试分析》的内容。
黑盒测试是基础,在做黑盒测试的过程中,我有一种感觉,用这篇文章中的一个单词来说 “loose”(松散),不能够形成一套系统,做黑盒测试总是有种 “无力感”,对待一个产品,提不出那么多问题,感觉在 “乱打拳”,没有一定的规律、节奏,随意,这样造成了心里对测试质量没有底气。
文中提到了很多测试可以考虑的 “点”,这些点激发编写测试点的灵感,但是如何能记全并能熟练实际应用到项目,感觉也是一项长期往复不断重复锻炼的一项技能。这种技能是一种分析探索的过程,文中也提到,就像是在做调查研究,需要收集很多的信息,整理,依靠人工判断出重要的部分,毕竟测试活动只有有限的时间。
文中有很多引用资料,准备再继续看看,英文不好,看着好费劲。

DUxuebing 论测试工程师的职责 中提及了此贴 05月29日 10:09
退之 回复

对的,基于风险测试。测试本质是抽样,在有限时间内保证最重要的东西不出事儿。
那本小黑书里告诉你的都是技巧点,它像个工具箱。工具箱里的东西使用的越熟,应付一个未知的被测物你就越有信心。

magicyang 回复

35 岁正是技术人员熟练掌握一门技能,需要沉淀知识积累,做升华的时候,就因为年龄的限制逼迫去开滴滴、送外卖,难怪连手机芯片都造不出来,受到他国的限制

退之 回复

我觉得如果你做芯片的,35 还是随便找工作的。。。
只是大部分人做的事情替代性强罢了。资本而已,抱怨无用,唉。

年龄越来越大,一直找不到发展方向,沉浸在自己一亩三分地无法自拔。
感谢大神的分享,醍醐灌顶。不是公司或者测试行业不好,只是自己的实力不够而已。
努力提升自己,站在更高的角度看问题

读了这篇文章如醍醐灌顶,打开了思维格局,对之后的目标有了更清晰的定位;到了一定程度限制自己的不是那些技术能力,反而是一些内在,心性上的东西。

我是非专业的测试工程师,从培训班出来,从事测试行业之后发现欠缺的东西太多了,工作时间比较忙,学习的时间比较少,周六日去学习了 Python 语言,发现自己根本不知道怎么用在工作上,工作四年了,感觉自己提升太难了,难到欲望跟不上自己的欲望,开始浮躁气馁,不知道如何打破这个僵局,转行也不知道做什么,很烦恼!求大佬指导下,给个出路啊!

jinxiaoqin-058 回复

从解决手头的问题做起,一边解决一边学习,不断的 PDCA,直到你成为团队中最棒的那几个人为止。
技能的积累非科班会吃力,也需要时间。但是如果还想继续做 QA,不能放弃,时间的积累会有用,每年往回看都会不一样。
具体,你可以试试我文章最后提的那几个办法。
好运。

请问一下手机的 ROM 测试有什么发展方向吗?目前在 ODM 做手机系统测试,基本都是功能测试,也会测试到 CTS,感觉 ROM 测试的涉及的技术点很少的样子

FyueC 回复

我们做的事情有点类似,我大概说下我们这边有涉及到的测试项:功能、性能、稳定性、兼容性、功耗、效果、专项(WIFI/BT/充电等等),自动化(Framework 接口/功能定制),可以选个你自己感兴趣的方向发展看看😀 😀 😀

Joo 回复

Fw 接口这块没接触过,其它除性能外都有一点接触,目前我们这边来看,能做出自动化的就是在压力测试中解决一下不频繁去点的操作,也没有什么好的团队,公司刚开始做手机业务,可能还是理解程度不够,得学习学习 android

我跟你一样也是电气专业转的测试目前我是刚 3 年多一点😜 ,不知道你现在怎么样了

去年年底的时候,似乎突然想明白了职业未来,一句话拍死自己了:测试是老板罪不想要的。测试说成本,能省一个都是利润。
什么才是老板要的,coding。着才是生产,有正向收入的。

再回顾一下测试人员所做的事情,任何测试行为,其实只能发现问题,但在开发再提交代码之前,改变不了任何代码质量。你的测试行为,只能证明当前代码存在问题。新的提交有没有新的问题?这像不像个无底递归?

再反过来,如果代码一开始叫写得好,你再高质量的测试,也发现不了问题。那么,要你这个测试何用?省下来你的薪水就是开发的奖金啦啦啦

so,作为测试同学,如果你不比开发牛,你就是个影响利润的成本项;
如果你比开发还牛,你为什么不直接作为一个牛逼的开发?

不图 回复

你说的是对的。从经济学角度,QA 不是一个好职位。
但是看如何选择了。

匿名 资深点工怎么体现出自己的优秀? 中提及了此贴 07月22日 09:50

光哥好,请教下您在面对团队问题的时候,是如何思考的,或者说如何发掘问题并以怎样的思路去解决的,每个人的思考方式都不同,发掘的点也不一样,如何提升下这种思考能力,或者思考框架,有什么书籍推荐么

能达到这么高的水平,还来做什么测试 ?
移动互联网测试行业卷的这么厉害吗 ? 按照文中这个思路,一个公司只要一个测试就够了,因为他又要懂行业懂产品懂业务,又要懂测试懂开发懂运维,还要懂管理懂架构,还要能够 996 加班测版本,文能与产品开发撕逼,武能撸代码写工具设计 QA 架构,然后拿着同水平开发一半的工资,等着 35 岁被裁员 ...

“在团队里有很多人比我强么?周围的同事都是我佩服的么?我做的事儿有挑战么? 方法:如果这三点都是否定的,并且你处于职业生涯的早期。也许(只是也许),你该考虑一下换个团队了” 引起反思

这个帖子太强了,楼主真的是站到了一个被仰望的高度来看待测试岗位。
帖子看到一半,就有一种豁然开朗的感觉。感谢楼主!
我也有一个小小的疑问,楼主有没有经历过,一个团队中,测试的地位低呢,由于领导自然的偏向,很多的需要推动研发的工作变得很难开展。

刘晓光 回复

这个网址已经不能访问了,是否有保存下来的?

退之 回复

兄弟有海盗派测试分析这本书吗,另外 The little black book on Test Design 有中文版吗

晓光大佬您的公众号是多少

退之 回复

海盗派测试分析这本书如何呢,想补下测试基础,看看书,不知道有没有推荐

Mr.Li 回复

关键是抱怨赚不来钱啊老兄。可以呼吁,但在大环境特别好之前(也许永远不会好)不如持续提升自己。
起码从结果来看,是最划算的。

红客联盟 回复

没有中文版,啃啃英文版吧。我没有公众号。

ZYH 回复

你的灯亮着吗
批判性思维

刘晓光 回复

18 年的帖子,已经成为经典了。晓光要不要再来写一篇经典。

真的是经典中的经典,文中提到的方向,真的很适合参考,是成为 T 型人才的很好的引导。

恒温 回复

总结能力和公文书写能力真是高级管理岗位必备哈,这篇讨贼檄文可见一般

恒温 回复

年底前搞一篇,已经开始攒文。

最近在写新一年的 OKR,再次翻到大佬的文章,醍醐灌顶

好家伙,本来想着说来学习一波。结果越看越自闭,大佬们真的太强了,感觉自己还有好多好多东西不会。哎,加油吧。

刘晓光 回复

这个地址好像打不开,请问有备份的吗大佬

A. 请推荐【让你拍手称赞的帖子】- 已结束 中提及了此贴 06月06日 15:33
未闻佳音 回复

我也是

关注大佬

做了三年测试了,感觉每天就是打杂,做做功能,都不知道自己做啥😂 😂 🙁

看了大佬写的内容,深深概括自己离高峰还有很长很长的路,共勉

为啥我都工作 7 年了,才看到大佬的这篇文章,雄关漫道真如铁,而今迈步从头越。自勉了,顶大佬

这篇文章两年前看到,当时很震惊,但是随后也还是一如既往,没有提升。
反反复复看了两三遍,这次又迷茫职业发展,又翻出来细细品。真是经典中的经典,每一次看都有不同的想法。感谢

大佬你好,我看了你的很多文章,我最近打算跳槽。在测试这个行业有三年 + 的经验了,但是在今年的这个行情下感觉找到工作希望渺茫,想听听大佬对几年测试的看法😀

以下内容由 GPT 总结输出

测试职业发展的关键点有:

  1. 熟练掌握项目经验和基础知识:对复杂系统有实战经验,掌握测试基础知识,如测试设计、管理等。

  2. 掌握一门主语言和深入了解:熟练掌握一门主语言,并深入了解其特性和常用框架,了解软件架构和常见技术。

  3. 在一个领域有专长:在某个领域有深入了解,包括业务流程、核心接口、技术要点等。

  4. 能够用技术保障质量:具备测试开发的能力,能够使用技术手段提高测试效率和增强测试能力。

  5. 具备高段位要求:对计算机领域知识有通盘理解,具备软件架构能力、产品 sense、沟通能力、团队管理等技能。

  6. 持续学习和解决复杂问题的能力:具备持续学习的能力,能够解决复杂问题,有系统性的学习方法和思考方式。

要想进阶和转型,可以通过以下几个步骤来实现:

  1. 熟悉被测系统,理解业务流程和技术实现。

  2. 找到问题并解决问题,不断提升自己的技能和能力。

  3. 进行系统学习,了解计算机领域的知识和技术。

  4. 选择有挑战的团队,积极参与项目,并学会解决各种复杂问题。

总的来说,测试职业的发展需要不断学习和成长,掌握技术和领域知识,解决复杂问题,同时注重个人特质和团队合作能力。通过不断提升自己的能力和经验,才能在职业发展中获得更好的机会和回报。

需要 登录 後方可回應,如果你還沒有帳號按這裡 注册