《软件测试之捉虫记-大容量应用性能测试与实战 .docx》由会员分享,可在线阅读,更多相关《软件测试之捉虫记-大容量应用性能测试与实战 .docx(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品名师归纳总结第1章 什么是软件测试由 安 博 测 试 空 间 技 术 中 心:/btestingsky/供应在我国宋代,有一位叫宋慈的法医学家写了一本洗冤集录。在书中,他叙述了许多断案的体会,其中有一个用银针验毒的方法至今仍广为流传。比方在许多电视剧中,我们能常常看到皇帝在进膳的时候,由于可怕被人暗害,总要让可怜的太监或者宫女先用银筷子尝上几口饭菜,没有显现问题再正式用餐。这种用银针进行的试验就可以说是一种测试的雏形吧,银针充当了测试工具,而太监或者宫女就是古代的测试工程师。时间飞逝。随着科技的进展,我们生活四周有了越来越多的产品,它们在出厂销售前都要进行测试,不仅要保证功能完好,仍要确保
2、对使用者的损害在答应范畴内。因此在工厂里,逐步显现了这样一个部门,由它来负责检验产品,被称之为质量检验或者质量保 证部。上个世纪中后期,软件显现了,它作为人们日常生活中每天都会使用的产品,同样也需要质量的保证。有一种误会:软件的质量问题并不那么重要,比方Windows等操作系统,各种桌面的应用软件,像IE 浏览器,假如它显现了问题,程序会失去响应甚至严峻的系统会蓝屏,那么只需要在任务治理器中将它删掉就可以了,最多重新启动电脑,一般都能够连续使用。这只是一方面,另一方面,有许多特别重要的软件在我们看不见的的方悄悄的运行着,假如它们显现了问题,影响就很大了。为了说明软件质量的重要性,这里举一个比较
3、闻名的软件质量造成的事故。1962 年,美国的航海家1 号 Mariner 1 火箭升空,由于掌握火箭的软件显现问题,直接导致火箭升空后因偏离轨道而被迫引爆,造成当时 1800 万美元的缺失。 事后查明, 是程序员在编写软件代码时,误写了其中一个公式的上标造成轨道运算失误的。可编辑资料 - - - 欢迎下载精品名师归纳总结因此, 软件公司也需要质量保证部门。我们把该部门的组成人员称为QA 工程师, QA即 Quality Assurance 质量保证的简称。软件是否符合质量是通过测试来验证的,因此他们也被称为软件测试工程师。在本书中您即将遇到的各种行为,绝大多数都将是软件测试工 程师在工作中所
4、要实现和完成的。1.1 软件开发的基本学问对于每一位进入软件测试行业的新人来讲,公司的入职培训是一个很好的学习时机。1.1.1 软件开发公司技术部门的基本结构可将软件测试部门类比于工厂车间的质量保证部门,那么显而易见,假如在工厂中要做好质量掌握的工作,必需熟识本厂生产的产品和流程。换句话来说,作为软件生产的参与者,明白被测试的软件也是特别重要的一件事情。这也正是经理要求小白在短期内尽快熟识的内容。【什么是软件】中国大百科全书中对软件的定义是:软件是电脑系统中的程序和相关文件或文档的总称。软件是从英文 Software 翻译过来的名词,与硬件 Hardware 相对应。因此,软件开发公司就是制造
5、这些程序和相关文件或文档的商业机构。一般来说,软件开发公司的技术部门由几个子部门或者角色组成:开发部门、测试部门、部门经理或者项目经理,另外有的公司仍有技术支持部门。对应于传统行业,分别相当于生产车间,质量掌握部门,部门经理和售后服务部门。如表 1-1 列出了常见软件开发公司技术部门的不同职责。表 1-1 常见软件开发公司技术部门的角色分类部门职责软件开发部门开发软件:确定软件实现方法,编写软件程序代码测试软件:确定测试方法,编写自动测试软件的代码,手工测试软件,记录并跟可编辑资料 - - - 欢迎下载精品名师归纳总结软件测试部门技 术总 监 或项 目经理踪软件 Bug在所属或其他部门之间沟通
6、,和谐项目或者开发测试进度,为成员供应各种资源可编辑资料 - - - 欢迎下载精品名师归纳总结技术支持部门软件开发完成后在客户处部署产品,并解决与反馈使用中显现的问题Web 应用是一种特殊的软件。那么开发Web 应用的网站与一般的软件开发公司有什么不同了?对于小白所处的商业网站来说,网站程序和相关文件或文档也可以称之为软件,其技术部门的结构也和软件开发公司基本类似,但是各部门日常工作的方式就有所不同。商业网站每天都要有许多页面的更新,每次更新后当时浏览网站的人立刻可以看 到。而软件开发公司一般一年或者几年推出一个产品,在产品没有上市的时间内, 用户只能使用旧的版本。也就是说网站软件的变化要比软
7、件开发公司频繁,网站可编辑资料 - - - 欢迎下载精品名师归纳总结软件的开发与用户使用处于同一时间段内。商业网站以服务器为核心,网站软件主要运行在服务器上。而软件开发公司的产品主要运行在用户的电脑上。【演唱会与专辑】商业网站与软件开发公司的运作模式有点类似于歌手开演唱会和发专辑的区分。在演唱会上,歌手与观众的互动性更强,每一个细节的变化也都能被观众捕获到。而歌手专辑就相当于软件产品的某个版本,是提前制作完成之后再上市销售的。1.1.2 软件危机小白在熟识了技术部门的大致结构,网站与软件开发公司的区分之后,经理开头介绍和软件测试相关的背景学问。软件危机就是产生软件测试这一职业的重要推动力之一。
8、从 20 世纪 50 岁月以来,软件的规模越来越大,复杂性也越来越高,另外,在20 世纪 80 岁月, 相伴着电脑的普及和应用需求的飞速增长,互联网开头蓬勃兴起。 现在, 现代人的生活已经越来越依靠各种各样的软件,软件不再是高校试验室里科学家的工具,而成为我们生活的一部分。从操作系统,比方每一台个人电脑所安装的Windows XP 或者 Vista 系统, 到小小的桌面程序一个简洁的连连看小嬉戏,再到 Google 网站上可以编辑的在线文档工具, 软件的开发、 治理、 保护的复杂性和高成本现象也日益突出,在某一段时期, 暴露了许多问题。因此在20 世纪,有人提出了“软件危机”的说法,来说明这种
9、现象。【软件复杂性的类比】其实我们中国人是很简洁懂得软件复杂性的。一些在人口少的国家不成为问题的问题,放在十几亿人口的环境中,就会产生不大不小的麻烦,比方每年的春运需要火车票的人是如此之多,而火车的座位是固定数量的。需要回家的人的分布是如此之广,而火车站的位置也是固定的。依此类比,当软件的代码量越来越巨大,要满意的需求越来越广泛时,显现局部的危机是很简洁懂得的。1.1.3 软件危机的几个表达随着软件越来越复杂,质量越来越难于掌握,于是显现了所谓“软件危机”。具体而言,软件危机有以下几个表达。软件需求的增长无法快速得到满意。这一点在前文已经有所叙述。软件生产成本变高,价格越来越昂贵。软件的代码量
10、增加,所投入的人工成本, 也就是软件开发相关人员的成本也会增加,仍要增加采纳各种新技术的成本等。软件生产进度难于掌握。软件的用户需求不简洁定义。这一点也很重要:目前绝大多数的软件已经不止满意单一的需求,因此用户真正所需要的不肯定能够完善的实现。软件质量不简洁保证。这一点也是由软件复杂度的增加而增加。仍是举春运的例子,假如火车上人人都有座位,那么每个人的心情都会很好。但假如处处挤满了人,每位旅客回家的心情总会受到影响,从而影响对列车服务的评判。软件质量和用户的评判同样是相关的:常常造成死机、反常退出或者按钮单击后没有反应可编辑资料 - - - 欢迎下载精品名师归纳总结的软件,很难说是质量好的软件
11、。软件可保护性变差。软件同样是需要保护的:一方面是对于用户使用过程中的维 护,这一功能由客户服务或者技术支持部门来完成。另一方面是对于软件本身代 码和文件文档的保护,这一功能由开发部门或者测试部门来完成。随着软件的日 益巨大,软件本身经受的修改越来越多,治理保护软件的各种版本变得日益困难。由于软件危机有这么多的影响和危害,所以促使人们静下心来争论软件开发过程中的规律,这就产生了软件生命周期的概念。1.1.4 软件生命周期软件生命周期,英文为 Software Lifecycle ,就是软件开发、使用和消亡的过程,具体而言,包含软件需求分析、软件设计、软件实现与测试和软件发布、部署与保护这4 个
12、过程。在商业软件开发公司内部,人们往往遵循肯定的软件生命周期模型,这样和被开发软件相关的全部人员都依据这个模型的标准或者步骤开展工作,统一行动,有助于提高生产效率,从而削减沟通和实施的成本,获得更大的商业利益。而对于软件生命周期的不同懂得和划分,就形成了不同的软件生命周期模型。1.1.5 常见的软件生命周期模型目前来讲,主要的软件生命周期模型有如下几种。Big-Bang :大爆炸模型。Waterfall :瀑布模型。Spiral:螺旋模型。Code and Fix:边做边改模型。由于本书并不是以软件工程为探讨内容,因此在这里只通过人们过河的类比来简洁介绍一下前述这几种软件生命周期模型的特点。学
13、校课本里有个寓言叫做“小马过河”,小马在过河前遇到了不同的小动物,它们对于河水深度的懂得是不同的,会导致小马过河时的不同挑选,参见图1-1。假设把待开发的软件产品比如为小马面前横着的那条小河,那么开发软件的过程也就是过河的过程,那么如何过河就会有不同的结果。可编辑资料 - - - 欢迎下载精品名师归纳总结图 1-1小马过河:对河深度的懂得影响过河的方法1.1.6 直接冲过河去的大爆炸模型大爆炸这个名称来自于天体物理有关宇宙形成方式的一种理论:宇宙是在亿万年前的大爆炸中产生的。与此类似,软件开发公司把金钱、办公场的和人员全部投入到一个产品的开发当中,经过一段时间,产品出炉,这样的形式就是大爆炸模
14、型。大爆炸模型的优点就是简洁,没有许多的软件设计,对项目的治理也很少,目前不少小公司由于各方面的限制不得已或者不自觉的采纳了这样的开发模型。但是它的优点也造成了它的缺点:开发出来的软件质量不行掌握。在这样的模型中,由于没有周密的方案,软件测试往往是在产品即将上市的前夕才开头,在许多公司中甚至没有专职的测试工程师,由开发人员或者其他人员代劳,因此测试人员面对的产品与客户、使用者要面对的产品基本一样。从前文所述可以得知,在这样的阶段发觉 Bug,返工修改代码的代价是特别大的。回到过河的比如中来,大爆炸模型就相当于小马先退后几步,集中精力和能量,然后快速冲过去。这样的结果取决于河的宽度和深度。假如软
15、件特别复杂,很可能过河的小马半途就淹死了,无法到达对岸。1.1.7 摸着石头过河的边做边改模型边做边改模型比起大爆炸模型来说进了一步。在开发软件产品的开头阶段,先有一个大致的设计,然后开头编码,测试,发觉Bug ,修改 Bug 这样的循环,直到整个产品的轮廓日渐清晰,最终完成产品。用一句俗语来描述,就是“摸着石头过河”的过程:先以河里的一些石头为支点,走入河道,再经过不断的摸索和返回得到一条路线,最终到达目的的。可编辑资料 - - - 欢迎下载精品名师归纳总结由此可见, 边做边改模型中测试的参与要比大爆炸模型中要早得多,而且也重要得多。边做边改模型的优点就是适用于某些中小型项目的快速开发,软件
16、产品的成果也会在最早的阶段显现出来:和在岸边冥思苦想如何过河的人相比,先站在河道里的石头上,总是让人看到更多的期望。【边做边改模型被较多采纳】这种开发模型被大多数公司所采纳,是大多数测试工程师在实际工作中最常遇到的开发模型之一。而且,它和最近几年很流行的灵敏开发也有肯定的关系。1.1.8 制定周密过河方案的瀑布模型从现在开头,下面的这两个模型就不适合小马了,只有人和外星人才有这样的才能。如图 1-2 介绍了软件开发的瀑布模型,由于图中的箭头好像瀑布的水流,从上至下,因此得名。回到过河的例子中来,瀑布模型过河具备如下特点:可编辑资料 - - - 欢迎下载精品名师归纳总结过河前,第一花费大部分的时
17、间对河进行具体的勘察,挑选合适的下水点,挑选合适的过河工具,制定具体的分步骤过河方案。一旦过河方案制定,将不会大更换,开头过河。在河中完全依据方案进行,无法返回起点。这也是为什么称此模型为瀑布的缘由,瀑布是飞流直下三千尺, 想从下面返回瀑布的顶端,何其难。图 1-2瀑布模型示意图可编辑资料 - - - 欢迎下载精品名师归纳总结在每步骤即将完成时,都会对这一步骤进行总结,假如进行下一步骤的条件不具备,将停留在原的,等待条件具备。瀑布模型看起来给人很专业的感觉,所以,对于软件开发人员有比较高的要求。要对待开发的软件或者要过的河有细致、全面、精确的明白。假如懂得错误, 将导致方案失败,没有返回重来的
18、时机。职业素养、职业纪律要比较高。软件开发人员要具备坚决执行方案的才能。这种要求也就产生了瀑布模型的缺点,那就是无法完善适应当今要求快速开发产品, 从而占据市场的软件行业现状。由于制定具体的、懂得完整的方案很难,聚合许多专业的开发人员有时候也很难,而市场对于软件更新换代的要求期限越来越短。为了适应变化, 人们又提出了螺旋模型。1.1.9 方案赶得上变化的螺旋模型前文提到,为了适应方案和变化两方面的因素,螺旋模型被提出。螺旋模型的示意如图 1-3 所示。可以看到,它的确很类似一个螺旋。可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载精品名师归纳总结与边做边改模型类
19、似,螺旋模型也具有循序渐进的特点,对软件最终实现什么不肯定有完全确定的懂得, 而是摸着石头先下水。但是在挑选过河的每一个石头前经过了周密的方案和考虑,从这一点看,又类似瀑布模型。可见,螺旋模型实际上是边做边改模型和瀑布模型的有机结合。螺旋模型有如下 4 个步骤。1 确定项目目标、可用资源、各种实现的方法, 项目的各个阶段。2 在某个阶段中,确认、解决当前阶段项目进展中显现的风险。3 评估各种方法,开发、测试代码,实现当前阶段的目标。图 1-3螺旋模型示意图可编辑资料 - - - 欢迎下载精品名师归纳总结4总结当前阶段,方案下阶段的目标和实现方法,重复第2步。在图 1-3 中螺旋线被两条直线划分
20、成4 个部分,分别是上述的4 个步骤。在每一步骤中由于被直线切割会有多段曲线,每一段曲线就代表了在不同阶段中所进行的相同某个步骤。【螺旋模型的优点】由此可见,螺旋模型是多次方案,边做边改,这样既保证了软件开发任务的清晰,也降低了开头一次方案,由于懂得不完整或者市场变化后导致项目失败的可能性。1.1.10 4 种模型的总结前文叙述了 4 种软件开发模型,那么在具体项目开发中实行哪一种最好了?答案是它们各有利弊,需要敏捷采纳。这几种开发流程的优缺点比较如表1-2 所示。表 1-24 种软件开发流程的优缺点开发流程分类优点缺点大爆炸模型简洁,不用学习就会拍脑门的想法,产品质量无法保证。尽量防止使用方
21、案有些缺乏,导致版本前后变化较大。可挑选的可编辑资料 - - - 欢迎下载精品名师归纳总结边做边改模型快速得到可运行的版本瀑布模型方案周密,专业,按部就班实现模型之一相对难于做到快速开发, 以抢占市场。可挑选的模型之一可编辑资料 - - - 欢迎下载精品名师归纳总结螺旋模型方案变化同时考虑可挑选的模型之一当然,在几十年的软件开发过程中,人们仍提出了许多其他的开发模型,不过,作为测试工程师,我们对这几种主流模型有所明白就可以了。进一步深化的内容并不是本书所叙述的范畴,读者可以参看软件工程的相关书籍。可编辑资料 - - - 欢迎下载精品名师归纳总结1.1.11 软件开发的几个阶段不管采纳哪一种开发
22、模型,依据时间次序,全部的软件开发项目都要经受如下4 个阶段。1项目启动阶段:明白客户需求、配置相关资源。2项目设计阶段:明确客户需求,确立软件开发、测试的方法。3项目执行阶段:开发与测试阶段。4项目竣工阶段:软件的上市、后期保护与技术支持。这一分类很好懂得,下面再结合小白的工作场景,进行绽开介绍。1项目启动阶段。这一阶段一般技术人员参与较少,主要是市场部门,销售部门,技术总监、 项目经理等角色的参与:项目成本是多大, 开发人员有多少, 测试人员有多少, 完成时间在什么时候等。2项目设计阶段。这一阶段主要参与者就是需求分析人员、开发人员、项目经理和小白这样的测试人员了。主要目的是确定软件该如何
23、做,做什么:开发人员利用何种技术开发,测试工程师该如何测试该软件,客户如何使用该软件等。这些问题都要确定,形成各自的开发文档、测试文档和需求文档等。3项目执行阶段。开发、测试以及对其的治理就是执行,这一阶段的参与者是开发人员、测试人员和项目经理。开发人员编写程序代码,进行单元测试。测试人员编写测试代码、测试用例,进行功能测试等多种测试。项目经理掌握进度,和谐各种资源,与设计人员沟通等。4项目竣工阶段。当项目执行完毕的时候,依旧要进行部署、软件光盘生产、客户支持、升级补丁包开发和测试等多项工作。这阶段主要的参与者是项目经理,少量的开发人员和测试人员,售后技术支持人员、客户服务人员等。1.1.12
24、 软件发布的方式依据目前的软件发布方式,一般有 RTM Ready To Market ,市场发布 、RTWReady To Web ,在网络上发布、 RTO Ready To Operation ,可以运营等多种方式。RTM 方式需要在工厂进行光盘的复制生产,用户购买光盘后安装。大部分的操作系统和应用软件采纳这种方式的比较多。RTW 方式需要在网络上供应下载链接,一般的软件升级包或者嬉戏软件采纳这种方式的比较多。RTO 方式就很简洁,在服务器上部署软件产品,用户购买其中的某项或者多项服务即可,这是大部分网站或者在线嬉戏采纳的方式。1.1.13 项目治理与甘特图前面提到软件项目的流程很重要,那
25、么这种流程的掌握一般是由项目经理来完成的, 他或者她所从事的这个工作叫做项目治理。可编辑资料 - - - 欢迎下载精品名师归纳总结小白所在的技术部门一般一周都要开一个例会,在会上,开发部门、测试部门和项目经理都要对上一周各自所做的工作进行一番总结,支配下周将要做的工作。在这样的例会上,同事们常常会查看项目的进度图来进行讲解,他们把这样的进度图称为甘特图Chart。Gantt如图 1-4 显示的是软件开发过程中常用的项目治理工具MicrosoftOfficeProject 软件在这里是 2003 版本, 最新为 2007 版本 运行的界面, 在其中我们可以清晰的看到软件生命周期中的各个子任务的时
26、间安排,负责人员和项目进度的甘特图。图 1-4Project 2003 中的甘特图【甘特图的来历】甘特图的名称由创造者亨利劳伦斯甘特Henry Laurence Gantt ,1861 1919而来。甘特早年从事的是电气工程师的职业,后来转而从事治理业界的询问。甘特图是他在晚年创造的一种用于显示项目方案和进度的图表。在产生的初期, 甘特图就被誉为20 世纪20 岁月的最重要创造之一,广泛应用于一系列的大工程之中。比方1931 年前后修建的美国胡佛水坝 假如你看过 2007 年的热门电影 变形金刚 ,那么对关押威震天的那个水坝应当有印象,它就是胡佛水坝。在软件开发领域,许多公司也应用甘特图这一工
27、具来进行项目治理,比方闻名的微软公司。1.2 关于虫子的故事在熟识了公司的结构、开发流程,参与了部门例会之后,小白要开头从事具体的软件测试工作了,对于他来说,这一领域生疏而令人兴奋。在刚上班的一周内, 小白不断的听到四周的测试工程师兴奋得喊道:“ 又发觉 Bug 了!”, 看着他们那兴奋的样子,小白也有点跃跃欲试,想赶忙在捉虫的战场上大展身手。那么,什么是 Bug 了,它为什么这么重要,发觉Bug 为什么这样兴奋?可编辑资料 - - - 欢迎下载精品名师归纳总结1.2.1 虫子的来世今生在本章的序幕部分,我们已经明白了许多由于软件代码的问题使得事情失败的案例了。它们有的后果真的很严峻,甚至能够
28、造成对生命的威逼。这确定不是软件设计者和开发者想要到达的目标,因此,显现这样的情形可以说是软件的错误。细细的分起来,软件的错误有如下几个词语来描述:缺陷、偏差、错误、问题、事故、反常。在这一堆词语当中,除了偏差之外,其他的词语所造成的后果给人的感觉都相当严峻。所谓偏差,就是软件在使用过程中,和软件设计说明 product specification 所不一样的行为。那么为什么将这样的软件问题称为 Bug 了?这里面仍有一个故事。【史上第一个软件 Bug 】该词的原意是“臭虫”或“虫子”。 1947 年 9 月 9 日,正值电脑刚刚被创造的时候, 哈佛高校的某个电脑试验室正在做试验。由于当时的原
29、始电脑由许多巨大且昂贵的真空管组成,运行时会产生光和热,在下午15 点 45 分的时候,一个飞蛾英文是Moth 钻入了真空管内, 导致整个电脑无法工作。当把这只小虫子从真空管中取出后,电脑又复原正常。后来,虫子的泛称 Bug 这个名词就沿用下来,而那个被拍死的飞蛾也成为了历史上发觉的第一个 Bug。【Bug 渗透到日常生活中】一般来说,拥有肯定学问产权的产品的错误都能称之为Bug。这方面有一个我们比较熟识的例子就是电影。影迷们常常谈论某热门电影中显现了所谓的“穿帮”镜头,比方在描述古代武侠的影片中天空拂过一架飞机,主角刚刚是右脸有伤痕,过一会变成左脸等。这样的镜头也可以说是Bug,甚至仍有特的
30、的网站来记录这些影迷的细心发觉,比方:/ 。1.2.2 软件 Bug 的 5 个要素前文笼统说明白软件Bug 是软件的错误或者偏差。那么在具体的工作中,小白如何判定软件的行为是Bug 了?说来简洁,依据软件设计阶段形成的功能说明书,英文为Specification Document ,一般简称 Spec。对于具体的判定标准, 经理介绍了如下 5 个要素: 软件没有实现说明书中所列出的功能。软件显现了说明书中提到不应显现的事情。软件实现了说明书中没有提到的功能。软件没有实现说明书中没有提到但应当实现的功能。软件特别难于学习、使用,运转速度很慢,用户认为无法到达预期。为了充分懂得上述5 个要素,小
31、白自己打开了Windows系统中最简洁的一款软件Notepad,也就是我们平常“不屑于”用到的记事本程序,开头了自己的摸索。1软件没有实现说明书中所列出的功能对于“软件没有实现说明书中所列出的功能是Bug”这一点是比较好懂得的。假如打可编辑资料 - - - 欢迎下载精品名师归纳总结开记事本软件,却无法在其中输入汉字,或者输入了文本,无法储存成文件,那么确定是一个很重要的 Bug。2软件显现了说明书中提到不应显现的事情对于第 2 点,“软件显现了说明书中提到不应显现的事情也是Bug ”,这一点和小白的性能测试工作有相对更紧密的关系。小白要测试的是公司的网站,它要求用户在浏览网站时显示页面尽可能的
32、快,假如超出5 秒钟就认为是不行接受的。这个“超出5 秒钟”就是说明书中提到不应当显现的事情,实际显现后确定是一个Bug,需要开发人员找出哪里 消耗了页面显示时间。在记事本程序中,假如程序储存文件时显现了程序崩溃Crash现象,即属于此类。3软件实现了说明书中没有提到的功能软件实现了说明书中没有提到的功能也是Bug 这一点可能有点难于懂得。一个软件,功能莫非不是越多越强大吗?其实不尽然,实现额外的功能有如下几个缺点,如表1-3所示。可编辑资料 - - - 欢迎下载精品名师归纳总结代码量增大表 1-3软件实现说明书中未提到功能所带来的问题 缺点说明由于代码可能相互影响,因此这部分额外的功能可能对
33、其他功能的实现造成影响,带入新的Bug在软件项目时间固定的情形下,导致投入到其他必备功能的可编辑资料 - - - 欢迎下载精品名师归纳总结增加额外的开发、测试时间增加了成本,与软件的宣扬不完全符合开发测试时间削减,可能影响它们的完成质量虽然用户对于增加功能一般不会有看法,但可能影响了公司的销售策略和市场定位可编辑资料 - - - 欢迎下载精品名师归纳总结4. 软件没有实现说明书中没有提到但应当实现的功能小白一般是将网上找到的有用文档储存在随身携带的U 盘中。这一次,他在测试记事本程序的时候,同样准备将文件储存在U 盘上,可是由于连日来的文档太多了,优盘已经没有空间,记事本提示无法储存,同时系统
34、托盘有提示说磁盘空间已满。在这种情形下记事本的行为,就属于实现了说明书中没有提到却应当实现的功能在磁盘满的情形下,给 用户以提示。假如没有提示,不符合绝大部分用户的使用习惯,也是一个Bug 。5. 软件难于使用、性能差软件是拿来用的,再好的界面使用不便利也不会产生多大成效。一个网站假如半天都打不开,很难想象仍会有多少用户会拜访它。因此这样的问题也是Bug ,而且对于性能测试来说,这一个规章很重要。1.2.3 发觉虫子的危害既然软件 Bug 对产品造成了这么多的影响,那么发觉它就显得特别重要了。业内人士可编辑资料 - - - 欢迎下载精品名师归纳总结都认为,在软件生命周期内的不同阶段发觉Bug,
35、所节约的成本是不同的,如图1-5 所示。图 1-5软件生命周期内各阶段发觉与改正Bug 所需成本示意图从图中可以看出,在产品设计阶段发觉Bug 要比在产品保护阶段发觉好得多,这是很好懂得的。在需求分析阶段,对于用户需求的懂得停留在需求文档中,对其中懂得不正确的部分只需要修改文档即可以,基本不会产生什么成本。在软件设计阶段,发觉的Bug 许多都是设计思想的缺陷。由于尚未开头编码,这样的 Bug 一般需要进行深化的争论最终获得一种正确的结论,因此改正成本也不高。在软件编码阶段和测试阶段,代码通过开发人员和测试人员的努力在进行不断的完善,有关 Bug 的成本主要花费在项目内部的沟通与时间成本方面。但
36、是一旦产品发布,在软件保护阶段发觉的Bug ,其修改成本会特别昂扬:一是由于软件成为了系统,与开发阶段重点检查各模块功能相比更为复杂,查找代码上的产生 Bug 根源更加困难。特殊是,假如前期工作没有做好的话,甚至软件产品的结构都需要进行大修改。二是由于牵扯的部门明显增加,比方客户服务部门、产品部署部门、销售部门等都要参与,导致公司内部、公司与客户之间的沟通成 本急剧增加。第三点就是影响产品质量与公司的信誉、将来产品的销售。【千年虫的问题】在前几年,有一个闻名的虫子把业内搅得不行开交,那就是千年虫问题,也叫做2000年问题。它是指在某些使用了电脑程序的智能系统比方一般的电脑系统以及自动掌握芯片等
37、 中, 由于其中的年份沿用早期的设计,只使用 2 位十进制数来表示,比方用 80 代表1980 年,因此当系统进行 或者涉及到 跨世纪的日期处理运算比方运算1980 年到 2080年之间的日期时,就会显现错误的结果,从而引发各种各样的系统功能紊乱甚至系统崩溃。从千年虫的实际例子中也可以看出,不考虑硬件上的限制,假如起初在设计日期表示格式的时候能够想得更长远一些,就完全可以防止这个虫子的发作,从而节约一大笔修改更新软件等的费用据未经证明的来自美国国际资料公司调查报告说明,光是1995 年到可编辑资料 - - - 欢迎下载精品名师归纳总结1998 年,全球捉“千年虫”的开销就已经到达惊人的1840
38、 亿美元。1.3 软件测试的定义与分类前文花费了不少文字来叙述Bug 的定义、危害和判定原就,本节将在更广的范畴内介绍软件测试的定义与分类。1.3.1 软件测试的定义软件测试就是利用肯定的方法对软件的质量或者使用性进行判定和评估的过程。这肯定义获得了较广泛的认同。1.3.2 软件测试工程师的工作内容软件测试是由软件测试工程师来完成的,他们的主要工作内容就是: 查找软件中的 Bug,并且是越早发觉越好缘由见节。确认 Bug 的可重复性 Repro以及 Bug 产生的步骤。确认 Bug 是否被解决 Fixed 。测试方法、测试方案、测试平台、测试代码、测试用例、测试文档、测试报告的确定、编写和执行
39、。对于小白这样刚入职的新人来说,主要工作就是前3 项以及测试用例的编写了。在节将叙述测试用例的学问。1.3.3 软件测试的分类软件测试可以有许多种分类,常见的有如下一些: 黑盒测试 Black box testing 。白盒测试 White box testing 。功能性测试 Functional testing 。 兼容性测试 Compatibility testing 。 性能测试 Performance testing 。 安全测试 Security testing 。压力测试 Stress testing。虽然看起来许多很复杂,但是目前,小白所要做的工作就是先熟识这些名词,这样在阅读
40、众多的技术文档时,明白这些名词属于软件测试的范畴就可以了。对于软件测试的两个核心,就有必要在第1 章具体的介绍。这两个核心分别是测试用例和测试工程师,分别代表了软件测试的两个方面:工具和人。可编辑资料 - - - 欢迎下载精品名师归纳总结1.4 软件测试的核心 I:测试用例前文提到,测试用例代表了软件测试的工具方面,是它的核心之一。那么什么是测试用例,它又有哪些要点需要我们去把握?1.4.1 什么是测试用例软件测试的核心行为就是针对要测试的软件设置测试用例。所谓测试用例,英文名为Test Case,是一个与程序部分行为以及输入、输出相关的描述或者标识。【测试用例的 IEEE定义】美 国 电 气
41、与 电 子 工 程 师 协 会 IEEE , TheInstituteofElectricaland Electronics Engineers,它出台了一个标准的测试用例定义,即“测试用例是描述输入实际值和预期输出行为或者结果的文档,它同时也标识了测试过程结果与约束。”在实际工作中,花费测试工程师大部分时间的,都是与测试用例相关的。1.4.2 测试用例的几大要素一般来说,测试用例应当清晰的描述出对被测试软件发出什么数据或者条件,以及该输入所期望的结果。在小白这样的商业网站,测试部门规定测试用例应当具备如下几个 要素。1. 标识符这一点虽然和测试用例的内容没有关系,但却是测试过程中不行缺少的。
42、比方,小白所在的部门每周都要开一次例会,向经理或者开发部门的同事说明当前整个产品的测试状态,有时候需要特殊指出某个测试用例的内容,那么用一个简洁的代号来代表这一测试用例是特别适合的,这个代号一般情形下都是一个正整数,比方1、88、437 等这样。在小白所在的公司,测试用例是存放在一个数据库中的,代号也就自然的采纳了数据库系统中的标识符字段类型。假如采纳其他的方式储备测试用例,可以人工指定,只要保证标识符不重复就可以了。如图 1-6 显示了应用于真实测试场景的某测试用例文档,它实际上是一个Office Word文件,测试工程师即编写者在文件内容中手工指定了各个测试用例的标识符。可编辑资料 - -
43、 - 欢迎下载精品名师归纳总结图 1-6测试用例的标识符2. 测试的内容测试内容可以说是测试用例最重要的部分,它一般指明白当前测试用例的运行目的,比方测试网页是否可以打开、单击按钮后是否能够显示正确的运算结果等。在许多情形下, 测试内容与下个要点:输入的条件区分并不是很清晰。3. 输入的条件输入条件可以是操作步骤,也可以是输入的数据,仍可以是系统运行环境的需求比方处于某种特殊的操作系统环境内这一条件。图1-6 中的各个测试用例,都具体的写明白每一步骤的具体操作。【复现步骤】对于被测试软件而言,不同的输入条件会导致不同的输出预期,因而可能显现的Bug 表现并不肯定相同。假如重复某些输入条件,总会
44、导致某个Bug 的显现,那么就把这些输入条件称为 Bug 的复现步骤 Repro Step。4. 输出的预期该项信息描述了在当前的输入条件下,预期的输出。比方运算器程序中十进制数字的2+3 的输出应当等于5。假设输出预期与实际结果不同,就应当考虑为Bug 的可能性有的时候,输出预期也会随项目的进度而变化,因此预期与实际不同并不意味着100%是 Bug, 此时需要与项目经理等相关人员进行协商。可编辑资料 - - - 欢迎下载精品名师归纳总结5. 测试环境信息这一部分的内容描述了该测试用例所适用的环境,比方操作系统的版本,所依靠硬件软件的版本、语言等。测试环境信息有时候也可以成为输入条件或者复现步骤的一部分,比方某个按钮只有在IE 浏览器中才会显现、某个 Bug 只在 IE 浏览器中才会产生, 那么 IE既是测试环境信息,也是输入条件和复现步骤。6. 与其他测试用例的依靠关系在测试某些软件的时候,比方 MSN ,假如登录这个测试用例都无法通过,那么剩下的发消息,发文件等测试用例也确定连续进行除去直接调用接口的那些测试之外,这就是一种测试用例之间的依靠关系。合理的应用测试用例之间的依靠关系,能够提高测试效率,削减无谓的测试时间铺张。7. 测试用例需要被开发、批阅、使用、保护和储存这也是测试工作很重要的一部分。软件的说明书 Spec 可能会变化, 因此测试用例需要变化,这就要求对测