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

下载本文档

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

文档简介

.第1,1章软件测试概述,1.1软件测试的背景1.2软件缺陷1.3软件测试的复杂性和经济性分析1.4软件测试的理解1.5软件测试者的质量,2,1.1软件测试背景,1.1.1软件测试开发历史1.1.2软件测试现状,随着3,1.1软件测试背景、软件产业的发展,软件系统的规模和复杂性的增加,软件生产成本和软件缺陷故障造成的损失也增加,软件产品与其他技术和生产领域不同,人类大脑高度智能化,这种特殊性可能导致软件先天缺陷。在大型软件系统开发的漫长过程中,面对各种复杂的现实,人的主观认识和客观现实之间往往存在差异,在开发过程中,各种人员之间的交流和合作也往往并不完美。在4,1.1软件测试的后台,如果在软件正式运行之前无法发现和更正这些错误,则这些错误最终将在软件的实际运行过程中暴露出来。到那时,改正这些错误不仅要付出很大的代价,而且往往会造成不可挽回的损失。软件的质量就是软件的生命。为了保证软件的质量,人们在长期的开发过程中积累了很多经验,形成了多行的有效方法。但是,通过这些方法,我们只能将软件中的错误和缺陷减少到最低限度,不能完全避免所有错误。如何预防和减少这些潜在问题?答案是软件测试。测试是解决和防止软件缺陷和障碍的最有效的手段,可以促进软件测试理论和技术实践的快速发展。新的测试理论、测试方法、测试技术手段不断涌现,软件测试机构和组织也在迅速产生和发展,从而使软件测试技术职业也同时完善和健全。5,1.1.1软件测试开发历史,软件测试随软件发生而发生。在软件产业发展初期,软件规模小、复杂的程序低,软件开发过程有些混乱,有些休闲。这一阶段还没有系统的软件测试,更多的是一种调试测试,测试用例的设计和选择也是根据测试者的经验随机进行的,大多数测试都是为了证明系统可以正常运行。当时对测试的投资少,测试干预晚,一般等到代码形成,产品基本完成后再进行测试。6,1 . 1 . 1 . 1软件测试的发展历史到20世纪50年代末,计算机软件的发展陆续产生了用于计算机编程的各种高级语言,程序的复杂性大大增加,测试的重点逐渐转移到用高级语言编写的软件系统上。尽管如此,由于硬件的限制,软件在计算机系统中仍然处于辅助位置。软件准确性的把握仍然很大程度上依赖于程序员的技术水平,测试活动总是落后于开发活动。因此,在此期间,软件测试的理论和方法开发比较慢。7,1.1.1软件测试开发的历史,70年代以来计算机处理速度急剧增加,存储容量迅速增加,软件在整个计算机系统中的地位越来越重要。随着软件开发技术的成熟和完善,软件规模也越来越大,复杂性也大大增加。因此,软件的可靠性面临着前所未有的危机,对软件测试工作提出了巨大的挑战,产生了很多测试理论和测试方法,逐渐形成了完整的体系,优秀的软件测试人员陆续登场。8,1.1.1软件测试开发历史,1972年软件测试的先驱BillHetzel博士在北卡罗来纳大学举行了第一次以软件测试为主题的正式会议。此后,软件测试会议如雨后春笋般出现。1981年,BillHetzel博士开设了一门公共课程StructuredSoftwareTesting。1983年,他对软件测试进行了评估,“评估程序和系统的特性或功能,判断是否获得了预期的结果。软件测试是实现此目的的所有行为。”定义为。他认为的核心要点是,测试方法是验证软件是否“工作”,“工作”是软件的功能按照事先设计的方式执行,通过正向思考,依次验证软件系统的所有功能点的正确性。软件测试业界认为该方法是软件测试的第一类。9,1.1.1软件测试开发历史,第二种软件测试方法是GlenfordJ .是Myers。他认为,测试不是重点检查软件是否工作,而是首先判断软件出错,然后逆向思考,找出尽可能多的错误。他还主张,从人的心理角度来看,“验证软件正在运行”,如果用于测试目的,测试者发现软件的错误将非常不利。1979年,他提出了软件测试的定义。测试是为了发现错误而运行的程序或系统的过程.这个定义也是业界公认的,经常被引用。10,1.1.1软件测试开发历史,在产业界,从70年代末到80年代中期,很多软件企业建立了QA或SQA部门。随后,QA的能力将转换为流程监控(包括测试流程监控),测试从QA中分离出来,成为独立的组织能力。20世纪80年代初期,软件和IT行业有了很大的发展,软件呈大型化和复杂的趋势,软件质量变得越来越重要。此时,一些软件测试的基本理论和实际技术形成,用于软件开发的各种过程和管理方法开始设计,软件开发方式也从无序开发过程逐步过渡到结构化开发过程,其特点是结构化分析和设计、结构化审查、结构化编程和结构化测试。11,1.1.1软件测试开发历史,软件产业化的大趋势,对软件质量、成本和进度的要求越来越高,软件质量管理不仅仅是传统的软件测试。许多研究结果表明,传统软件的测试大多以代码为基础运行,往往到软件开发的后半部分才开始,但设计活动引入的错误占软件开发过程中出现的所有错误数的50%到65%。因此,需要一种规格的软件开发过程的呼声日益高涨。在整个软件开发过程中,测试不再是基于程序代码的活动,而是通过基于整个软件生命周期的质量管理活动,经过软件开发的所有阶段。12,1.1.2软件测试的当前状态在我国还没有形成实质性的产业,还处于初期阶段,从51testing组织获得的2009年中国软件测试从业人员调查报告来看,5年以上软件测试从业者建立时间的58%,表明应用软件产业、通信/网络服务产业、企业大部分是私营或集体所有企业,其比例逐年上升。调查显示,国内IT软件开发企业对软件测试的知识有些微乎其微,企业测试人员和开发人员的比例在1:1%和海外1:3-1:4之间分布很大,但是国内IT企业也侧重于软件测试团队的建设。在IT企业中,参与2009年调查的软件测试工作者中,73%有独立测试部门,专职测试人员也逐年增加。13,1.1.2软件测试的现状简单地说,国内软件产业的一般规模较小,大型软件产品经验不足,开发过程缺乏规格,因此,据判断,国内软件测试行业与部分发达国家相比有一定差距。实际上,这与中国的整体软件产业水平和软件发达国家水平相比有很大的差距,因此中国的整体软件开发水平和软件产业的重要组成部分软件测试也必然存在不少差距。但是,我们在软件测试实现方面与国外没有太大区别。国际上优秀的测试工具,我们基本上都有。这些工具实施的想法我们也有深刻的理解,很多大型系统在国内都受到了很好的测试。14,1.2软件缺陷,1.2.1软件缺陷案例分析1.2.2软件缺陷的定义1.2.3软件缺陷的原因1.2.4软件缺陷的修正成本,15,1.2.1软件缺陷案例分析,软件是人开发的逻辑思维产品,目前软件开发人员采取了一系列有效措施,不断提高软件开发质量,但也不能完全避免软件(产品)存在各种缺陷。软件中存在的缺陷有时会导致相当严重的损失或灾难。以下是4个软件缺陷案例:16,-美国迪斯尼的狮子王游戏软件bug-美国航天局火星着陆探测器故障-北京奥运会门票暂停第二阶段门票销售。-诺基亚Series40手机平台的缺陷、兼容性、融合、大规模访问、漏洞、1.2.1软件缺陷案例分析。17,1.2.2软件缺陷定义,软件中存在的各种问题,在软件工程或软件测试中可以称为软件缺陷或软件缺陷。软件缺陷是破坏计算机系统或程序功能的问题、错误或隐藏的功能缺陷、缺陷。缺陷可能导致软件产品无法在一定程度上满足用户的需要。软件缺陷的确切定义通常为、有18,1.2.2软件缺陷的定义,软件不符合产品文档要求的功能。软件中有产品说明文件,指出了不会出现的错误。软件功能超出了产品手册中规定的功能。软件没有准确地指出产品说明书,但没有达到要实现的目标。我认为软件难以理解,使用不容易,执行慢,最终用户使用效果不好。19,1.2.2软件缺陷的定义以计算器软件为例,以便更好地理解上述5种解释。计算器的产品说明书表示,加、减、乘、除可以正确。在求计算器的时候按“”键,没有任何反应,按照规则是缺陷。如果得到错误的答案,按照第规则,这也是缺陷。产品手册声明计算器不会崩溃、锁定或停止响应。任意敲击键盘,计算器停止接受输入,根据第规则出现缺陷。20,1.2.2软件缺陷的定义用计算器测试,除了加法、减法、乘法,还可以求出平方根,说明书中没有提到此功能。按照规定,这是软件缺陷。软件实现了产品文档中未提到的功能。测试计算器时,如果电池用完了,计算可能不准确,但产品手册不会说明此问题。根据第规则,这是缺陷。规则全面。如果软件测试员发现什么不对劲,不管什么原因,都要承认是缺陷。“=”键放置的位置不是很好。在明亮的光线下很难看到显示器。根据规则,这些是缺陷。21,1。软件本身文档错误、内容错误或拼写错误。资料考量不周密,导致强度或负载问题。对边界的考虑不足,遗漏了一些边界条件造成的错误。对于某些实时应用程序系统,请确保准确的时间同步。否则,很容易出现时间不协调、不一致引起的问题。系统崩溃后,没有考虑系统安全、稳定性的隐患。硬件或系统软件中的错误。软件开发标准或进程中的错误。,1.2.3软件缺陷的原因,22,1.2.3软件缺陷的原因,2 .分析团队工作系统时,对客户的要求不明确,或与用户沟通存在一些困难。不同阶段的开发者对彼此不一致的理解、软件设计对需求分析结果的理解偏差、程序员对系统设计规格说明书中的特定内容的关注不足或误导。由于对设计或编程的某些假设或从属关系,未能正确传递。23,1.2.3软件缺陷的原因,3 .技术问题算法错误。语法错了。计算的准确度问题。不合理的系统结构导致系统性能问题。接口参数不匹配,模块集成出现问题。作为24,1.2.3软件缺陷原因的软件缺陷是由多种原因引起的,对规范手册、系统设计结果、编程代码等诸多原因进行了比较,结果表明规范规范是软件缺陷最多的,如下图所示。25,1.2.3软件缺陷原因,软件产品规格指南软件缺陷最多的原因,主要原因包括:软件产品还没有设计、开发,只是想象一下系统实现的结果,所以有些功能还不清楚。用户一般是非计算机专家,与软件开发人员和用户的沟通存在很大困难,对要开发的产品功能的理解不一致。需求变化的不一致。用户的需求总是不断变化,如果产品规格表中没有正确说明,这种变化很容易引起前后矛盾。不充分重视规格说明书,投入到规格规格设计和编写中的人员和时间不足。在整个开发团队中,有时没有足够的沟通,只有设计师或项目经理才能获得更多信息。26,1.2.4软件缺陷的修复成本,软件通常通过有计划、有组织的开发过程实现。从开始到计划、编程、测试、公开使用,可能会发现软件缺陷。软件缺陷带来的维修成本随着时间的推移呈指数增长。早期编写产品手册时发现缺陷并进行维修的话,费用可能低于10美元。如果在完成相同的缺陷软件编写之前,测试没有完成,则可能需要100到1000美元的成本。如果客户发现,成本可能高达数千或数百万美元。下图显示了在不同阶段发现软件缺陷时错误更正的成本情况。27,1.2.4软件缺陷的修复成本,28,1.3软件测试的复杂性和经济性分析,1.3.1软件测试的复杂性1.3.2软件测试的经济性1.3.3软件测试的适当性指导,29,1.3软件测试的复杂性和经济性分析,一般认为软件工程中的程序开发是一个投入大量人力、物力、时间的复杂、困难的过程,测试程序更容易,不需要投入太多努力就能通过测试,这实际上是对软件开发过程的误解。在实际软件开发过程中软件测试作为现代软件开发产业的一个非常重要的组成部分发挥着越来越重要的作用随着软件规模的扩大如何在有限的条件下对正在开发的软件进行有效的测试已成为软件工程中一个非常重要的课题,30,1.3.1软件测试的复杂性,软件测试是一项需要细致、高技术的工作,一不小心就会出现疏忽。对以下几个问题的分析很好地说明了软件测试的复杂性。1.程序实现的完整测试在实际软件测试工作中是不可能的。完全测试是不现实的。完整的测试是在所有可能的输入上运行所有测试的程序一次。这个测试也称为“彻底测试”。,31,1.3.1软件测试的复杂性,彻底测试可能会导致以下问题:测试所需的输入太多;测试结果太多。软件执行路径过多。软件的规格指南具有主观性,没有客观标准,从不同的角度判断软件缺陷的标准不同。32,1.3.1软件测试的复杂性,加测试(穷举方法):合理的数据输入:1 0=,1=,1 2=,计算器可以处理的数字为32个字符,因

温馨提示

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

评论

0/150

提交评论