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

下载本文档

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

文档简介

软件测试基础

倪鹏:

手机:82821000

办公室:85118251

邮箱:nipeng@课程安排星期一二三四五1-23-4软件测试倪鹏20818

软件测试倪鹏20818

5-67-8软件测试倪鹏20818课程简介前导课程:软件工程后续课程:软件测试技术考试形式:闭卷学时:48学时软件测试基础第一章软件测试概述本章学习内容软件测试背景软件测试定义、目标和原则软件测试与质量保证传统软件测试过程软件测试的发展历程及趋势软件测试是伴随着软件的产生而产生的,有了软件的生成和运行就必然有软件测试。例1:1963年,美国,飞往火星的火箭爆炸,损失$10million.

原因:

FORTRAN循环DO5I=1,3

误写为DO5I=1.3例2:1994-1995年,迪斯尼的狮子王,第一个面向儿童的多媒体光盘游戏,投诉电话被打爆.

原因:未对市场上的各种PC机型进行正确测试,软件在大众使用的常见系统中难以运行例3:1991年,美国爱国者导弹防御系统在几次对抗导弹战役中失利,多哈战误击毙28名美军士兵.

原因:一个很小的系统时钟错误积累,可能拖延14小时并造成跟踪系统失去准确度,多哈战中系统拖延了100多个小时早期的软件开发过程中,测试的含义比较窄,将测试等同于“调试”目的是纠正软件中已经知道的故障,常常由软件开发人员自己完成这部分工作对测试的投入极少,测试介入的也晚,常常是等到形成代码,产品已经基本完成时才进行测试直到1957年,软件测试才开始与调试区别开来,成为一种发现软件缺陷的活动。直到20世纪80年代早期,“质量”的号角才开始吹响。软件测试的定义发生了改变,测试不单纯是一个发现错误的过程,而且包含软件质量评价的内容。

20世纪90年代,测试工具终于盛行起来。到了2002年,Rich和Stefan在《系统的软件测试》一书中对软件测试做了进一步定义:“测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期过程”。近20年来,随着计算机和软件技术的飞速发展,软件测试技术的研究也取得了很大的突破,测试专家总结了很好的测试模型,如著名的V模型,在单元测试、自动化测试等方面涌现了大量优秀的软件测试工具。虽然软件测试技术的发展很快,但是其发展速度仍落后于软件开发技术的发展速度,使得软件测试在今天面临着很大的挑战,主要体现在以下几个方面。①软件在国防现代化、社会信息化和国民经济信息化领域中的作用越来越重要,由此产生的测试任务越来越繁重。②软件规模越来越大,功能越来越复杂,如何进行充分而有效的测试成为难题。③面向对象的开发技术越来越普及,但是面向对象的测试技术却刚刚起步。④对分布式系统的整体性能还不能进行很好的测试。⑤对实时系统缺乏有效的测试手段。⑥随着安全问题的日益突出,对信息系统的安全性如何进行有效的测试与评估,成为世界性难题。根据国内外软件测试的发展现状,可以看到软件测试有以下的发展趋势。①测试工作将进一步前移。②软件架构师、开发工程师、QA

(QUALITYASSURANCE

)质量保证人员、测试工程师将进行更好的融合。③测试职业将得到充分的尊重。④设置独立的软件测试部门将成为越来越多的软件公司的共识。软件测试部门将和开发部、质量保证部一样作为一个重要的独立部门存在。⑤测试外包服务将快速增长。和软件开发外包一样,软件测试外包将成为全球化的一种趋势。可以利用职业测试专家队伍与机构为自己的产品进行测试,而且可以节省测试费用。软件测试职业与素质对软件测试的误解

如果发布的软件有质量问题,那是软件测试人员的错。

软件测试技术要求不高,至少比编程容易多了。

软件测试随便找一个能力差的人就能做。

有时间就多测试一些,来不及就少测试一些。软件测试是测试人员的事,与开发人员无关。

设计-实现-测试,软件测试是开发后期的一个阶段。

软件测试职业和职位

软件测试员

软件测试工程师/程序分析员

高级软件测试工程师/程序分析员

软件测试组负责人软件测试/编程负责人

软件测试/质量保证/项目经理

软件测试人员应具备下列基本素质:1.具有探索精神2.具有创造性3.坚持不懈的精神4.故障排除专家5.判断准确6.追求完美7.沟通能力软件测试员工作目标与必备素质软件测试人才的现状

1、软件测试人员的合理比例

在软件产业发达的国家:

软件测试在人员配备和资金投入方面占据相当的比重。

微软为打造Windows2000,1700多个开发人员,以及3200个测试人员,开发和测试人员之比约为三比五。

HP公司的测试人员和开发人员的比例为一比一,这是很多先进软件企业通常的人员配比。

在国内:

企业往往忽视软件测试,很多企业都没有软件测试部门,甚至不设置软件测试的岗位,造成产品质量得不到保证。

测试人员大都不到开发人员的5%,随着产业和企业的发展,企业必然需要大量的测试人员。

软件测试人才需求快速增长,体现在:

(1)中国软件产业正在快速增长,需要大量软件相关人才;

(2)软件企业的发展要求测试人才达到一个合适的比例。

近一两年软件企业开始认识到软件测试对于提高软件质量的重要性,开始重视软件测试,但由于历史的原因,找不到合适的软件测试人员。三个招聘案

慧谷-博为峰软件测试工作室曾经接受企业委托,招聘二十名软件测试工程师,结果收到的简历不到十份,合格的只有三份,最后录用的只有一人;而招聘一名程序员就会收到六十多份简历。

上海一位软件企业的副总裁说,他们曾招聘8名基于Unix操作系统的测试工程师,但是半年多招不到合适的人。

微软亚洲工程院院长张宏江博士最近告诉媒体:“过去两三个月,我最主要的精力都花在雇人上。遗憾的是,1万多名应聘者中,居然找不到足够合适的人。”微软最紧缺的人才包括软件测试人员、软件项目管理员、软件架构师,1万多名应聘者中最后合格的只有50多人。测试高手是怎样炼成的大侠江湖阅历武术招式内功心法高人指点必胜信念测试高手项目经验测试技术基础知识名师指点自信问题什么是软件?计算机中与硬件相结合的一部分包括程序和文档什么是Bug?Bug—小虫子计算机中硬件或软件的错误软件中(包括程序和文档)不符合用户需求的问题判断软件问题是否是Bug的唯一标准世界上不存在没有缺陷的软件可以通过两种途径开发出没有错误的软件:在一开始就防止引入错误识别潜藏在代码中的错误,找到并消灭它们事实由软件设计故障和计算机硬件设计故障而引发的系统失效的比例大约是:10:1!!!运行软件的驻留故障密度(每千行代码的故障数)要求很高的财务或财产软件为:每千行代码1-10个故障关键的生命软件为每千行代码0.01-1个故障1.1软件错误与缺陷软件与生俱来就有可能存在着缺陷?如何防止和减少这些可能存在的问题?软件测试!!软件缺陷与定义软件缺陷定义软件未达到产品说明书中已经标明的功能软件出现了产品说明书中指明不会出现的错误软件未达到产品说明书中虽未指出但应当达到的目标软件功能超出了产品说明书中指明的范围软件测试人员认为软件难以理解、不易使用或最终用户认为该软件使用效果不好软件缺陷的特征

“看不到”

——软件的特殊性决定了缺陷不易看到

“看到但是抓不到”

——发现了缺陷,但不易找到问题发生的原因所在

软件缺陷产生的原因软件产品说明书(56%)设计方案(27%)编码(7%)其他(10%)软件缺陷修复的代价IBM的研究结果表明,缺陷存在放大趋势由此可见,问题发现越早,解决问题的代价就越小,这是软件开发过程中的黄金法则。图测试工作量和软件缺陷数量之间的关系软件测试的定义1979年,Glenford

J.Myers:软件测试是为了发现错误而运行程序的过程1983年,IEEE(国际电器电子工程师学会)测试是使用人工或自动的手段来运行或检测某个系统的过程,其目的在于检测它是否满足约定的需求或是比较预期结果与实际结果之间的差别1.2什么是软件测试软件测试的特性挑剔性提高软件质量,尽可能多的发现至今仍未发现的错误复杂性需要考虑全面不彻底性输入量太大输出结果太多软件实现途径太多软件规格说明没有客观标准注:不能证明错误不存在经济性软件测试的目标和原则测试目标寻找错误,并且是最大可能的找出最多的错误。证明程序中有故障存在,并力求设计出最能暴露错误的测试方案测试不是为了显示程序是好的,而是应该从软件中包含有缺陷和故障这个假定出发去测试程序,从中发现尽可能多的软件故障。在谈到软件测试时,许多人都引用GrenfordJ.Myers的观点:①软件测试是为了发现错误而执行程序的过程;

②测试是为了证明程序有错,而不是证明程序无错误。

③一个好的测试用例是在于它能发现至今未发现的错误;

④一个成功的测试是发现了至今未发现的错误的测试。测试原则软件测试的原则尚没有标准的说法,大多是经验之谈,一般有下面几条可作为测试的基本原则。(1)所有的测试都应追溯到用户需求。(2)尽早的和及时的测试,应作为软件开发人员的座右铭。(3)设计时应完成测试计划,详细的测试用例定义可在设计模型确定后开始,测试可在代码产生之前进行计划和设计。(4)测试用例应当由测试数据和与之对应的预期结果组成。(5)在程序提交测试后,应当由专门的测试人员进行测试,避免由程序设计者自行检查程序。(6)测试用例应包括合理的输入条件和不合理的输入条件(7)严格执行测试计划,排除测试的随意性。(8)充分注意测试当中的群体和集中现象。(9)避免杀虫剂现象(10)要对每一个测试结果做全面的检查。(11)完全测试是不可能的,测试需要终止。(12)测试无法显示潜伏的软件缺陷(13)程序修改后要回归测试(14)不是所有软件缺陷都要修复(15)保存测试计划、测试用例、出错统计和最终分析报告,为维护工作提供充分的资料。测试结果分析改正错误可靠性分析软件配置测试配置测试工具测试结果错误预期结果修正的软件预测的可靠性回归测试图

测试信息流程测试信息流程测试停止的标准(1)测试时间超过了预定期限,则停止测试。(2)执行了所有的测试用例,但并没有发现故障,则停止测试。(3)使用特定的测试用例设计方案,作为判断测试停止的基础。(4)正面指出了停止测试的具体要求,即停止测试的标准可定义为查出某一预定数目的故障。(5)根据单位时间内查出故障的数量决定是否停止测试。1.3软件质量保证软件质量的定义——1983年,IEEE软件系统或软件产品满足规定和隐含的与需求能力有关的全部特征和特性。软件产品质量满足用户要求的程度软件各种属性的组合程度用户对软件产品的综合反映程度软件在使用过程中满足用户要求程度①软件需求是衡量软件质量的基础,不符合需求的软件就不具备质量。设计的软件应在功能、性能等方面都符合要求,并能可靠地运行。②软件结构良好,易读、易于理解,并易于修改、维护。③软件系统具有友好的用户界面,便于用户使用。④软件生存周期中各阶段文档齐全、规范,便于配置、管理。McCall等人对软件的质量特性作了如下定义:正确性可靠性易用性效率易维护性可移植性完整性可测试性灵活性复用性互联性质量管理的发展阶段

(1)产品质量检验阶段

(2)统计质量管理阶段

(3)全面质量管理阶段1900手工操作者专职检验员1920过程统计技术1931全面质量管理19602000以顾客为中心阶段时间质量管理的发展阶段从质量管理理论的发展历史可以看出:

——质量管理从单纯的对产品质量进行检验

发展到对产品形成过程进行控制

——控制方法从静态发展到动态的、持续的

过程改进

——其核心思想已表现为对过程的策划、控

制和过程能力的持续改进软件能力成熟度模型

软件能力成熟度模型(CMM,CapabilityMaturityModel):是软件行业标准模型,用来定义和评价软件企业开发过程的成熟度,提供如何做才能够提高软件质量的指导。

CMM的基本原理:

CMM将软件组织的过程能力成熟度分为5个级别,每一个级别定义一组过程能力目标,并描述要达到这些目标应该采取的各种实践活动。CMM的主要作用:

提供了一个软件过程改进的框架。根据CMM模型,软件开发者(机构或组织)能够大幅度的提高按计划、高效率、低成本的提交有质量保证的软件产品的能力。1、CMM的基本过程概念

过程:

为达到目的而执行的所有步骤的系列。软件过程:

开发和维护软件及其相关产品的一组活动、方法、实践和改革。软件过程结构:

对组织标准软件过程的一种高级别描述,它描述组织标准软件过程内部的过程元素之间的顺序、接口、内部依赖等关系,以及与外部过程之间的接口和依赖关系。

软件过程元素:

用于描述软件过程的基本元素,每一个过程元素包含一组定义的、有限的、封闭的相关任务。软件过程定义:

CMM中过程定义的基本概念是定义组织的标准软件过程。初始级优化级已管理级已定义级可重复级成熟度风险CMM五个等级

2、CMM的5个分级标准

CMM的分级结构和其主要特征:

初始级:其特点是软件过程无秩序,有时甚至是混乱的。

可重复级:已建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。

已定义级:用于管理的、工程的软件过程均已实现文档化、标准化,并形成了整个软件组织的标准软件过程。

管理级:软件过程和产品质量有详细的度量标准,软件过程和产品质量得到了定量的认证和控制。

优化级:通过对来自过程、新概念和新技术等方面各种有用信息的定量分析,能够不断地、持续性地对过程进行改进。

除第一级外,CMM的每一级是按照完全相同的内部结构构成的。

成熟度等级为顶层,不同的成熟度等级反映了软件组织的软件过程能力和该组织可能实现预期的程度。

ISO9000标准简介ISO9000标准

——是为制造行业制定的质量管理和质量评判的一系列标准

——定义了一套基本达标的做法,有助于企业能够一致地交付符合客户质量要求的产品(或服务)ISO9000标准的目标

——在于开发过程,而不是产品

——关心的是进行工作的组织方式,而不是工作成果.

ISO9000只决定过程的要求是什么,而不管如何达到。即:ISO9000指出要做什么,但不指出怎样做。1、ISO9000标准的构成

ISO9000系列标准主要由下列标准构成:

ISO9000:2000《质量管理体系:基础和术语》

ISO9000:2000《质量管理体系:要求》

ISO9000:2000《质量管理体系:业绩改进指南》

2、ISO9000标准的要求(1)开发详细的质量计划和程序,控制配置管理、产品验证、合法性检查、不规范行为和修正措施。(2)准备和接受软件开发计划证书,包括项目定义、产品验证、合法性检查、不规范行为和修正措施。

(3)使用客户容易理解、测试时容易进行合法性检查的用语来表达说明书。(4)计划、开发、编制软件测试计划。(5)开发检测软件是否满足客户要求的方法。(6)实施软件合法性检查和验收测试。(7)维护测试结果的记录。(8)控制调查研究和解决软件缺陷的方式。(9)证明产品在发布前就绪。(10)开发控制产品发布过程的程序。

(11)明确指出和规定应该收集的质量信息。(12)应用统计技术的方法分析软件开发过程。(13)应用统计技术的方法评估产品质量。3、ISO9000质量管理的八项原则(1)以客户为关注的焦点(2)领导的作用(3)企业全员的参与(4)过程方法(5)管理的系统方法(6)持续的改进(7)基于事实的决策策略(8)与供方互利的关系软件测试管理软件测试作用软件测试管理系统的组成建立软件测试管理体系的步骤测试计划单元测试集成测试确认测试系统测试验收测试测试总结与报告1.4软件测试过程软件测试阶段组成测试计划测试设计测试开发测试执行测试评估待测程序单元测试确认测试验收测试测试计划项目启动初期必须规划计划是“动态的”什么是单元测试检查程序的最小单元模块进行正确性检验的测试工作测试模块在语法、格式和逻辑上的错误单元测试目的保证每个模块单独运行正确多采用白盒技术检查模块控制结构的某些特殊路径期望覆盖尽可能多的出错点单元?人为规定的最小功能模块单元测试主要任务对各模块进行测试解决以下5个方面的测试问题模块接口局部数据结构边界条件独立的路径错误处理模块接口测试模块接受输入的实际参数个数与模块的形式参数个数是否一致。输入的实际参数与模块的形式参数的类型是否匹配。输入的实际参数与模块的形式参数所使用单位是否一致调用其他模块时,所传送的实际参数个数与被调用模块的形式参数的个数是否相同。调用其他模块时,所传送的实际参数与被调用模块的形式参数的类型是否匹配。调用其他模块时,所传送的实际参数与被调用模块的形式参数的单位一致。调用内部函数时,参数的个数、属性和次序是否正确在模块有多个入口的情况下,是否有引用与当前入口无关的参数。是否会修改了只读型参数。出现全局变量时,这些变量是否在所有引用它们的模块中都有相同的定义。有没有把某些约束当做参数来传送返回局部数据结构测试内部数据能否保持完整性应注意几类错误不正确或不一致的类型说明错误的初始化或默认值错误的变量名,如拼写错误或缩写错误下溢、上溢或者地址错误注意:全程数据对模块的影响返回模块边界条件测试数据边界处模块能否正常工作软件常在边界处发生错误(循环条件)通常为单元测试的最后一步,仔细限制数据处理,设置边界可能与边界有关的数据类型数值、字符、数量、尺寸等边界条件设置注意项首个、最后一个;最大、最小;最长、最短;最高、最矮等特征返回模块中所有独立执行路径测试也称为覆盖测试常见错误误用或不正确的算术优先级混合类型的运算初始化的错误计算的精确度不够表达式中的不正确符号表示返回各种错误处理测试若模块在工作中发生错误,出错处理是否有效检查程序出错处理时,可能情况对运行发生的错误描述难以理解所报告的错误与实际遇到的错误不一致出错后,在错误处理之前就引起了系统的干预异常情况的处理不正确提供的错误定位信息不足,以致无法找到出错的准确原因返回单元测试的执行过程程序编写、复查和语法正确性验证后进行单元测试测试用例设计应与复审工作相结合根据设计信息选取数据,可增大发现上述各类错误的可能性需设置若干辅助测试模块驱动模块(Driver)模拟被测试模块的上级模块用来接收测试数据,启动被测模块并输出结果被调用模拟子模块/桩模块(Sub)模拟被测模块工作过程中所调用的模块图2-3显示了一般的单元测试环境图

一般单元测试环境

什么时候进行单元测试?由谁来进行单元测试?单元测试的依据是什么?单元测试的通过标准是什么?程序员编码之后,但要做必要准备工作白盒测试工程师或开发人员源程序(程序和注释);项目《详细设计》文档不同公司有不同标准例子该程序实现如下功能:在主函数main里面定义了一个含有5个整型元素的数组,用1个循环来实现数组元素的输入,每次循环都调用1次iszero函数,如果输入的数组元素不等于0,则打印输出本身;如果为0,则输出1。一般步骤编译运行程序(能否运行)静态测试(代码是否符合规范)动态测试(深入检查代码正确性、容错性、边界值)#include<stdio.h>voidiszero(intm){If(m!=0)printf("%d",m);elseprintf("%d",1);}voidmain(void){inta[5];inti=0;printf("请输入5个整数\n");for(i=0,i<=4,i++){scanf("%d",&a[i])iszero(a[i]);}}边界循环次数控制1、编译运行程序编译运行程序,输入输出2、静态测试3、动态测试边界值问题非法数据的容错性非法数据小数,字符等,Scanf函数错误判断能力不强驱动模块与桩模块图驱动模块与桩模块例子:#include<stdio.h>voidmain(void){inta=1;intb=2;intc;c=fun1(a,b);}intfun1(intx,inty){returnx+y;}集成测试概念将通过单元测试的单元模块组装成系统或子系统再进行测试集成测试目的验证组成软件系统的各模块的接口和交互作用主要测试软件结构问题多为黑盒测试适当辅以白盒测试,以便能对主要控制路径进行测试集成测试主要任务检查系统是否符合实际软件结构发现与接口有关的各种错误主要解决以下5个方面的测试问题组合后检查模块相互调用时,数据经过接口是否丢失检查能否达到预期要求的各项功能一个模块的功能是否会对另一个模块的功能产生不利的影响全局数据结构是否有问题,会不会被异常修改单个模块的误差积累起来,是否被放大,从而达到不可接受的程度集成测试方法(分类)非增量式集成增量式集成自顶向下集成(top-downintegration)自底向上集成(bottom-upintegration)非增量式测试一步到位方法来进行测试对所有模块进行个别的单元测试后,按程序结构图将各模块连接起来,把连接后的程序当做一个整体进行测试图2-5给出该集成测试方法的一个经典例子被测程序结构图驱动模块桩模块驱动模块桩模块返回增量式测试逐步实现自顶向下增量式测试逐步集成和逐步测试是按结构图自上而下进行集成的顺序集成主控模块(主程序)按照软件控制层次结构向下进行集成自顶向下集成集成测试步骤主控模块作为测试驱动器,把对主控模块进行单元测试时引入的被调用

温馨提示

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

评论

0/150

提交评论