查看原文
其他

硅谷访谈:海盗派掌门人James Bach(下)- 软件测试砥砺前行

The following article is from TestQ Author 耿晓倩


接:硅谷访谈:海盗派掌门人James Bach(上)- 历数软件测试中的自欺欺人

耿晓倩 Christina Geng = C
James Bach = J


01 走上独立测试咨询人之路 ,James却并不推荐独立咨询工作


C: 请问,是什么促使您在1999年辞去原来的工作,走上独立咨询的道路?我知道很多人有类似的职业追求,请问对想要从事独立咨询的测试人,您有什么建议?


J:我不想对我的追求妥协,所以我辞去了以前的工作。那时,我被我工作的咨询公司要求写一些弄虚作假的文档,我很气愤。当我拒绝他们后,他们很失望,我的老板对我也很失望。但是我认为,那些可以给你任何你要的东西的人是药贩子。我想做一个医生,而不是药贩子。医生救死扶伤,医生不会根据病人的喜好给病人开药,或者骗病人只说些病人喜欢听的话。


所以,我决定自己开咨询公司。但是,这个行业并不容易做,因为并没有很多人把钱花在你认为对他们有用的事情上。我想,这也是为什么在我看来很多咨询公司弄虚作假。他们为了赚钱维持生计,这和追求卓越是两回事。


另外一方面,也是因为我是一个很难相处的人。长远来看,我只可以为完全理解我的人工作,那就是我妻子 Lenore。她知道如何来维护一个我可以保持创新的工作环境。她从来不会让我去和一个不合拍的客户合作。所以,我创办Satisfice, Inc. ,然后几乎把公司全部都交给了她。这样也可以让她在公司上的投入和我有同样感觉。过去的18年,我们合作的非常好。她负责所有公司运营工作,我负责全部的咨询工作。


C:如果有些软件测试工程师想和你一样做独立咨询工作,你有什么建议给他们?


J:全世界有很多艺术家,摄影家,技工,他们作为独立工作者是因为他们不想为了自己的追求做出太大的让步。但是,这条路很难,靠这个来维持生计更是辛苦。我并不是很推荐这条路。


C:你所说的难指的仅仅是赚钱难吗?最难的部分是什么?


J:在企业里,你必须和掌控钱的人和睦相处。有钱和有权的人通过牺牲和妥协来取悦他们老板。他们期望雇佣一些和他们一样的人。


特别是对于软件测试服务来说,掌控钱的人不希望测试人员制造任何的麻烦。他们希望测试工程师可以保持沉默或者告诉他们软件产品质量已经足够好了。他们想听到好消息。但是,如果他们不做测试,他们会被指责不负责任。如果他们不对测试惨假和打击,他们又会因为测试人员发现问题而惹麻烦。如果,公司领导雇佣一些假的测试人员,例如那些拿着ISTQB证书只会写很多文档实际上却并没有发现很多产品问题的人,那么如果产品质量出现问题,我们就可以去质问测试人员,而没有人会去责怪那些招了他们的公司领导。我觉得这也是世界上那么多测试咨询公司存在的原因之一。


我之所以说,我所做的测试咨询工作难是因为寻找那些想要听真话的客户难,尤其是有的时候真话会带来很多麻烦。我的客户是一些不想被愚弄或者取悦的人。最难的部分是找到这些客户。


C:你很有名而且名声很好。


J:如果你Google一下我,你就会知道我在和别人争吵上有很好的名声;而且我会愤怒地指出别人的不恰当的做法。有人说我太咄咄逼人,盛气凌人。但是,我不觉得为了对的事情挺身而出是盛气凌人,而且我认为一个正义的人有责任挺身而出。但是也许没有人认为我所坚持的对的事情是对的。我想,他们会认为我所想的好的工程只是我自己的痴心妄想。



02 怎么才能把测试工作对非测试人员讲清楚?


C:2017年十月,PNSQC发布了一个您演讲的视频<The future of the testing role>, 您提到一个困扰很多测试工程师的问题 “如果我们想要让大家认可我们的工作,我们需要能够让我们做的工作对于非测试人员来说易读。” 您可以在这里总结一下您认为的有效的度量测试价值的方法吗?


J:我不喜欢“度量”这个词,这个词没有任何帮助。任何时候,当你想要说“度量”的时候,我建议你用“评估”。评估是一个比度量更加广的一个概念。评估包括度量,但也包含一些非度量的东西。


我们需要评估软件测试的价值,评估是一系列的过程,包括观察人、和人交谈、以及检验测试过程。我们需要理解我们自己的测试和这样做的价值是什么。这是为什么我们用“易读性”(legibility)。易读是一种可以被读懂和理解的能力。书写可以让我们所说的话变成“可读的”或“不可读的”。同样,我们可以把这个概念应用到任何系统或者流程中。一个系统,如果可以通过你的了解去表述它在做什么,那么这个系统就是可读的。我和我妻子已经结婚27年了,她的情绪对我来说是高度可读的,在几秒钟内,我就可以说出她现在的感受是什么。


不过,测试并不像书写和人那么容易读。这是为什么测试人必须要花功夫使你的测试可读。有人用白板或者表格去帮助表述。他们也是用这样的方式去讲述测试故事。如果测试人不知道怎么去讲述测试故事,最典型的解决办法就是去数测试用例的个数,然后声明“我测过了”。我认为,这样做太可怕了。测试用例只不过是文件而已,数他们的数量并不能代表什么。除非你知道每个容器里装了什么。500个测试用例是好是坏,你无从知晓,说不定只是一个测试用例加499份拷贝。


所以,我把我的测试分成不同的测试活动,给每一个测试活动取个名字,例如service test, sanity test, performance test, functional test, 或者这些测试的混合。如果给每个测试行为一个名字,测试就更容易描述。这样不做测试的人也有机会了解我所讲的是什么意思。如果我要解释在每个测试活动中我到底做了什么。我通常用测试覆盖率(具体专注什么以及包括用了什么测试数据)、测试准则 (test oracle 即如何判断问题是产品缺陷)和步骤(在从事这些测试活动的时候,做了哪些具体的实验)。我也会谈谈,为什么会设计这些测试活动,即可疑的产品风险。


C:那如何能快速准确地了解一个软件应用的风险呢?


J:这同样是个评估的过程而非度量。我们可以通过结合各种不同类型的分析方法来获得一些对风险的认识。


我们可以做黑盒分析:意思是说通过产品的功能和其在现实世界中角色,来问我们自己如果产品的行为不对,会对用户造成什么样的后果?Twitter刚刚问世的时候只是个很小的平台,大家在上面互相发小消息。然后,大家开始用Twitter公布重要的实时消息。Twitter成为了一个发布灾难等消息的重要系统。如今,如果Twitter宕机,它就会对很多人造成很大的伤害。


我们也可以打开黑盒子看看系统内部:这意味着要看看系统的代码和这些代码怎么互相连系在一起。我们想象某一部分失败了,然后看看下一步会发生什么。


我们还可以看看过去发生过的:可以查查看这个产品或类似的产品以前哪里出过问题,任何发生过的问题都极有可以再发生。


我说“找到可能的风险”我的意思是讨论。 我们作为一个团队一起讨论整个系统和它潜在的不足。测试人员有可能自己去讨论这些风险,但是通常来说,我们周围的人有不同的专长和不同的经验。因此,分析风险的过程并不是做数学,也并不是计算风险是什么的过程,或者直接用“风险尺子”去量一量风险的长度。这些方法是行不通的。相反,这是个社交的过程,大家一起去学习、探讨,然后决定我们应该担心什么。


风险评估的讨论可以告诉我们产品中存在的可疑风险,而测试会告诉我们产品中存在的真正的风险。然后,我们发布产品,可以证明我们是否正确。我们可能是对的,但也可能有另外的风险我们并没有发现。时间久了,看看那些我们之前没有发现的风险却被用户发现的问题,我们可以更好的了解真正的风险是什么,去预测那些风险在产品中发生的可能性,集中精力在这些高风险的事情上。


03  一代大师杰瑞温伯格留给我们了什么


C: 杰瑞温伯格是一个在软件工程和测试领域很有影响力的一个人。我听说,您过去有机会和他有过接触,您觉得我们软件测试者可以从杰瑞身上学到什么?


J:我推荐大家至少要读一下那本最基本的讲软件测试技术和思想的书。书名叫《General Systems Thinking》。尽管这书不好读,你可以一次读几页,然后仔细想想他在讲什么。这本书改变了我看待世界的方式。这本书不只讲了怎么看软件测试,也在讲我们应该怎么探索这个世界而不被这个世界愚弄。但是,当然,这也是软件测试的基本特性。


我认为其他书也都非常值得读。那些都是直接或者间接的在讲如何做好测试。杰瑞从另一方面讲是一个老师,因为他讲了很多在软件开发中人本主义。这也是为什么我总是以人为中心。杰瑞介绍给我——哲学、谦逊和社会学对软件开发的重要性。确实,我做咨询的这些年,我常常会被人问很多技术问题,但是其实那些都是人的问题。例如,一个公司雇我去给他们解决自动化的问题,但是实际上,问题是做自动化的人对一个重要的开发者很不满意,拒绝和他交谈。他们是一个团队,需要合作。我常常发现很多问题是人的问题。所以,当我做咨询的时候,或者做培训的时候,我都是先从人开始讲起。这也正是杰瑞教会我的。


C:事实上,当你现在和我谈杰瑞的时候,我有你当年和杰瑞交谈时的同样的感受。感谢你分享这么多好的东西给我。


J:其实,这也是我愿意和你聊的原因之一。这是我从杰瑞那里学到的其中一部分。如果可以,我应该尽可能的坦诚和帮助别人。这给了我生命更多意义。你还年轻,等你变老了,也会和我一样:有些年轻人会来找你。也许,你会记得我今天和你说的杰瑞的话。这是你的责任去帮助下一代成长,成长的更快更好。


如果我可以帮你解决困扰你十年的问题,我是很愿意去做的。我就在发现真正测试价值里面徘徊了十年的时间。我想帮你节省这个时间,希望你只用一年而不是十年。


04 如果你刚刚毕业,如果你想加入软件测试行业,听听James的三点建


C:如果你给年轻人或者新进入测试行业的人三点建议,会是什么?


J:第一,安全测试现在非常火热。如果你有兴趣搞清楚安全领域的全部细枝末节,我建议你去做个安全领域的测试专家。


第二,如果你不拒绝编程工作,你一定要学习编程。如果你不想学习编程,如果你遇到一个好的测试经理,你仍然可以把测试工作做得很好。但是,今天作为一个测试人员,如果你不会做测试自动化,你会很难找到一份工作,因为很多测试管理者认为唯有自动化才是好的测试。我个人认为,在测试领域,如果我们把所有人变成程序员,这会非常糟糕。我是一个程序员。我并不排斥编程工作。问题是,每次我做测试的时候,我会试图去写工具。我想写个软件帮我做测试。这经常会让我从测试里面分心。我需要对编码不那么热衷的人,可以把注意力集中在真正的测试流程上。


第三,是我最后一个建议:找一个职业导师。找一个在必要的时候,可以给你提供建议,或者让你发泄不满的人。这个人不必和你同一个公司。或许,你可以加入一个测试论坛。我的一个学生,Lanra Oniga,刚刚完成他在第一个测试会议上的演讲,刚刚发布了她的第一篇文章,我对此感到非常自豪。


后序


和James的采访,从约好的一个小时聊了一个半小时。他很直接也很坦诚,让整个采访过程进行的很顺畅。之后我整理文字的时候,重温整个采访过程,让我更加真切的感受到了,为什么James可以对测试方法和理论信手拈来。他在软件测试中,坚守原则,不变初衷。


如今,技术不断的革新迭代,在干货满天飞且信息高度透明的互联网环境里,工程师仍饥肠辘辘的焦急等待下一篇干货的到来。大家会停下来,听听从业三十余年且全部热情扑在把测试做好这件事情上的James是怎么想的吗?我并不确定。


从访谈,到定稿,再到翻译,此期间,公司正赶上在项目发布和组织变化的关键期,所以前前后后花费了比我想象更长的时间。经过和James的多次讨论,文章也从上两万多字,精简到了加起来不到一万字的两篇。当看到文章成型,我感到非常满足!


作者简介

耿晓倩, 十余年从业于软件测试行业,仍在如何做好软件测试的路上思考前行;曾发表演讲《自动化测试的六次改革》及《大数据测试中的挑战》;拥有手机端自动化测试美国专利;现就职于Splunk旧金山总部,任职软件测试总监。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存