版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章软件测试概述1.1软件测试技术1.2软件中的Bug1.3软件测试的职业素质与要求1.4软件质量管理与评估
1.1软件测试技术
1.1.1行业背景
计算机是由硬件与软件组成的。硬件,就像我们的基础设置,是由专门的厂商去设计制造的,而软件也是由专业的人员去开发测试的。
就软件行业而言,如何提高软件的质量,一直是软件生产活动中的热门话题。软件测试工作对于寻找软件系统中存在的缺陷、保证软件产品的质量以及降低企业的生产成本、提高经济效益具有不可替代的作用。
1.1.2软件测试的由来
1950年左右,软件伴随着第一台电子计算机的问世而诞生。
过去,软件仅是由程序员编写的,程序员不仅担负着编写代码的工作,还肩负着程序代码测试、保证代码质量的职责。实际上,程序员此时所做的测试工作并非真正意义上的软件测试,他们所做的工作从本质上来说应该称作“调试”。
通常软件调试是在已知错误的情况下,对软件程序代码做出的一系列检查、校正的过程,而软件测试则是在未知错误的情况下,检查程序代码是否有问题的过程。测试与调试的区别在于,软件测试是从软件质量保证的角度来检查程序代码是否有错误,而调试则是为了解决当前已知的错误,调试活动无法替代测试活动。
软件测试活动的出现,解放了程序员,使程序员能够专心地开发代码、优化算法,并能及时地修复测试人员所发现的代码缺陷,提高其工作效率。同时,各司其职的分工方式,也更适合于当今社会的发展模式。
1.1.3软件测试的定义
1.软件测试常用术语
1)测试
测试是一项活动,在这项活动中某个系统或者其组成的部分将在特定的条件下运行,结果将被观察和记录,并对系统或者组成部分进行评价。
测试是一个或者多个测试用例的集合。
我们说的测试,若无特别说明,一般是指系统测试。
2)测试环境
测试环境是指为了完成软件测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称。
3)缺陷
软件的缺陷(即Bug)指的是软件中(包括程序和文档)不符合用户需求的问题。
4)测试用例
测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果,用于测试某个程序路径或核实是否满足某个特定需求。
2.软件测试定义
1972年,软件测试领域先驱BillHetzel博士在美国的北卡罗莱纳大学组织了历史上第一次正式的关于软件测试的会议。1973年他首先给出软件测试的定义:“软件测试就是建立一种信心,确信程序能够按预期的设想运行。”1983年他又将软件测试的定义修改为:“评价一个程序和系统的特性或能力,并确定它是否达到预期的结果。软件测试就是以此为目的的任何行为。”定义中的“设想”和“预期结果”其实就是我们现在所说的“用户需求”。BillHetzel把软件的质量定义为“符合要求”。他认为:测试方法是试图验证软件是“工作的”。所谓“工作的”就是指软件的功能是按照预先的设想执行的。
与上述观点相反,GlenfordJ.Myers认为应该首先认定软件是有错误的,然后用测试去发现尽可能多的错。除此之外,Myers还给出了与测试相关的三个重要观点:
(1)测试是为了证明程序有错,而不是证明程序无错。
(2)一个好的测试用例是在于它发现了以前未能发现的错误。
(3)一个成功的测试是发现了以前未发现的错误的测试。
简单地说,软件测试就是为了发现错误而执行程序的过程。软件测试是一个找错的过程,测试只能找出程序中的错误,而不能证明程序无错。
1.1.4软件测试的分类
1.按是否关心系统内部结构划分
1)白盒测试
白盒测试也称结构测试或逻辑驱动测试,是指基于一个应用代码的内部逻辑,即基于覆盖全部代码、分支、路径、条件的测试,测试者知道产品内部工作过程,可通过测试来检测产品内部操作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作。白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。图1.1是白盒测试的示例图。
图1.1白盒测试示例图
2)黑盒测试
黑盒测试是指不依据程序内部设计和代码的任何知识,而仅基于需求和功能性所进行的测试。黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能的前提下,通过测试来检测每个功能是否都能正常使用。在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,且只检查程序功能是否可按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等。图1.2是黑盒测试的示例图。
图1.2黑盒测试示例图
“黑盒”法着眼于程序外部结构,不考虑内部逻辑结构,针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都加以测试,才能以这种方法查出程序中所有的错误。实际上其测试情况可能有无穷多个,不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
2.按是否需要执行被测软件的角度划分
按是否需要执行被测软件的角度,软件测试可分为静态测试和动态测试。静态测试不运行待测程序而应用其他手段实现测试目的,如代码审核;而动态测试通过运行被测试软件来达到目的。
3.按阶段划分
1)单元测试
单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等。单元测试是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。
一个软件单元的正确性是相对于该单元的规约而言的。因此,单元测试以被测试单位的规约为基准。
2)集成测试
集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单元之间的接口是否正确。通常是根据集成测试计划,一边将模块或其他软件单元组合成越来越大的系统,一边运行该系统,以分析测试所组成的系统是否正确,各组成部分是否合拍。集成测试的策略主要有自顶向下和自底向上两种。
3)系统测试
系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等是否满足其规约所指定的要求。检查软件的行为和输出是否正确并非一项简单的任务,因此系统测试应该按照测试计划进行,其输入、输出和其他动态运行行为应该与软件规约进行对比。软件系统测试方法很多,主要有功能测试、性能测试、随机测试等。
4)验收测试
验收测试旨在向软件的购买者展示该软件系统满足预期设计目标的需求。它的测试数据通常是系统测试的测试数据的子集。所不同的是,验收测试常常有软件系统的购买者代表在现场,甚至是在软件安装使用的现场。验收测试是软件在投入使用之前的最后测试。
1.1.5软件测试技术的发展
1.软件验证技术
软件验证的目的用于证明软件生命周期的各个阶段以及各阶段间的逻辑协调性和正确性。目前,软件验证技术还只是适用于特殊用途的小型程序。
2.软件静态测试
目前,软件测试正在逐渐地由对程序代码的静态测试向高层开发产品的静态测试方向发展,如静态分析工具的产生。静态分析工具可以在不执行程序的情况下,进行类型分析、接口分析、输入输出规格说明分析等。
3.测试数据的选择
在测试数据选择方面,主要是对测试用例进行选择,这对测试的成功与否有着重要的影响。
4.自动化测试技术
自动化测试是软件测试技术的最新发展方向,其主要的目标是研究如何实现软件测试的自动化过程以及相关的一系列内容,具体表现是集成化测试系统。它将多种测试工具融为一体,合成为功能强大的测试工具。
1.2软件中的Bug
1.2.1软件Bug的定义软件Bug实际是软件产品没有达到预期设计目标,在软件内部存在的一种缺陷。通常情况下Bug不影响用户和系统的正常运行,处于隐蔽状态。当Bug发生运行错误时,轻者影响用户使用,重者会构成事故,造成损失或伤害。
1.2.2软件Bug的类型
软件Bug的类型可分为以下几种:
(1)产品说明书中规定要做的事情,而软件没有实现。
(2)产品说明书中规定不要做的事情,而软件却实现了。
(3)产品说明书没有提到的事情,而软件却实现了。
(4)产品说明书中没有提到但是必须要做的事情,软件却没有实现。
(5)软件很难理解,很难去使用,速度超慢,测试人员站在最终用户的角度看到的问题是平常的但不是正确的。
1.2.3软件Bug的级别
软件Bug的级别由高到低依次为:
(1)致命:数据被破坏、数据丢失、系统崩溃、系统无法运行。
(2)严重:处理结果不正确、流程不对、性能不能满足要求。
(3)一般:不会影响整个系统的运行性能。
(4)微小:一些小问题如有个别的错误字、文字排版不整齐等。
(5)建议:功能正常,有改进的空间。
1.2.4软件Bug的产生
软件Bug的产生原因如图1.3所示。图1.3软件Bug产生原因示意图
1.2.5软件Bug的构成
软件Bug的构成示意图如图1.4所示,具体构成见表1-1。图1.4软件Bug构成示意图
1.2.6修复Bug的代价
在软件开发周期的不同阶段,修复一个Bug所需的成本差别非常之大。越是到了后期,修复Bug越困难,成本也就越高。从图1.5中可以看出,在测试阶段修复Bug的代价是设计开发阶段的几倍,而一旦产品上线,进入维护期后,所需的代价更是设计开发阶段的几十倍。
图1.5Bug修复成本示意图
1.2.7Bug的影响
下面是历史上发生的几次Bug大事件:
(1) 1962年7月28日MarinerI空间探测器事件:MarinerI航空软件的Bug导致火箭在发射时偏离了其预期轨道,最终导致在大西洋上空将整个火箭摧毁。
(2) 1995/1996年,致命的ping命令:由于缺乏对IP段组装代码的完整性检查和错误的执行使得有可能通过从互联网的任意位置发送恶意的“ping”数据报而攻击多个操作系统,受明显影响的大部分是运行Windows的计算机,当它们接收到数据报后,就会死锁并进入所谓的“蓝屏死机”。这类攻击也会影响很多使用Macintosh和Unix操作系统的计算机。
(3) 1993年Intel奔腾浮点指数除法事件:一个硅片上的错误导致Intel高性能奔腾芯片在一段范围内计算浮点指数除法时发生错误。例如4195835.0/3145727.0产生的是1.33374而不是1.33382,产生了0.00008的偏差。尽管该Bug仅仅影响了少数用户,然而它却成了整个公众的噩梦。估计流通中的300万到500万的芯片存在着这样的缺陷。起初Intel仅仅为那些能够证明他们确实有高精度计算需求的用户提供了取代奔腾的芯片,最后Intel公司妥协为任何投诉的人提供替代芯片。该Bug给Intel最终造成了4.75亿美元损失。
1.3软件测试的职业素质与要求
1.3.1软件测试职业发展软件测试职业规划表如表1-2所示。
1.3.2软件测试人员工作目标与必备素质
1.软件测试人员工作目标
软件测试具体工作:
(1)测试和发现软件中存在的软件缺陷。软件测试人员要使用各种测试技术和方法来测试及发现软件中存在的软件缺陷。测试技术主要分为黑盒测试和白盒测试两大类。
(2)测试工作需要贯穿整个软件开发生命周期。完整的软件测试工作包括单元测试、集成测试、确认测试和系统测试。
(3)缺陷报告编写及提交。测试人员将发现的缺陷编写成正式的缺陷报告,提交给开发人员进行缺陷的确认和修复。
(4)软件质量分析。测试人员需要分析软件质量。
(5)测试计划制订。测试过程中,为了更好地组织与实施测试工作,测试负责人需要制订测试计划,包括测试资源、测试进度、测试策略、测试方法、测试工具、测试风险等。
(6)测试用例报告形成。
(7)自动化测试工具引进。
(8)测试水平提高。
2.软件测试人员必备素质
测试人员通常要具备以下一些素质及技能。
1)计算机专业技能
计算机领域的专业技能是测试工程师应该必备的一项素质,这是做好测试工作的前提条件。
(1)测试专业技能。
(2)软件编程技能。
(3)网络、操作系统、数据库、中间件等知识。
作为一名测试人员,尽管不能精通所有的知识,但要想做好测试工作,应该尽可能地学习更多的与测试工作相关的专业知识。
2)行业知识
所谓行业,主要是指测试人员所在企业涉及的领域。例如,很多IT企业从事石油、电信、银行、电子政务、电子商务等行业领域的产品开发。行业知识即专业业务知识,是测试人员做好测试工作的又一个前提条件。只有深入了解了产品的业务流程,才可以判断开发人员实现的功能是否正确。
3)个人素养
作为一名优秀的测试工程师,首先要对测试工作有兴趣,因为测试工作多数比较枯燥。
(1)专心:主要指测试人员在执行测试任务的时候不可一心二用。
(2)细心:主要指进行测试工作时要认真,不可以忽略细节。
(3)耐心:很多测试工作有时候显得非常枯燥,需要很大的耐心才可以做好。
(4)责任心:责任心是做好工作必备的素质之一,测试工程师更应该高度负责。
(5)自信心:自信心是目前多数测试工程师都缺少的一项素质,尤其在面对测试开发等工作时,往往认为自己做不到。
1.4软件质量管理与评估
1.4.1软件质量的定义1979年,Fisher和Light将软件质量定义为:表征计算机系统卓越程度的所有属性的集合。1982年,Fisher和Baker将软件质量定义为:软件产品满足明确需求一组属性的集合。20世纪90年代,Norman、Robin等将软件质量定义为:表征软件产品满足明确的和隐含的需求的能力的特性或特征的集合。
994年,国际标准化组织公布的国际标准ISO8042将软件质量定义为:反映实体满足明确的和隐含的需求的能力的特性的总和。
综上所述,软件质量是产品、组织和体系或过程的一组固有特性,反映它们满足顾客和其他相关方面要求的程度。
GB/T11457—2006《软件工程术语》中定义软件质量为:
(1)软件产品中能满足给定需要的性质和特性的总体。
(2)软件具有所期望的各种属性的组合程度。
(3)顾客和用户觉得软件满足其综合期望的程度。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版九年级上册数学期中考试试卷及答案
- 初中历史人教版中考真题及答案
- 2024标准版民办学校聘用合同书
- 电白区七年级上学期语文期末考试卷
- 重点中学七年级上学期语文第二次月考试卷
- 温岭市七年级下学期语文期末考试试卷
- 五年级上册解方程练习200题及答案
- 第四名校高一下学期语文期中考试试卷
- 2024企业签订合同委托书
- 2024医院经济合同管理办法
- 企业贷款申请表【范本模板】
- 历年高中数学联赛真题分类汇编33不等式
- 创伤严重程度(AIS)(ISS)评分表(完整版)
- 部编版六年级语文上册第一单元《习作:变形记》教学设计及反思(教案)
- 特种设备安全总监、安全员任命
- 全民直播理论考试题库300题(含答案)
- 读书笔记《框架思维》PPT模板思维导图下载
- 邳州市国企招聘考试真题及答案
- 《山东省情省况》知识考试参考题库(含解析)
- 施工方案合同
- 渠道混凝土衬砌施工方案(21.12.1)
评论
0/150
提交评论