第1章 软件测试概述_第1页
第1章 软件测试概述_第2页
第1章 软件测试概述_第3页
第1章 软件测试概述_第4页
第1章 软件测试概述_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章软件测试概述1.1软件测试的背景1.2软件缺陷1.3软件测试的复杂性和经济性分析1.4对软件测试的理解1.5软件测试人员的素质1.1软件测试的背景1.1.1软件测试的历史1.1.2软件测试的现状1.1软件测试的背景随着软件产业的发展,软件系统的规模和复杂性与日俱增,软件生产的成本以及软件中的缺陷和故障所造成的损失也大大增加,甚至带来灾难。软件产品不同于其他科技和生产领域。它是人脑高智能的体现。由于这种特殊性,软件固有缺陷。在大型软件系统开发的漫长过程中,面对纷繁复杂的现实情况,人们的主观认识与客观现实之间往往存在差距,开发过程中各种人员之间的沟通与合作往往不尽如人意。1.1软件测试的背景如果在软件正式投入运行之前不能发现和纠正这些错误,这些错误最终将在软件的实际运行中暴露出来。到那时,纠正这些错误不仅要付出很大的代价,还会造成不可挽回的损失。软件质量是软件的生命。为了保证软件的质量,人们在长期的开发过程中积累了大量的经验,形成了许多有效的方法。然而,使用这些方法,我们只能最小化软件中的错误和缺陷,但是我们不能完全避免所有的错误。如何预防和减少这些可能出现的问题?答案是测试软件。测试是消除和预防软件缺陷和故障的最有效的方法,从而促进软件测试理论和技术实践的快速发展。新的测试理论、测试方法和测试技术不断涌现,软件测试组织和组织也在迅速涌现和发展。结果,软件测试技术行业得到了同时改进和完善。软件测试的发展史伴随着软件的产生。软件产业发展之初,软件规模小,程序复杂程度低,软件开发过程混乱无序。在这个阶段,没有系统意义上的软件测试。这更像是一种调试测试。测试用例的设计和选择也是根据测试人员的经验随机进行的。大多数测试的目的是证明系统能够正常运行。当时,在测试方面的投资较少,测试是后来才涉及到的。一般来说,测试直到代码形成和产品基本完成后才进行。软件测试的发展史一直到20世纪50年代末,随着计算机软件的发展,用于计算机编程的各种高级语言相继诞生。程序的复杂性远远超过了过去。测试的重点逐渐转移到用高级语言编写的软件系统上。然而,由于硬件的限制,软件在计算机系统中仍然处于次要地位。软件正确性的保证仍然主要取决于程序员的技术水平,测试活动总是落后于开发活动。因此,软件测试的理论和方法在这一时期发展缓慢。在软件测试发展的历史中,20世纪70年代以后,计算机处理速度迅速提高,内存容量迅速增加,软件在整个计算机系统中变得越来越重要。随着软件开发技术的成熟和完善,软件的规模和复杂性也在不断增加。因此,软件的可靠性面临着前所未有的危机,这给软件测试工作带来了巨大的挑战。许多测试理论和方法应运而生,逐渐形成一个完整的系统,涌现出一批优秀的软件测试大师。1972年,软件测试的先驱比尔赫策尔博士在诺思卡莉娜大学召开了第一次以软件测试为主题的正式会议。此后,软件测试会议如雨后春笋般出现。1981年,比赫策尔博士开设了一门公共课程“结构化软件测试”。1983年,他将软件测试定义为“任何旨在评估程序和系统的特性或能力并判断其是否达到预期结果的行为。”他思想的核心是测试方法是试图验证软件是“工作的”。所谓“工作”是指软件的功能是按照预先设计的设计来执行的,软件系统的正确性是根据软件系统的所有功能点,用积极的思维来逐一验证的。软件测试行业将这种方法视为第一类软件测试方法。软件测试的发展史。第二类软件测试方法的代表是格伦福德迈尔斯。他认为测试不应该集中在验证软件是否工作上,而应该首先识别软件是否有缺陷,然后用逆向思维找出尽可能多的错误。他还从人类心理学的角度论证了如果以“验证软件正在工作”为测试目的,测试人员很难发现软件错误。1979年,他提出了软件测试的定义:“测试是执行程序或系统以发现错误的过程。”这一定义也得到业界的认可,并经常被引用。软件测试的历史从20世纪70年代末到80年代中期,许多软件公司都建立了质量保证或SQA部门。后来,质量保证的职能转变为过程监控(包括监控测试过程),而测试从质量保证中分离出来,成为一个独立的组织职能。到20世纪80年代初,软件和信息技术产业进入了一个大发展时期。软件越来越庞大和复杂,软件质量变得越来越重要。这时,一些软件测试的基本理论和实用技术开始形成,人们开始为软件开发设计各种过程和管理方法。软件开发的方式逐渐从混乱的开发过程过渡到结构化的开发过程,以结构化的分析和设计、结构化的评审、结构化的程序设计和结构化的测试为特征。随着软件产业化的发展,人们对软件质量、成本和进度的要求越来越高。软件质量控制不再仅仅是传统意义上的软件测试。传统软件的测试大多基于代码运行,通常在软件开发的后期开始。然而,大量研究表明,设计活动引入的错误占软件开发过程中所有错误的50% 65%。因此,越来越多的声音呼吁标准化的软件开发过程。在整个软件开发过程中,测试不再仅仅是基于程序代码的活动,而是基于整个软件生命周期的质量控制活动,贯穿于软件开发的各个阶段。1.1.2软件测试的现状在我国,软件测试尚未形成真正的产业,仍处于起步阶段。根据51项测试获得的2009年中国软件测试从业人员调查报告,58%的软件测试从业者所在的公司已经成立5年以上,并且集中在应用软件行业和电信/互联网服务行业。大多数公司是私营或集体所有的企业,比例逐年增加。调查显示,虽然国内IT软件开发企业对软件测试的认识相对薄弱,公司测试人员和开发人员的比例主要分布在1:3和1:4之间,与国外的1:1的比例相差甚远,但国内IT企业已经逐渐开始重视软件测试团队的建设。在信息技术企业中,一些知名企业已经将软件测试作为其未来发展的一个组成部分。在2009年参与调查的软件测试从业者中,73%的公司有独立的测试部门,全职测试人员也在逐年增加。软件测试的现状,总之,国内软件行业普遍规模小,缺乏大规模软件产品的经验,开发过程不规范,这决定了国内软件测试行业与一些发达国家还有一定的差距。事实上,这与中国软件发展的总体水平是一致的,因为中国软件产业的总体水平与发达国家相比还有很大差距。作为软件产业的重要组成部分,软件测试也必然有很大的差距。然而,我们在软件测试实施方面并不比外国差。我们基本上拥有世界上最好的测试工具。我们对这些工具中包含的思想也有深刻的理解。许多大型系统已经在中国测试成功。1.2软件缺陷,1.2.1软件缺陷案例分析1.2.2软件缺陷的定义1.2.3软件缺陷的原因1.2.4软件缺陷的修复费用,1.2.1软件缺陷案例分析,软件是由人编写和开发的,是逻辑思维的产物。尽管软件开发人员已经采取了一系列有效的措施来不断提高软件开发的质量,但是他们仍然不能完全避免软件(产品)中的各种缺陷。软件缺陷有时会造成相当大的损失和灾难。这里有四个软件缺陷的例子。迪士尼狮子王游戏软件漏洞美国宇航局火星着陆探测器缺陷北京奥运会门票暂停二期门票销售。-诺基亚40系列手机平台存在缺陷、兼容性、内聚性、大流量、漏洞、1.2.1软件缺陷案例分析和1.2.2软件缺陷定义。软件中存在的各种问题可以称为软件工程或软件测试中的软件缺陷或软件故障。软件缺陷是存在于计算机系统或程序中的任何类型的问题、错误或隐藏的功能缺陷或瑕疵,它们会破坏正常的操作能力。缺陷会导致软件产品在一定程度上不能满足用户的需求。对于软件缺陷的精确定义,通常有以下五种描述:嘿。1.2.2软件缺陷的定义:软件不符合产品规范要求的功能。(2)软件存在产品规格中指出的不会发生的错误。(3)软件的功能超出了产品说明书中规定的功能。(4)软件没有达到产品说明书没有明确指出但应该达到的目标。(5)软件难以理解、难以使用、运行缓慢,或者最终用户认为使用效果不好。为了更好地理解以上五个描述,我们将以计算器软件为例来解释软件缺陷的定义。计算器的产品手册上说它能精确地加、减、乘和除运算。当你拿到计算器,按下 键,没有反应。根据规则,这是一个缺陷。如果你得到了错误的答案,根据规则(1),这也是一个缺陷。如果产品规格声明计算器永远不会崩溃、锁定或停止反应。当你随意敲击键盘时,计算器停止接受输入。根据规则2,这是一个缺陷。1.2.2软件缺陷的定义,如果用计算器测试,发现除了加、减、乘、加之外,它还能计算平方根。该功能在规范中从未提及。根据规则3,这是软件缺陷。该软件实现了产品规格中未提及的功能。如果在测试计算器时发现电池没电,计算将是不正确的,但是产品规格并没有指出这个问题。根据规则4,这是一个缺陷。规则5是全面的。如果一个软件测试人员发现了错误,不管是什么原因,它必须被识别为一个缺陷。例如,“=”键极难按下。显示屏在强光下很难看见。根据规则5,这些都是缺陷。软件本身有不正确的文档、不正确的内容或拼写。数据考虑不充分会导致强度或负载问题。没有充分考虑边界,忽略了边界条件引起的一些误差。对于一些实时应用系统来说,准确的时间同步是有保证的,否则很容易出现时间不一致和不一致的问题。没有考虑系统崩溃后的系统安全和可靠性隐患。硬件或系统软件的错误。软件开发标准或过程中的错误。1.2.3软件缺陷的原因,1.2.3软件缺陷的原因,2 .团队工作系统分析不太清楚客户的需求,或者在与用户沟通时存在一些困难。不同阶段的开发人员对彼此有不同的理解,软件设计在理解需求分析的结果时有偏差,程序员对系统设计规范中的一些内容不够重视,或者有误解。设计或编程中的一些假设或依赖关系尚未完全沟通。1.2.3软件缺陷的原因,3。技术问题算法错误。语法错误。计算的准确性。不合理的系统结构会导致系统性能问题。接口参数不匹配,导致模块集成问题。1.2.3软件缺陷的原因。软件缺陷是由许多原因引起的。在对规范、系统设计结果和程序代码等诸多原因进行分类和比较后,发现规范是软件缺陷发生最频繁的地方,如下图所示。1.2.3软件缺陷的原因和软件产品的规格是软件缺陷最常见的地方。主要原因是:由于软件产品尚未设计和开发,系统的实现结果完全由想象来描述,所以有些特性不够清晰。用户通常是非计算机专业人员。软件开发人员和用户之间的沟通有很大困难,他们对要开发的产品功能的理解不一致。需求变化的不一致性。用户的需求总是在变化。如果产品规格中没有正确描述这些变更,很容易导致上下文和上下文之间的冲突。对规范关注不够,在规范的设计和编写上投入的人力和时间不足。在整个开发团队中没有足够的沟通,有时只有设计师或项目经理才能获得更多的信息。修复软件缺陷的成本通常取决于计划和组织的开发过程。从开始到规划、编程、测试,到公共使用的过程,都有可能发现软件缺陷。软件缺陷导致的修复成本随着时间呈指数增长。早期编写产品规格时,发现和修复缺陷的成本可能只有10美元或更少。如果在编写软件和开始测试之前没有发现相同的缺陷,成本可能是100-1000美元。如果客户发现它,成本可能达到数千甚至数百万美元。下图显示了在不同阶段发现软件缺陷时纠错后的成本情况。1.2.4软件缺陷的修复成本,1.3软件测试的复杂性和经济性分析,1.3.1软件测试的复杂性,1.3.2软件测试的经济性,1.3.3软件测试的充分性标准,1.3软件测试的复杂性和经济性分析,人们普遍认为软件工程中程序的开发是一个复杂而困难的过程,需要大量的人力、物力和时间,而测试程序相对容易,不需要花费太多的精力,所有的软件故障都可以通过测试发现。这实际上是对软件开发过程的误解。在实际的软件开发过程中,软件测试作为现代软件开发行业的一个非常重要的组成部分,发挥着越来越重要的作用。随着软件规模的不断扩大,如何在有限的条件下有效地测试所开发的软件已经成为软件工程中一个非常关键的课题。软件测试的复杂性,软件测试是一项细致而又高度熟练的工作。任何粗心都会导致一件事的疏忽和另一件事的疏忽,导致不必要的遗漏。对以下问题的分析充分说明了软件测试的复杂性。1.完全测试这个程序是不可能的。在实际的软件测试中,完全测试是不现实的。所谓的完整测试就是让被测试的程序在所有可能的输入条件下执行它。这种测试通常也被称为“穷举测试”。由于软件测试的复杂性,穷举测试会导致以下问题:测试所需的输入太大;测试输出过多;软件执行路径太多;软件的规格说明是主观的,没有客观的标准。从不同的角度来看,软件缺陷的标准是不同的。,1.3.1软件测试的复杂性,加法测试(穷举方法):输入合理的数据:1 0=,1 1=,1 2=,计算器可以处理32位数字,所以请始终输入1 99999.99999 (32 9合1)=。接下来,继续输入2 0=,2 1=,2 2=,直到您输入2 99999.99999(第32页,共9页)=。通过类比

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论