好久没有更新blog了,算是憋了一个大招 :)
下面是这本书的前言。
前 言
现在已经是一个移动互联网的时代,借助手机等移动设备,人们可以完成资讯的获取、社交、游戏,以及日常生活的各种应用,甚至很多工作的开展。有很多新兴的移动互联网公司在崛起,也有很多传统的IT公司在转型,更有大量传统行业的企业在借助移动互联网拓展自己的业务。对IT技术人员而言,这是一个非常好的时代,有大量的工作机会,因为有大量的移动互联网相关系统的研发需求。当然,这也意味着有很多新的技术和方法要去学习。有很多的研发人员快速转型到移动互联网领域,有大量的移动互联网产品被开发出来。在这个过程中,也会面临一个问题,那就是产品质量的参差不齐。在某种程度上,因为移动设备的特点,比如屏幕相比PC较小、电量有限、移动网络状况复杂,以及设备性能的问题,移动互联网产品对质量的要求其实更高。有过相关研发经验的人应该能体会,快速开发一个可用的移动App并不难,但是做一个高质量的App其实是一件非常有挑战的事情。
这本书写作的初衷就是希望给移动互联网产品的研发团队,包括测试团队,一个基于大量一线实践的比较系统性的参考。
我们毕业后工作的几家公司都比较重视产品质量,对测试的投入都比较大,对人员的要求也比较高,使得我们有机会比较系统的实践专业的测试工作。另一方面,近几年我们接触了很多规模较小的软件研发组织,甚至是一些创业公司,他们的团队和业务在快速发展,有非常强烈的意愿去深入了解体系化的测试和质量提升工作是如何开展的,但常常会感到一些迷茫。之前我们写过一些博客文章和培训材料,并参加了一些业界的技术交流,得到了非常正面的反馈,让我们觉得这件事有价值,对同行们可能也有一些帮助。一两次的技术交流和零散的讨论总觉得不够系统,说不清楚。那不如写一本书吧,正好这些都是我们自己做过的事情,有过一些实践经验也踩过一些坑。
整本书的内容组织
基于以上的出发点,我们希望比较系统的来介绍整个移动App的测试,其实广泛一点来讲是质量保证的工作,因为这本书里介绍的不少实践已经超出了单纯的测试的范畴。
首先我们会介绍一下典型的互联网产品的研发流程。就我们工作过的几家公司,每家都有一些不同,但是核心的做法其实非常类似。并不是简单的套用敏捷等流程方法,而是经过不断实践的摸索和调整,各家都找到一些适合产品特定以及互联网快速迭代要求的流程做法。这些也是后面讨论一些质量实践的基础。
接下来我们按照功能测试,功能测试的自动化,性能测试,App专项测试,辅助测试方法这样的脉络来逐步介绍相关的测试实践。在第1章的第二部分我们介绍了功能测试中的一些实践,包括测试用例的设计和评审,以及测试进度的管理。
在第2章,介绍了自动化的方法,包括接口层面的自动化,这里我们重点介绍了一种我们实践过的轻量级的方案,以及App UI层面的自动化,分布介绍了Android和iOS用到的一些技术方案。
在第3章,介绍了性能测试的方法,包括Web前端的性能,为了介绍这部分的性能问题,也介绍HTTP协议相关的知识,以及常用的测试方法。第二部分是App端的性能,包括Android和iOS内存相关的问题,以及内嵌Web组件的性能分析。最后介绍了后台服务的性能测试,包括了压力场景的建模、测试工具的介绍以及测试数据的收集和分析。
在第4章,重点介绍了几个针对App的测试方法,包括兼容性测试、流量测试、电量测试、弱网络测试、稳定性测试、安全测试和环境相关测试。这些方法,由于都是针对某个特殊方面或者问题的,所以我们统称为专项测试。
在第5章,介绍了代码静态扫描、代码覆盖率分析、接口Mock方法和AOP测试方法,这些是测试方法中非常有效的补充,我们称之为辅助测试方法。
在第6章,介绍了发布过程中的质量保证活动,包括持续集成的实践,以及发布环境的质量包括,包括发布系统的介绍。另外还专门讨论了内测和灰度这两个互联网产品比较常用的方法。
第7章,介绍了质量的度量和推动方法。包括我们常用的一些质量分析的维度,QA的角色和所做的工作,并专门讨论跨团队的质量推动。
第8章,介绍了一些发布之后的质量管理工作,包括继续进行一些模块之间的交叉测试发现一些之前没有发现的问题。另外,介绍了互联网产品的一些常见的监控维度,并重点介绍了适合测试团队开展的接口方面的自动化监控的实践做法。最后,讨论了关于外部用户问题反馈的收集和跟进的一些常见的做法。
第9章,最后,作为在软件测试领域工作多年的专业人员,我们也想借这个机会讨论一些我们对于软件测试、测试人员以及团队的看法和思考。因为前面介绍的所有实践,都是这些人做出来的。
关于内容本身,如果只用一个词来形容其特点,我想那就是实战。除了个别知识点补充了一点点介绍性材料,这本书几乎所有的内容都是我们在真实的项目中实践过的,有很多的材料都是直接来自真实的项目(当然做了一些敏感信息的过滤)。我们的原则是宁愿不全面,也不想误导。因为工作久了,我们发现有很多的理论是似是而非的,怎么说都有道理,比如一本关于企业管理的书凭空讨论一个企业应该专注一个领域还是应该多元化经营?这样的讨论可能会一直绕圈子,给不了真正有价值的参考。还不如写一本书,介绍几个真实的企业,他们是做什么的,处于什么样的状况,有什么优势,遇到什么实际问题,是怎么处理的。软件测试,甚至整个软件研发,都属于工程实践的范畴,最终是要有实际的产出,不是凭空的理论,所以我们觉得也应该用实践的态度来对待知识经验的分享。
谁适合阅读本书
说实话,在给这本书起名的时候我们有一些纠结,因为内容是围绕着一个移动App测试的各个方面来讲解的,但是有经验的读者会发现,
这里介绍的测试技术和质量流程对于其他互联网产品同样适用。比如一些自动化和性能测试的方法,以及代码静态分析和覆盖率等技术手段,还有质量度量和推动的实践,都不局限于移动互联网方面。更进一步,我们觉得并不局限在互联网方面。就我们个人的经历而言,我们曾经参与过大型电信系统的开发,企业级服务器软件的测试,以及PC客户端的产品,后来转型到互联网领域,有很多在之前领域里好的实践可以被借鉴和应用,只不过要考虑实际产品和项目的特点来调整,我想反之也是一样。所以请大家不要被互联网或者所谓的互联网思维束缚,不是触了网就立即如何。我们仍然需要理解每一个技术的原理和优缺点,对于每一个质量提升的实践也是一样,然后结合自己所在项目的实践,优化和调整,这样会更加的有效果和价值。
基于本书的内容组织,这本书可能适合下面这些人:
1. 希望将测试做得更加深入的一线测试人员,特别是互联网和移动互联网的测试人员,可以更加系统的了解相关的测试技术和方法。
2. 希望提高代码质量的一线开发人员。本书有很多的质量提升做法也可以开发来实施,比如静态扫描和内存分析,在很多的团队中也确实如此。
3. 测试团队的leader,特别是一些接手互联网或者移动互联网测试团队时间不长的,可以比较系统的了解测试和质量管理工作的规划和开展。
4. 希望提高产品质量和研发效率的研发团队负责人,可以作为对全流程的质量提升的一些参考。
5. 在校的大学生,了解到现在很多学校有测试相关的专业了,希望大家在校园里就可以了解到一些业界的实践做法。
6. 其他任何关注移动互联网产品研发和质量提升的人员。
这是一本很全面的关于测试的书吗?
嗯…我们很想说是,但很遗憾它可能还差很远。
一个人知道得越多,就知道自己不知道的越多,最近这几年工作的经历让我们深感如此。在工作中,我们不断的遇到新的问题和挑战,新的技术和方法也在不断的涌现出来。另外,除了自身团队的测试工作开展,本书的作者邱鹏在腾讯期间也有幸担任了全公司质量通道的评委,每年有两次机会接触大量优秀的测试人员和各种深入的测试技术实践。另外,还有和其他业界同行的交流也了解到很多,因此深知测试领域的博大精深。不过可能因为大家工作节奏都比较快,鲜有系统化来做分享的,所以本书也算是抛砖引玉,希望更多资深的业界同行可以把自己在一线的实战经验分享出来,共同推动国内的测试做得更加系统和深入,更加的有价值。也正是这样的想法激励着我们花费大量的工作业余时间,希望比较直接和鲜活的把我们在一线的实践分享出来。
本书阅读建议
对于移动App测试经验比较少的人,我们建议比较完整的阅读。而对于有一定经验的人,请随手翻到你感兴趣的章节,因为本书的很多内容都有一定的独立性。因为本书的很多内容都结合了具体的实例讲解,所以我们也建议大家在看到相关的章节也可以动手实践。
关于作者
这本书不是一个人独自写成的,是三位作者,邱鹏(Ricky),陈吉(Allen),潘晓明(Shawn)共同完成的,他们曾经在一个团队中长时间一起工作,对产品质量的持续提升和新的测试技术研究都一直怀有热情。其实除了三位作者,背后有好几十位业务测试、测试开发和质量管理的同事都贡献了具体的项目实践和很多好的建议。具体内容的分工如下:
Ricky规划了整本书的内容,并编写了接口自动化、Web前端性能测试、后台服务性能测试、兼容性测试、部分流量测试内容、部分电量测试内容、弱网络测试、App稳定性测试主要内容和接口Mock的部分内容,以及第1章,第6章,第7章,第8章,第9章。
Allen作为资深的Android测试开发专家,编写了其中主要的Android相关内容,包括Android UI自动化、Android内存测试和Webview性能、Android代码静态扫描、Android流量自动化部分、安卓ANR、安全测试、App环境相关测试、Android代码覆盖率、MockServer、Android AOP方法。
Shawn作为资深的iOS测试开发专家,编写了其中主要的iOS相关章节,包括iOS UI自动化、iOS内存和Webview性能分析、iOS代码静态扫描、iOS流量和电量的部分内容、iOS代码覆盖率,iOS AOP方法,以及持续集成中的iOS覆盖率案例。
分工协作是这本书得以完成的基础,不只是内容本身,也因为一个人无法承担繁忙的工作之余如此巨大的工作量,大家文字的编写还有案例都需要逐个实践。协作本身就是一种精神力量,也是愉快的经历。
致谢
以下是一些我们共同想感谢的人:
首先我们想感谢曾经一起努力工作的腾讯、易迅和京东的同事们,他们对我们的测试工作给了非常多的支持和建议,促进我们不断提高。
我们也想特别感谢我们的编辑,机械工业出版社的吴怡老师,她是推动这个写作计划变成现实的人,包括选题、内容的组织,以及细节的文字方面都给了我们很多的帮助,是她的鼓励和肯定让这本书得以完成。我们也想感谢在写作本书的过程中,那些得知我们在进行这个长跑并给予支持和鼓励的人。
以下是几位作者分别想感谢的人:
Ricky的致谢:
首先我想感谢腾讯的吴凯华(Jeremy)先生,是他带我进入互联网测试领域,并给予非常多的指导,另外他还抽出宝贵的时间为这本书作序。为了这篇序,他向我仔细了解了内容组织背后的考虑,并阅读了本书的绝大部分内容,这种认真负责的精神一直以来都非常的敬佩,使人见贤思齐。这篇序本身也融入了他对于软件测试和个人发展的深入思考,非常值得一读。也特别感谢李俊(Jasper)先生,另一位腾讯期间的老板,也是非常的卓越、认真和正直,从他那里得到很多关于做好事情带好团队的具体指导,至今受用。
感谢曾经在腾讯电商上海测试团队,以及京东无线测试部的每一位同事,这本书的内容是大家一起实践的一个小结,非常高兴能和大家一起共事,也为每个人取得的进步感到骄傲。
谨以此书,致以对曹计昌先生、Joe Chen、Yun Zhang、John Li、Jicheng Wang、Tao Qian、Allen Wang、Jeff Zhang、EnochHuangfu、Fei Zou、陈世宏、戴亦斌、付学宝、徐奇琛、彭晓虹、马弘烨、Scott Li、Step Tian、袁蓉蓉、党杰、朱永敏、幸锐、姚醒、王孝满、江川、盖美红、王宇、李松峰、陈保安、李伟奇、谭丁强、李大鹏、Nina Luo、Jessica、Shelly Hu、Victor Wan、Eddie
Liu、Rocken Meng、Frank Xia、Allen Fang、Lampard Chen、Haison Tang、Allan Zhou等老师和朋友的深深感激。限于篇幅无法一一列举,但内心中对于所以给予过支持、建议和批评的人们深怀感激。
也借这里感谢蚂蚁金服的新同事们,感谢给予我新的机会让我可以迎接新的挑战。这本书包含了之前一些工作内容的沉淀,希望可以在新的领域有更多新的收获。
最后我想感谢我的家人,感谢他们对于我工作的理解,这本书的写作在工作之外又额外占去了一些本该陪他们的时间。儿童节快到了,把这本书献给我的女儿甜甜。
Allen的致谢:
首先感谢Ricky在安卓专项测试工作中给予的支持和建议,此外感谢我的同事朱玮在安卓代码覆盖率工作中的前期探索工作。本书安卓部分的很多内容其实是源自前人的工作,加上我们自己的摸索和改进,总结出的一点经验。因此借此机会也感谢所有致力于安卓测试的先驱者们。向你们致敬!
Shawn的致谢:
我首先要感谢我的leader邱鹏,在工作中给予了我不少帮助,得益于他的指导,让我能够在工作中自由地发挥,也使我个人在快速地成长。其次要感谢唐辰、王孝满两位开发同事在工作中给予我的支持和帮助,深深地让我体会到测试工作的开展离不开开发同事和测试人员的紧密配合。最后要感谢所有在工作中给予我帮助的同事们,是你们的帮助让我在工作中如鱼得水。再次感谢!
最后,想说明的是,虽然这本书几乎每一个技术点我们都在实际项目中实践和应用过,但即便如此,因为被测项目的特性差异,以及我们个人技术和视野的局限,难免有很多不完善和偏颇,所以我们也非常希望听到读者的反馈,帮助我们完善。你可以把意见和反馈发到这个邮箱:[email protected],谢谢!
版权声明:本文为博主原创文章,未经博主允许不得转载。