第1章 朝阳中的软件测试
欢迎阅读本书的第1章,本章将以对软测行业有特别影响的专业书籍及网络资源的变化为背景,介绍十多年来测试行业的快速发展及软测工作是做什么的,其核心又是什么。随着信息产业的蓬勃发展,如今软件已渗透到我们工作、生活的方方面面,软件到处都是,它不可能完美无缺,Bug无处不有。由于软件漏洞或缺陷而引发的事故经常发生,软件测试这个把握软件质量最后一个关卡的工作日益受到业界的重视,测试行业也由此风生水起,已展现出朝阳行业的端倪。如何把握测试工作,在测试行业中赢得一席之地,本章后两节分享了如何把握各阶段测试工作的一些见解,同时也浓缩地介绍了测试基础知识的精华,以期对初学者能指点迷津。
1.1 关于软件测试
朝阳冉冉升起,万物生光辉,好一幅灿烂的朝阳图景,令人神往。你可知道,国内的软测行业正如图1-1中的朝阳一样,朝着美好前景蓬勃发展……
图1-1 冉冉升起的朝阳
1.1.1 书中一角到书山一角的跨越
1997年的早春,笔者加入了X公司的软件研发部,当时,在软件测试是做什么的都还搞不懂,却被老板安排到测试员的岗位。虽然在大学里学过张海藩的《软件工程》,但记得软件测试只是其中的一个章节[如图1-2(左)所示],对其中的细节也不是特别有印象。为了把工作做好,我第一天工作结束后便到书店查找关于这方面的书。找遍了书店根本没有这方面的书,问问其他同学、朋友,也基本上没人知道软件测试到底是做什么的。
十多年过去了,如今到任意一个相对有一定规模的科技书店,带着“软件测试”这个关键词,一定能找到一系列的软件测试类图书,如图1-2(右)所示。软件测试只是软件工程书中一角的现象再也不会回来了,软测知识体系的形成已有了质的跨越。
图1-2 软测知识体系的跨越
但是,我们国内的软件测试行业,还处于初步发展阶段。由美国Glenford J.Myers等著的在业界鼎鼎有名的《软件测试的艺术》一书,其第一版早在1979年就出版了,而那时我们国家的计算机发展还处于实验室的研究阶段。换句话说,早在30年前,国外一些专家的认识就已经很深刻了,积累了丰富的实战经验,各方面技术配套、应用齐全,走在专业技术发展的前沿。从另一个角度看,我们国内的软测行业要走的路还很长,目前我们已从十多年前的萌芽阶段过渡到了初步发展阶段,特别是近年来随着软件产业的发展,已到了软件测试不往前发展都很难的境况。
1.1.2 捉虫子与挖金矿
有一种职业,它以捉虫子为主要目的,但并不是捉动物身上的寄生虫,也不是捉植物身上的虱虫,而是专捉隐藏于软件中的臭虫,这便是软件测试。对于软件测试的工作,著名软件测试专家、清华大学教授郑人杰说:“软件测试工作是对质量的把关,其中包含技术及管理等方面的工作,工作相对稳定,对年龄没有限制,而且随着项目经验的不断增长和对行业背景的深入了解,这种人会越老越吃香。”
如今在互联网上,输入“软件测试工程师职业发展”的关键词,用百度或谷歌搜索一下,会看到“国家紧缺IT人才”、“软件测试人才缺口30万”、“软件测试黄金职业”,等等,尽是吸引人眼球的强有力的词汇。受国际金融海啸的影响,2008年国内外很多大公司利润大幅度下滑,华尔街不断传来让人难以置信的消息,雷曼兄弟投资银行宣布破产,花旗、通用、IBM、微软这些跨国巨头公司纷纷裁员,以缩减开支,类似的负面网络新闻像雪片般漫天飞舞。然而就在金融海啸席卷全球每一角落的环境下,国内的软测行业却独树一帜,招聘需求依然灿烂有加。
一方面是人才的紧缺,另一方面是企业用人的急需。市场上的资源供不应求,且存在较大的缺口,一个合格的软件测试工程师难求,更何况一个资深的将领级人才。软件测试人才俨然成了职场的香饽饽,很多公司亮出年薪10万、20万元仍招不到合适的人,正可谓求贤若渴,也成为网上活跃的新闻,这也说明了软测行业不往前发展都很难。软测职业,已成为职场的新宠。
有道是“风景这边独好!”近年来,网上进行的悬赏捉虫活动越来越多,常常一上网,就跳出某某企业邀请你参加有奖捉虫活动的消息,如图1-3所示的内容就是其中之一。
图1-3 公开悬赏寻找Bug海报图
捉一条虫子奖几百元、几千元不等,多劳多得,软测工作犹如挖金子的行当。金子真有那么容易挖吗?这使笔者想起了大家都熟悉的黄金矿工网络游戏,如图1-4所示。
图1-4 黄金矿工游戏
矿中的金子,有大金子、小金子,它们的含金量是不同的,还有钻石,级别就更高了。游戏者要挖到不同含金量的金子,挣到更多的钱,顺利闯关,是需要考虑不同的攻关策略的。例如,挖到石头尽快炸掉,以赢得时间,一轮完毕可用少量的金币购买幸运草、大力水、石头收藏夹等工具,使它们在接下来的攻关中能助一臂之力。黄金矿工双人版,是双人游戏,犹如团队的工作,相互之间密切配合很重要。比如钻石的含金量是比较多的,但它通常藏于乱石之中,在有限的时间内,仅靠一个人的力量来完成挖钻石的工作是不太可能的,这时两人可以先合力把石头挖掉,再由一人挖钻石。这是一种更快地获得钻石的方法或策略设计,也叫计谋。同样的道理,以捉虫为核心目的的软件测试工作,如果设计得好,可使你捉到大虫(严重以上的Bug)、罕虫(极端条件下发生的Bug),让你在软件测试中大显身手,成为捉虫高手。
如图1-5所示,软件中存在不同类别的Bug,它们隐藏得越深越难以发现。
图1-5 Bug的分布深度与发现的难易程度关系示意图