1.2 关于虫子的故事
在熟悉了公司的结构、开发流程,参与了部门例会之后,小白要开始从事具体的软件测试工作了,对于他来说,这一领域陌生而令人兴奋。
在刚上班的一周内,小白不断地听到周围的测试工程师高兴得喊道:“又发现Bug了!”,看着他们那兴奋的样子,小白也有点跃跃欲试,想赶紧在捉虫的战场上大展身手。那么,什么是Bug呢,它为什么这么重要,发现Bug为什么这样兴奋?
1.2.1 虫子的来世今生
在本章的序幕部分,我们已经了解了很多由于软件代码的问题使得事情失败的案例了。它们有的后果真的很严重,甚至能够造成对生命的威胁。这肯定不是软件设计者和开发者想要达到的目标,因此,出现这样的情况可以说是软件的错误。
细细的分起来,软件的错误有如下几个词语来描述:
缺陷、偏差、错误、问题、事故、异常。在这一堆词语当中,除了偏差之外,其他的词语所造成的后果给人的感觉都相当严重。所谓偏差,就是软件在使用过程中,和软件设计说明(product specification)所不一致的行为。
那么为什么将这样的软件问题称为Bug呢?这里面还有一个故事。
【史上第一个软件Bug】
该词的原意是“臭虫”或“虫子”。1947年9月9日,正值计算机刚刚被发明的时候,哈佛大学的某个计算机实验室正在做实验。由于当时的原始计算机由很多庞大且昂贵的真空管组成,运行时会产生光和热,在下午15点45分的时候,一个飞蛾(英文是Moth)钻入了真空管内,导致整个计算机无法工作。当把这只小虫子从真空管中取出后,计算机又恢复正常。后来,虫子的泛称Bug这个名词就沿用下来,而那个被拍死的飞蛾也成为了历史上发现的第一个Bug。
【Bug渗透到日常生活中】
一般来说,拥有一定知识产权的产品的错误都能称之为Bug。这方面有一个我们比较熟悉的例子就是电影。影迷们经常议论某热门电影中出现了所谓的“穿帮”镜头,比如在描述古代武侠的影片中天空掠过一架飞机,主角刚才是右脸有伤痕,过一会变成左脸等。这样的镜头也可以说是Bug,甚至还有专门的网站来记录这些影迷的细心发现,比如http://www.chinabug.net。
1.2.2 软件Bug的5个要素
前文笼统解释了软件Bug是软件的错误或者偏差。那么在具体的工作中,小白如何判断软件的行为是Bug呢?说来简单,根据软件设计阶段形成的功能说明书,英文为Specification Document,一般简称Spec。对于具体的判断标准,经理介绍了如下5个要素:
软件没有实现说明书中所列出的功能。
软件出现了说明书中提到不应出现的事情。
软件实现了说明书中没有提到的功能。
软件没有实现说明书中没有提到但应该实现的功能。
软件非常难于学习、使用,运转速度很慢,用户认为无法达到预期。
为了充分理解上述5个要素,小白自己打开了Windows系统中最简单的一款软件Notepad,也就是我们平时“不屑于”用到的记事本程序,开始了自己的思考。
1.软件没有实现说明书中所列出的功能
对于“软件没有实现说明书中所列出的功能是Bug”这一点是比较好理解的。如果打开记事本软件,却无法在其中输入汉字,或者输入了文本,无法保存成文件,那么肯定是一个很重要的Bug。
2.软件出现了说明书中提到不应出现的事情
对于第2点,“软件出现了说明书中提到不应出现的事情也是Bug”,这一点和小白的性能测试工作有相对更紧密的关系。小白要测试的是公司的网站,它要求用户在浏览网站时显示页面尽可能地快,如果超出5秒钟则认为是不可接受的。这个“超出5秒钟”就是说明书中提到不应该出现的事情,实际出现后肯定是一个Bug,需要开发人员找出哪里耗费了页面显示时间。
在记事本程序中,如果程序保存文件时出现了程序崩溃(Crash)现象,即属于此类。