51Testing系列丛书:软件测试技术实战-设计、工具及管理

发表于:2017-7-07 08:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:顾翔    来源:51Testing软件测试网原创

分享:
  【前 言】
  软件测试是软件研发过程中的一个重要环节,作为一个独立的工作是在我国20世纪末和21世纪初逐渐形成的。随着软件行业的发展,至今已有一支十分庞大的专门从事软件测试工作的队伍活跃在软件企业中。
  我是国内最早一批从事软件测试的工程师,先后在北京炎黄新星互联网络有限公司(公司产品:中国家庭网和800buy电子商务网站)、中兴通讯(南京)有限公司、意法半导体(中国)有限公司(公司产品:数字电视机顶盒)以及爱立信(中国)通信有限公司等单位工作过。十几年来,软件测试从无到有,我经历了整个过程,所以对软件测试有比较深入的了解和体会,也积累了一些经验。我把在工作中遇到的一些问题和案例写成数十篇文章,在51Testing等各大网站上发表,得到广大软件开发和测试人员的认可和支持,遵照一些朋友的建议,我把网上的这些文章重新整理修改,并增加了一些新的内容,集结成一本书。在这本书中,我主要以案例为驱动,介绍软件测试工作中一些常用的方法、思路、遇到的问题以及解决这些问题的方法。
  1997年,我毕业于北京工业大学计算机学院软件工程专业,在学校里,软件测试仅仅作为《软件工程》的一个章节进行介绍。毕业后,我进入一家互联网公司从事网站的开发工作。当时软件测试在许多单位都不是一个独立的部门,软件测试一般都由开发人员自己来完成。由于没有专职的软件测试人员,所以软件的安全性、稳定性、可靠性等都很难得到保证。实际工作中遇到过不少案例,下面几个例子就可以得到证实。
  2000年我所在的公司与CCTV"开心辞典"栏目组合作开发网上答题的项目,这是一个智力娱乐性节目,我编写了前端的答题代码,考虑到可能有人用计算机程序来答题,如编写一个死循环,一直选择B(或A、C、D),这可以使答题的速度很快,命中率也非常高,为此,我选用JavaScript过滤了使用死循环的答题者。可是,到了"开心辞典"正式使用这个软件时,发现仍然有人使用死循环来答题,可我的程序是正确的。后来,在一次聊天模块中,通过登录账号我找到了这位"达人",他说我们前端的确没有漏洞,他是通过自己编写的程序绕过我们前端进入到系统后端的,而我们的后端并没有进行校验。当初如果有专业的测试人员,这个Bug是有可能避免的。
  众所周知,软件产品的安全性是很重要的问题,而软件测试是保证产品安全的关键所在。下面的例子说明如果没有做好软件测试,就可能造成严重的后果。有一次我所在的公司开发了一个产品,用户曾经投诉,采用我们公司的这个产品后,经常发现一些没有登录的用户也会进入系统,损毁了公司的形象,造成很大的损失。后来经过数个月的排查才发现,这是开发人员没有对SQL语句进行专门处理,由于SQL注入造成的。像这样的问题,如果在正式上线前,经过严格的测试,这个Bug是可以事先找到和解决的,这样就不会造成那么大的损失。当然,要能够测试出上面出现的Bug,是需要有一定工作经验的,只有具有丰富软件开发经验的人才能胜任,所以我一直强调从事软件测试工作前最好进行3年以上的软件开发工作。为此,在本书的有关章节中我将会进行详细阐述。
  本书还将介绍一些功能测试和性能测试相互依存的例子,这源于我在某家公司做BBS系统的测试工作,系统在前4个月运行一直非常好,可后来系统显示的速度明显降低了,原来几秒钟显示一个页面,现在变成要两分钟才能显示页面。以前好评如潮,现在投诉不断。经过查找,发现这是由于当时只做了功能测试,而没有进行规范的性能测试造成的。"重功能,轻性能",这是在软件测试工作中经常犯的一个毛病,值得引起重视。
  软件测试必须对相应的业务有所了解。记得我刚到意法半导体有限公司时,从事数字电视机顶盒测试工作。这是一种嵌入式软件产品,这种类型的测试工作往往比较复杂,因为这种软件在开发初期是看不见、摸不着的,只有到后期才可以在仿真器、模拟器,甚至移植到真机中才能测试,再加上我对数字电视业务知识的缺乏,在测试中不太容易发现Bug。记得在2005年12月31日,开发人员当天下午5点才把一份软件测试版本交给我们测试人员,为了交给客户作元旦的献礼,我们必须在当天下午6点半做完测试,时间紧迫,我们只能对一些最重要的功能进行测试,又加上我对业务不太熟悉,选择重点时没有把握好,产品交付给用户在2006年元旦使用时,开始系统运行得非常好,但一个多小时后,数字电视的音量达到最大,更糟的是,根本无法用遥控器来进行操控。后来究其原因是嵌入式软件的内存空间很小,而程序中存在着野指针,所以发生了内存溢出,导致音量失控。
  开发与测试之间经常是一对矛盾,这往往需要开发与测试之间进行有效沟通来解决。记得2008年上半年,我所在公司的产品进入一个开发的关键时期,开始大规模地招聘开发人员,公司40%多的开发人员都是新员工。这段时间,测试人员总能发现许多Bug,使得大部分开发人员要疲于修改这些Bug,根本没有时间去开发产品的新功能,这就导致开发人员对测试人员的意见很大,甚至有些开发人员认为测试人员是故意给他们找麻烦。当时我作为测试经理认识到测试人员与开发人员之间的矛盾必须解决,必须协调双方的关系,于是我一方面要求测试人员不但要能发现问题,还要逐步学会从Log日志中定位到问题,尽可能协助开发人员解决问题。同时我又主动和开发部门经理协商,要求开发人员在提交测试版本之前必须认真做好自测。之后,开发人员与测试人员之间关系得到改善,产品的质量也得到提高。
  由于新兴的敏捷开发模式便于在相对短的迭代周期内发布一个新版本,往往几个月就可以发表一个新的版本。这就给回归测试带来很大的挑战,也促使自动化测试得到不断发展。在回归测试中,自动化测试扮演了非常重要的角色,特别是后来采用持续集成(CI)技术,自动化测试的优势得到了更好体现。当然,自动化测试也不是万能的,由于自动化测试工具本身也是软件,它也会有Bug,特别是刚开发出的自动化测试脚本,用它验证产品代码,当发现一个测试用例没有通过时,就很难判定是产品的问题还是自动化测试脚本本身的问题。另外,随着需求的变更,自动化测试脚本的更新也要随时跟进。这会使得测试人员的大部分精力都集中在调试和维护自动化测试脚本上,而不能更好地做好测试分析与设计工作。自动化测试在软件基本功能验证以及性能测试等不能用手工方法来完成的测试工作中,取得了很好的效果。但是,在一些基于经验的测试方法,如"探索式测试""缺陷攻击法"中,大部分还是需要通过手工方法来实现。
  有了一定的测试经验如果没有理论的结合,也是不完美的。例如,进行兼容性测试时,组合的对象往往很多,穷举测试是不太可能的,随机抽样测试也不靠谱。根据一种叫"正交测试法"的测试理论,可以把测试用例减少很多。另外,它有统计学的理论作为保证,其测试的可靠性也得到提高。这说明,由于IT行业发展十分迅速,从事软件测试的工作者也要与时俱进,不断学习新的理论和方法。
  以上只是本书中的一小部分,我把十几年在软件测试中的实践、体会和思考总结成书,希望为读者打开一扇通往软件测试之路的大门,使读者寻找到解决测试问题的技术和方法,体验到测试工作中"逮"Bug犹如"寻宝"的乐趣。本书可供软件测试同仁借鉴。由于现在许多大学里,计算机专业都开设了软件测试课程,所以本书也可作为大专院校计算机软件专业学生的参考书。
  全书分为"设计""工具"和"管理"3篇,共14章,每个章节之间虽有一定的联系,但也可各自独立成章,读者可以根据自己的需求,按照书的内容顺序阅读,也可以根据自己的兴趣选取相关章节阅读。
  最后,感谢人民邮电出版社张涛先生及其编辑团队、51Testing编辑严代丽对本书的出版做出的辛勤劳动,没有你们的大力支持,出版本书的愿望是不可能实现的;感谢微信平台,它将我与全国的软件测试爱好者连接起来,共同分享软件测试给大家带来的喜怒哀乐,让大家能够利用这个平台分享软件测试的经验、思想和方法,进一步丰富本书的内容;在这里特别感谢杨艳艳、叶微、刘琛梅、赵明、刘莎莎、万巧、张晓丽、陈佳丽、詹露、张子繁、金鑫、冯昌、帅敏、沈晓静、赵院娇和蹇辉在出版后期对本书进行了仔细的校对。另外,我还要感谢我的家人特别感谢我的妻子及家人对我这次出书工作在精神、物质及生活上的支持。祝愿软件测试行业能够在中国得到更好发展,有更多的测试专家能够在中国出现。本书的全部附录、代码以及探索式测试课程均可扫描下面的二维码从网站上下载本书的全部附录部分可扫描下面的条形码从网站上下载。
  【书 评】
  本书是由国内具有丰富测试经验的作者写作的关于软件测试实践的书,全书内容丰富,结构清晰,涵盖测试设计、测试工具与测试管理3部分内容。全书内容强调测试实践,既有测试基本知识的介绍,也有测试应用的案例分析;既可以作为测试初学者入门用书,也可以供测试职业人士参考。
  --中国软件测试认证委员会(CSTQB)专家组成员  崔启亮
  本书作者顾翔老师有着多年的培训经验,这本书是他多年传道、授业、解惑的总结,内容全面、精彩,可为软件测试工作人员提供专业的指导。
  --中国赛宝(华东)实验室  陈锃基
  从我十多年的软件测试行业从业经验来看,大部分软件测试人员缺乏对被测对象所涉及的IT技术的深入理解,例如对代码、中间件、数据库、虚拟化、云计算、大数据的理解,缺乏这些技术上的理解,表面上看起来不会对测试工作造成很大的影响,其实却会导致测试的不周全、不深入;顾翔老师知识面广,测试经验丰富,在编写本书时不仅全面透彻地讲解了软件测试本身的知识,还用通俗易懂的语言介绍了各类相关技术,测试初学者们可以全面学习并从中受益。
  --广州亿能测试技术服务有限公司CEO  陈能技
  本书作者经过长期的工作实践,结合国内测试现状,精心构思了测试的知识体系。书中将测试设计提升到很关键的高度,用好的测试设计指导测试工具在测试执行中的使用;用测试管理的精髓,引导测试工作的有序开展,为广大测试工程师的学习提供了必备的参考。
  --科大讯飞  CTO助理   测试部经理  吴如伟
  本书的特色在于将大量的技术赋予了实际的应用场景,让读者能够更加清晰地把握如何将测试技术应用于具体实践的同时,为测试团队实施相关技术方案带来信心。本书的技术内容和流程方法倾注了作者多年的从业经验,读者可以基于该书的内容为模板,迅速展开合理、规范和有序的测试工作。书中所讲述的测试技术都是作者精心选取的主流技术,体现了作者丰富的行业经验和对新技术发展方向敏锐的洞察力,初级以及资深的读者均可受益于本书的精彩内容。
  --星云测试CEO  赵明
  本书是一本非常全面的软件测试实践参考书。它不仅知识体系完整,作者也结合自己多年的测试实战经验,分享了大量非常有参考价值的实战案例。它不只是一本专业软件测试人员需要学习的参考书,对于做敏捷开发的每一个团队成员来说,都需要认真学习本书当中的测试基础知识、测试设计和管理的思路、实践和工具。
  --Scrum中文网和Leangoo看板创始人  廖靖斌
  【序】
  我与顾翔先生是同学,因此结缘,有幸成为《软件测试技术实战-设计、工具及管理》一书最早的读者之一。一般说来,阅读专业性、技术性强的著作是枯燥、单调和乏味的,但从作者手中拿到书稿,我却是一气呵成,几乎是没有中断读完的。
  我国的软件产业发展实现了伟大的跨越,取得了辉煌的业绩。2000年,我国软件产业的规模只有590多亿元,2016年这一数字达到了惊人的4.3万亿元。这是3.8万家软件和信息技术服务企业、近600万软件从业人员努力奋斗的结果。其中也汇集了本书作者为代表的一批软件测试工程师群体的默默奉献。
  在软件大发展的时代,软件的稳定、安全和可靠性尤为关键,软件测试的重要性尤为凸显。然而长期以来却鲜有系统、全面分析、研究软件测试理论技术和方法的专著问世,根植于软件测试实践而又高于实践,具有实战性、可操作性的图书更少。本书的出版发行,不可多得,正当其时。
  作者1997年大学毕业后投身于软件开发、测试专业之中,20年从未间断。他不仅见证了我国软件产业波澜壮阔的发展历程,而且深深地参与其中,完成了从幼稚到成熟、从青年到中年、从最底层的软件开发和测试者到软件测试的组织管理者、教学培训导师的转变和升华。作者将20年从业的实践经验、理论思考集成于一书,形成了本书许多亮点和特色:专业性,系统、全面研究分析了软件测试的理论、方法、技术;权威性,作者虽然不是专家、名人,但我认为"因为专业而权威";系统性,源于其本人的亲自实践、亲身经历和体验;可读性,注重以实际案例为驱动,娓娓道来,不少章节都颇为"抓人";实用性,既可作为软件测试的教材,也可作为软件开发、测试人员的实用手册。
  综上所述,我愿为本书鼓与呼,推荐给广大读者学习。
  --中国信息化周报  社长  宋波

51Testing软件测试网将在近期对本书部分章节进行独家连载,敬请关注

查看更多《51Testing软件测试网作品系列》书籍:http://www.51testing.com/html/36/category-catid-136.html

32/3<123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号