十年前,《全程软件测试》第1版和广大读者见面了,它是朱少民老师在WebEx七年测试工作之结晶。这本书受到了读者的喜欢,甚至有好几家公司把这本书作为测试工程师的入职培训教材。
十年过去了,软件测试领域发生了很大变化,作者也发生了很大变化。虽然离开了WebEx、Cisco,离开了在企业一线的测试工作,来到了同济大学教书,但我一直没有失去和工业界的联系,而且不再局限一家公司的实践,视野更开阔了。作者和近百家公司的测试工程师都有交流,为他们提供测试培训、咨询等服务(包括为中国南车、华为2012实验室的研发能力中心等提供较长期的测试技术咨询服务)。
今天,作者对测试的理解和认识,相比自己写本书第一版、第二版时,在广度和深度方面都有了较大的提升。今天我们有幸采访了《全程软件测试(第3版)》作者朱少民,来看看他的所思所想。
朱少民老师
异步社区:朱老师您好,听说您在软件测试领域已经耕耘了30年,您能向读者朋友们分享一下这30年的经历吗?您目前正在做哪些事情?
朱少民:三十年,可谓一言难尽。一句话,从大学体制内走出,在跨国企业工作十多年,又重新进入体制内(大学12年-公司11年-大学8年)。虽没有波涛汹涌,但也并非一帆风顺,甚至也有磨难。磨难也不是坏事,是对自己的心智的磨练,成为一个更健康、更有力量的人。如果要了解我的经历,可以参考两个材料:
第一个,自己为软件测试MOOC在线课程制作的一个介绍,做过一个视频,扫二维码。
扫描二维码,认识朱少民
第二个,《赢在测试》(2010年版本,非“赢在测试2” )第10章内容。
《赢在测试:中国软件测试先行者之道》
也许是由于大学的情结,所以喜欢学习和思考、喜欢写书,即使写书很累。目前在同济大学工作,教学与科研并行,侧重软件工程和软件测试领域,先后开设了《软件测试技术》、《软件质量保证与测试》、《软件工程》、《软件项目管理》、《软件过程管理》和《软件构造》等课程,也先后出版了六本教材,其中《软件测试方法和技术》问世十几年,其第3版是软件测试领域唯一一本国家级十二五规划教材,并获得上海普通高校优秀教材,《软件项目管理(第2版)》,获得国家工信部十二五规划教材。
在科研上,先后与中国中车、华为技术公司等合作,侧重软件质量管理和测试体系建设、软件测试技术提升和国内外软件测试技术前沿的研究与合作,最近两年关注人工智能技术应用于软件测试,致力于人机结对测试(man-machine pair testing)、探索式测试与工具自动化测试的有机结合。
同时,我也服务社会,走入企业,指导企业如何做好质量管理、需求分析、项目管理和软件测试等工作,包括咨询和企业内训。
异步社区: 从测试经理、QA总监到大学老师,您最喜欢哪段经历?每段经历都给您带来了哪些感悟,可以分享一下吗?
朱少民:还是喜欢公司那种气氛,有朝气、团队氛围浓厚,而且更实在,关注实际问题的解决,不像大学,有时迫于职称的压力,为了写论文而写论文,感觉是在自娱自乐。但我的周围是一批特别优秀的年轻学者(一方面我喜欢和年轻人交流,另方面喜欢那些务实的学者),他们来自清华、北大、南京大学、复旦、天津大学、、新加坡南洋理工……力图解决工业界遇到的难题,将科研和产业结合得很好,看到软件工程的研究步入正规,其研究真正能够产生有巨大工程价值的成果。
我从大学进入企业,是一家美国企业(webex,2007被思科以32亿美元收购),能接触到硅谷先进的思想和方法、优秀的实践等,自己也有幸在硅谷工作一年半,也深刻体会质量是构建的,测试不是一个阶段,而是贯穿整个生命周期,也深刻感觉国内质量管理和测试的落后,这些促进我动手写《全程软件测试》。我2005年设计的软件研发与运维质量管理闭环(如图1所示)——DevOps的雏形,从国内来看,今天依旧是先进的。
软件研发与运维质量管理闭环
异步社区: 《全程软件测试(第3版)》从第一版到第三版,历时10年,每一次出版都融入了您的全新思考和经验沉淀,您觉得这些年来,测试有什么最显著的变化?测试人员的挑战和新要求是什么?
朱少民:最近在“云测试行业峰会”和“2018年度华为测试体系颁奖典礼”等多个场合上都谈到当今软件测试的现状以及所遇到的挑战。十多年前,如果企业有专职的测试团队、一个完整的测试流程、测试的设计能采用常规的测试方法、测试的执行和缺陷可以全程跟踪、会用工具进行性能测试,软件测试就算做得不错的。
今天,软件测试的确有长足的进步,例如:
1.重视持续集成(CI)建设、关注DevOps
2.非常关注自动化测试(TA)
3.多数公司建成(TA)测试平台
4.开始大量使用开源测试工具
5.代码静态分析有较大提升
6.大数据、云平台的测试初有成效
但也看到一些问题的存在:
1.内建质量文化没有形成,缺陷预防做得较差
2.热衷于招测试开发、重复造轮子,但自动化测试成效还比较低
3.热衷技术,而缺乏对测试自身的思考
4.面对软件开发新模式缺乏应对策略,如敏捷测试是形似而神不似
5.介入研发深度不够,测试效率偏低
6.许多困惑依旧困扰不少测试人员
开发新模式(敏捷、DevOps等)、开发新技术(AI、容器、微服务等)、软件新环境(云计算、物联网、工业App等)等对软件测试是挑战,也是机遇,被它们驱动。例如,我们可以利用新技术(如AI、容器、微服务)为测试服务。敏捷对测试挑战很大,要求测试高度的自动化,但是如果把敏捷做得很极致,ATDD、BDD或RBE等,需求即测试,测试反而变得很简单。
异步社区:您能概括一下《全程软件测试(第3版)》的最大亮点是什么?与前两版相比,它的这次升级,在内容、结构乃至布局思路上有哪些变化?
朱少民:《全程软件测试(第3版)》的最大亮点是能结合传统开发和敏捷/DevOps两种共存环境下来讨论测试,有点类似“双态(敏态和稳态)IT联盟”所提倡的测试敏捷化。过去三个月,我也参加了《测试敏捷化白皮书》的编写工作,从当初讨论敏捷模式下的测试,到后来改为“测试敏捷化”——哪些因素或障碍阻挡测试做得又快又好,如何从文化、组织、技术、流程来改进软件测试。
《全程软件测试(第3版)》,这次是全新改版,无论从结构还是从内容上都有很大的改变,仿佛是一本新书,只是基本思想——“全程软件测试”没变,而且今天看“全程软件测试”更彻底(测试不仅左移而且右移,DevOps模式)、更具价值,所以书名还取为《全程软件测试》。
从结构上看,更彻底展示全过程的软件测试,不仅用一章(第2章)来诠释“全程软件测试”的思想,而且将全程软件测试思想及其实践扩展到非功能测试——性能测试和安全性测试、全程静态测试、全程建模、全程可视化管理等。
从内容上看,增加了DevOps模式下的测试、微服务/AI/云计算的测试,还增加了测试思维的训练、个人测试能力提升路线图、团队测试过程改进。像360度看测试、安全性测试、测试建模等几章内容几乎是全新的,加强了测试分析,删除了测试的基本方法(黑盒和白盒方法)的详细介绍。
这些改变,可以进行两个版本的目录对比,并参考第3版前言。
异步社区:《全程软件测试(第3版)》得到了30多位测试专家、产品经理、研发负责人、大学教授的联袂推荐,在本书的出版过程中,您最大的收获是什么?
朱少民:这30位专家乐于推荐,也感受到友谊和温暖,同时他们也提出一些宝贵的意见,帮助我进一步思考和提升。感谢他们的支持和推荐。在测试领域,我的确有很多朋友,现在微信朋友圈有1500多人,感觉有1000多朋友都是测试的,有些朋友不够熟,但熟悉的朋友也超过两百人,有些熟识的朋友还身居比较高的位置,但也没办法让每一个熟悉的朋友推荐,没有被邀请的朋友是否会不高兴呢?我不确定。正好借此机会说明一下,这个过程,不体现关系疏远或亲近,希望朋友们能够理解。
异步社区:测试岗位的职责越来越细化,测试人员的工作边界也越来越模糊,具体体现在哪一点?您觉得测试人越来越焦虑的原因是什么?对于这些人有哪些建议?
朱少民:测试岗位的职责也不一定越来越细化,因为也有公司提倡“全栈工程师”、开发和测试的彻底融合,开发可以做更多的测试,不仅做单元测试、集成测试,也可以做系统测试;不仅做功能测试,也可以做性能测试、可靠性测试等。缺乏开发能力的测试人员,其发展会受到一定的限制,也可以说,缺乏测试能力的开发人员,其发展也会受到一定的限制。今天来看,专职的测试人员可能会减少,但测试这项工作更重要了,每个开发人员也需要掌握测试方法和技术、工具。
测试人焦虑可能来自于这种趋势——测试与开发越来越融合,有些公司追求更低的测试:开发比,而同时对编程、设计有一种畏惧感。这种担心没必要,测试工作始终有其存在的价值,测试做好了,都会有自己的岗位或在另一公司能找到测试的工作。即使专职的测试岗位少了,也可以转行做开发、产品经理。在南京参加IAS峰会,一位七牛云的技术总监说,学会AI所用的python,半天就够了。即使这样说,有些夸张,但学会一门编程语言不是很难的事,更何况多数测试人之前还有C/C++/Java的基础。
《全程软件测试》会帮助您提升自己,不仅仅是测试自身的提升,而且也包括在产品、开发和运维、思维能力等方面的提升,帮助您从客户/用户角度来构建正确、完整的质量观,帮助您构建系统的产品和运维的认识,学习解决问题的工程方法。
异步社区:经过近30年的工作积累,您对测试工作的感觉是否还如当年一样热衷?如何在繁重的工作压力下,保持初心呢?
朱少民:工作三十年,测试有近20年,感觉时间的确过得太快,20年弹指一挥间。也许是太投入了,更感觉时间如梭。
能保持初心,一方面是兴趣使然,另方面保持一颗学习的心。活到老学到老,不断学习,不断有新的东西,就感觉测试很有趣,值得探讨、研究和投入。聪明的人太多,天才可以不努力,但对我们这些才智平庸的人,只有专注,才能有点成就。
异步社区:针对刚毕业、初入职场的小白,您有什么建议?
朱少民:先要系统地看一本书,了解自己的工作全局,清楚领域的发展动态或未来趋势,然后了解自己的特长和兴趣,抓住1-2个方向,深入下去,不断进取,必有成就。就像《全程软件测试》所提供的能力图谱,给出三个方向,选择其中一个发展方向。同时,也像本书提出的T字型或双T型能力结构,有较宽的知识面,有1-2个深度发展的能力,是自己立于不败之地。当然,我们要善于学习,善于利用周围的资源(外部资源、公司内部资源、身边的资深人士等),这样会成长的更快。
异步社区:老师近期有写新书的打算吗?可以“剧透”一下新书的方向或者大致内容吗?
朱少民:原来计划写一本真正意义的《敏捷测试》,但由于教材优先,而且一进入高教出版社的出版计划,将重点打造一本《敏捷模式下的软件工程》教材,还要修订《软件过程管理》(出版十年,还在印刷,没有更新,对不起读者)、《软件测试方法和技术(第3版)》两本教材,之前刚完成《软件质量保证与管理(第2版)》的修订工作。
朱少民老师著作
《全程软件测试(第3版)》
朱少民 著,人民邮电出版社
扫描二维码,一键购买
本书系统地总结了过去十年中软件测试发生的变化,浓缩了作者许多宝贵的软件测试经验。本书首先介绍对于软件测试的不同看法,全程软件测试的思想,软件测试的基础设施与TA框架、团队能力建设;然后逐步深入到测试的计划、设计、执行、持续反馈和改进;接着,讨论全程测试的思想,包括全程静态测试、全程性能测试、全程安全性、全程建模、全程可视化。本书最后展望了软件测试的未来。
本书适合软件测试人员阅读,也可作为相关专业人士的参考指南。