软件工程测试课件.pptx

上传人(卖家):晟晟文业 文档编号:5183602 上传时间:2023-02-16 格式:PPTX 页数:171 大小:653KB
下载 相关 举报
软件工程测试课件.pptx_第1页
第1页 / 共171页
软件工程测试课件.pptx_第2页
第2页 / 共171页
软件工程测试课件.pptx_第3页
第3页 / 共171页
软件工程测试课件.pptx_第4页
第4页 / 共171页
软件工程测试课件.pptx_第5页
第5页 / 共171页
点击查看更多>>
资源描述

1、-测试测试软件工程软件工程1谢谢观赏2019-6-29内容提要内容提要软件测试的目的软件测试的目的错误分类错误分类基本任务、特点和原则基本任务、特点和原则软件测试的信息流软件测试的信息流软件测试的方法软件测试的方法测试用例的设计测试用例的设计软件测试的过程及其相关的角色与职责软件测试的过程及其相关的角色与职责测试层次测试层次测试的类型测试的类型软件测试与调试软件测试与调试软件可靠性软件可靠性2谢谢观赏2019-6-29软件测试是为了发现错误而执行程序的过程。软件测试是为了发现错误而执行程序的过程。程序运行需要数据,为测试设计的数据称程序运行需要数据,为测试设计的数据称测试测试用例。用例。软件测

2、试是根据软件开发各阶段的规格说明和软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并程序的内部结构而精心设计一批测试用例,并利用这些测试用例去运行程序,以发现程序错利用这些测试用例去运行程序,以发现程序错误的过程。误的过程。3谢谢观赏2019-6-29l软件测试在软件生存期中横跨两个阶段:通常软件测试在软件生存期中横跨两个阶段:通常在编写出每一个模块之后就对它做必要的测试在编写出每一个模块之后就对它做必要的测试(称为单元测试)。模块的编写者与测试者是(称为单元测试)。模块的编写者与测试者是同一个人。编码与单元测试属于软件生存期中同一个人。编码与单元测试属于软件生存

3、期中的同一个阶段。的同一个阶段。l在这个阶段结束之后,对软件系统还要进行各在这个阶段结束之后,对软件系统还要进行各种综合测试,这是软件生存期的另一个独立的种综合测试,这是软件生存期的另一个独立的阶段,即测试阶段,通常由专门的测试人员承阶段,即测试阶段,通常由专门的测试人员承担这项工作。担这项工作。4谢谢观赏2019-6-29软件测试的目的软件测试的目的 Grenford J.Myers就软件测试目的提出以下观点:就软件测试目的提出以下观点:测试是程序的执行过程,目的在于发现错误;测试是程序的执行过程,目的在于发现错误;一个好的一个好的测试测试用例很可能找到迄今为止尚未发用例很可能找到迄今为止尚

4、未发现的错误;现的错误;一个一个成功的测试成功的测试是发现了至今未发现的错误的是发现了至今未发现的错误的测试。测试。E.W.Dijkstra 指出指出:程序测试能证明错误的存在,但不能证明错误程序测试能证明错误的存在,但不能证明错误不存在。不存在。测试的目的是发现程序中的错误,是为了证明测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。程序有错,而不是证明程序无错。5谢谢观赏2019-6-29软件测试的目的软件测试的目的n 测试的目的是想以最少的时间和人力系统地测试的目的是想以最少的时间和人力系统地找出软件中潜在的各种错误和缺陷。如果我找出软件中潜在的各种错误和缺陷。如果我

5、们成功地实施了测试,就能够发现软件中的们成功地实施了测试,就能够发现软件中的错误。测试的附带收获是,它能够证明软件错误。测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。此外,实的功能和性能与需求说明相符合。此外,实施测试收集到的测试结果数据为可靠性分析施测试收集到的测试结果数据为可靠性分析提供了依据。提供了依据。n 把证明程序无错当作测试目的不仅是不正确把证明程序无错当作测试目的不仅是不正确的的,完全做不到的,而且对做好测试没有任完全做不到的,而且对做好测试没有任何益处,甚至是十分有害的。何益处,甚至是十分有害的。n 能够发现错误的测试是成功的测试,否则是能够发现错误的测试是成功

6、的测试,否则是失败的测试。失败的测试。6谢谢观赏2019-6-29 测试者知道软件怎样才能发生故障而导致失败,测试者知道软件怎样才能发生故障而导致失败,并可记录发生失败的多种故障类型并可记录发生失败的多种故障类型 测试案例没有冗余。每个测试案例都有不同的用测试案例没有冗余。每个测试案例都有不同的用途,不要重复相同意义的测试案例途,不要重复相同意义的测试案例 使用最具有代表性的案例,它能够高效率揭示所使用最具有代表性的案例,它能够高效率揭示所有可能的错误有可能的错误 每个测试应该能独立执行,不能太复杂,也不会每个测试应该能独立执行,不能太复杂,也不会太简单,它们能够被组合用于一个测试案例中太简单

7、,它们能够被组合用于一个测试案例中好的测试应该具有的特性好的测试应该具有的特性7谢谢观赏2019-6-29软件错误的分类软件错误的分类 由于人们对错误有不同的理解和认识,由于人们对错误有不同的理解和认识,所以目前还没有一个统一的错误分类方所以目前还没有一个统一的错误分类方法。错误难于分类的原因,一方面是由法。错误难于分类的原因,一方面是由于一个错误有许多征兆,因而它可以被于一个错误有许多征兆,因而它可以被归入不同的类。另一方面是因为把一个归入不同的类。另一方面是因为把一个给定的错误归于哪一类,还与错误的来给定的错误归于哪一类,还与错误的来源和程序员的心理状态有关。源和程序员的心理状态有关。To

8、 be continue8谢谢观赏2019-6-29软件错误的分类软件错误的分类 按错误的影响和后果分类按错误的影响和后果分类 较小错误较小错误:只对系统输出有一些非实质性影响。如,:只对系统输出有一些非实质性影响。如,输出的数据格式不合要求等。输出的数据格式不合要求等。中等错误中等错误:对系统的运行有局部影响。如输出的某:对系统的运行有局部影响。如输出的某些数据有错误或出现冗余。些数据有错误或出现冗余。较严重错误较严重错误:系统的行为因错误的干扰而出现明显:系统的行为因错误的干扰而出现明显不合情理的现象。比如开出了不合情理的现象。比如开出了0.00元的支票,系统元的支票,系统的输出完全不可信

9、赖。的输出完全不可信赖。严重错误严重错误:系统运行不可跟踪,一时不能掌握其规:系统运行不可跟踪,一时不能掌握其规律,时好时坏。律,时好时坏。非常严重的错误非常严重的错误:系统运行中突然停机,其原因不:系统运行中突然停机,其原因不明,无法软启动。明,无法软启动。最严重的错误最严重的错误:系统运行导致环境破坏,或是造成:系统运行导致环境破坏,或是造成事故,引起生命、财产的损失。事故,引起生命、财产的损失。To be continue9谢谢观赏2019-6-29软件错误的分类软件错误的分类 按错误的性质和范围分类按错误的性质和范围分类B.Beizer从软件测试观点出发,把软件错从软件测试观点出发,把

10、软件错误分为误分为5类:类:功能错误功能错误 系统错误系统错误 加工错误加工错误 数据错误数据错误 代码错误代码错误To be continue10谢谢观赏2019-6-29功能错误功能错误 规格说明错误规格说明错误:规格说明可能不完全,有二义:规格说明可能不完全,有二义性或自身矛盾。性或自身矛盾。功能错误功能错误:程序实现的功能与用户要求的不一:程序实现的功能与用户要求的不一致。这常常是由于规格说明中包含错误的功能、致。这常常是由于规格说明中包含错误的功能、多余的功能或遗漏的功能所致。多余的功能或遗漏的功能所致。测试错误测试错误:软件测试的设计与实施发生错误。:软件测试的设计与实施发生错误。

11、软件测试自身也可能发生错误。软件测试自身也可能发生错误。测试标准引起的错误测试标准引起的错误:对软件测试的标准要选:对软件测试的标准要选择适当,若测试标准太复杂,则导致测试过程择适当,若测试标准太复杂,则导致测试过程出错的可能就大。出错的可能就大。11谢谢观赏2019-6-29系统错误系统错误 外部接口错误外部接口错误:外部接口指如终端、打印机、通信线:外部接口指如终端、打印机、通信线路等系统与外部环境通信的手段。所有外部接口之间,路等系统与外部环境通信的手段。所有外部接口之间,人与机器之间的通信都使用形式的或非形式的专门协人与机器之间的通信都使用形式的或非形式的专门协议。如果协议有错,或太复

12、杂,难以理解,致使在使议。如果协议有错,或太复杂,难以理解,致使在使用中出错。此外还包括对输入输出格式错误理解,用中出错。此外还包括对输入输出格式错误理解,对输入数据不合理的容错等等。对输入数据不合理的容错等等。内部接口错误内部接口错误:内部接口指程序之间的联系。它所发:内部接口指程序之间的联系。它所发生的错误与程序内实现的细节有关。例如,设计协议生的错误与程序内实现的细节有关。例如,设计协议错、输入输出格式错、数据保护不可靠、子程序访错、输入输出格式错、数据保护不可靠、子程序访问错等。问错等。硬件结构错误硬件结构错误:这类错误在于不能正确地理解硬件如:这类错误在于不能正确地理解硬件如何工作。

13、例如,忽视或错误地理解分页机构、地址生何工作。例如,忽视或错误地理解分页机构、地址生成、通道容量、成、通道容量、IO指令、中断处理、设备初始化和指令、中断处理、设备初始化和启动等而导致的出错。启动等而导致的出错。To be continue12谢谢观赏2019-6-29系统错误系统错误 操作系统错误操作系统错误:这类错误主要是由于不了解操作系:这类错误主要是由于不了解操作系统的工作机制而导致出错。当然,操作系统本身也统的工作机制而导致出错。当然,操作系统本身也有错误,但是一般用户很难发现这种错误。有错误,但是一般用户很难发现这种错误。软件结构错误软件结构错误:由于软件结构不合理或不清晰而引:由

14、于软件结构不合理或不清晰而引起的错误。这种错误通常与系统的负载有关,而且起的错误。这种错误通常与系统的负载有关,而且往往在系统满载时才出现。这是最难发现的一类错往往在系统满载时才出现。这是最难发现的一类错误。例如,错误地设置局部参数或全局参数;错误误。例如,错误地设置局部参数或全局参数;错误地假定寄存器与存储器单元初始化了;错误地假定地假定寄存器与存储器单元初始化了;错误地假定不会发生中断而导致不能封锁或开中断;错误地假不会发生中断而导致不能封锁或开中断;错误地假定程序可以绕过数据的内部锁而导致不能关闭或打定程序可以绕过数据的内部锁而导致不能关闭或打开内部锁;错误地假定被调用子程序常驻内存或非

15、开内部锁;错误地假定被调用子程序常驻内存或非常驻内存等等,都将导致软件出错。常驻内存等等,都将导致软件出错。To be continue13谢谢观赏2019-6-29系统错误系统错误 控制与顺序错误控制与顺序错误:包括:忽视了时间因素而破:包括:忽视了时间因素而破坏了事件的顺序;猜测事件出现在指定的序列坏了事件的顺序;猜测事件出现在指定的序列中;等待一个不可能发生的条件;漏掉先决条中;等待一个不可能发生的条件;漏掉先决条件;规定错误的优先级或程序状态;漏掉处理件;规定错误的优先级或程序状态;漏掉处理步骤;存在不正确的处理步骤或多余的处理步步骤;存在不正确的处理步骤或多余的处理步骤等。骤等。资源

16、管理错误资源管理错误:这类错误是由于不正确地使用:这类错误是由于不正确地使用资源而产生的。例如,使用未经获准的资源;资源而产生的。例如,使用未经获准的资源;使用后未释放资源;资源死锁;把资源链接在使用后未释放资源;资源死锁;把资源链接在错误的队列中等等。错误的队列中等等。14谢谢观赏2019-6-29加工错误加工错误 算术与操作错误算术与操作错误:指在算术运算、函数求值和一般操作过:指在算术运算、函数求值和一般操作过程中发生的错误。包括:数据类型转换错;除法溢出;错程中发生的错误。包括:数据类型转换错;除法溢出;错误地使用关系比较符;用整数与浮点数做比较等。误地使用关系比较符;用整数与浮点数做

17、比较等。初始化错误初始化错误:典型的错误有:忘记初始化工作区,忘记初:典型的错误有:忘记初始化工作区,忘记初始化寄存器和数据区;错误地对循环控制变量赋初值;用始化寄存器和数据区;错误地对循环控制变量赋初值;用不正确的格式,数据或类型进行初始化等等。不正确的格式,数据或类型进行初始化等等。控制和次序错误控制和次序错误:这类错误与系统级同名错误类似,但它:这类错误与系统级同名错误类似,但它是局部错误。包括:遗漏路径;不可达到的代码;不符合是局部错误。包括:遗漏路径;不可达到的代码;不符合语法的循环嵌套;循环返回和终止的条件不正确;漏掉处语法的循环嵌套;循环返回和终止的条件不正确;漏掉处理步骤或处理

18、步骤有错等。理步骤或处理步骤有错等。静态逻辑错误静态逻辑错误:这类错误主要包括:不正确地使用:这类错误主要包括:不正确地使用CASE语句;在表达式中使用不正确的否定(例如用语句;在表达式中使用不正确的否定(例如用“”代替代替“”的否定);对情况不适当地分解与组合;混淆的否定);对情况不适当地分解与组合;混淆“或或”与与“异或异或”等。等。15谢谢观赏2019-6-29数据错误数据错误 动态数据错误动态数据错误:动态数据是在程序执行过程中暂时存在:动态数据是在程序执行过程中暂时存在的数据。各种不同类型的动态数据在程序执行期间将共的数据。各种不同类型的动态数据在程序执行期间将共享一个共同的存储区域

19、,若程序启动时对这个区域未初享一个共同的存储区域,若程序启动时对这个区域未初始化,就会导致数据出错。由于动态数据被破坏的位置始化,就会导致数据出错。由于动态数据被破坏的位置可能与出错的位置在距离上相差很远,因此要发现这类可能与出错的位置在距离上相差很远,因此要发现这类错误比较困难。错误比较困难。静态数据错误静态数据错误:静态数据在内容和格式上都是固定的。:静态数据在内容和格式上都是固定的。它们直接或间接地出现在程序或数据库中,由编译程序它们直接或间接地出现在程序或数据库中,由编译程序或其它专门程序对它们做预处理,这是在程序执行前防或其它专门程序对它们做预处理,这是在程序执行前防止静态错误的好办

20、法,但预处理也会出错。止静态错误的好办法,但预处理也会出错。数据内容错误数据内容错误:数据内容是指存储于存储单元或数据结:数据内容是指存储于存储单元或数据结构中的位串、字符串或数字。数据内容本身没有特定的构中的位串、字符串或数字。数据内容本身没有特定的含义,除非通过硬件或软件给予解释。数据内容错误就含义,除非通过硬件或软件给予解释。数据内容错误就是由于内容被破坏或被错误地解释而造成的错误。是由于内容被破坏或被错误地解释而造成的错误。To be continue16谢谢观赏2019-6-29数据错误数据错误 数据结构错误数据结构错误:数据结构是指数据元素的大小:数据结构是指数据元素的大小和组织形

21、式。在同一存储区域中可以定义不同和组织形式。在同一存储区域中可以定义不同的数据结构。数据结构错误主要包括结构说明的数据结构。数据结构错误主要包括结构说明错误及把一个数据结构误当做另一类数据结构错误及把一个数据结构误当做另一类数据结构使用的错误。这是更危险的错误。使用的错误。这是更危险的错误。数据属性错误数据属性错误:数据属性是指数据内容的含义:数据属性是指数据内容的含义或语义。例如,整数、字符串、子程序等等。或语义。例如,整数、字符串、子程序等等。数据属性错误主要包括:对数据属性不正确地数据属性错误主要包括:对数据属性不正确地解释,比如错把整数当实数,允许不同类型数解释,比如错把整数当实数,允

22、许不同类型数据混合运算而导致的错误等。据混合运算而导致的错误等。17谢谢观赏2019-6-29代码错误代码错误 主要包括:语法错误;打字错误;对语句或指主要包括:语法错误;打字错误;对语句或指令不正确理解所产生的错误。令不正确理解所产生的错误。18谢谢观赏2019-6-29程序错误的分类程序错误的分类 Good enoughGerhart分类方法把软件的逻辑分类方法把软件的逻辑错误按生存期不同阶段分为错误按生存期不同阶段分为4类类:问题定义错误问题定义错误 规格说明错误规格说明错误 设计错误设计错误 编码错误编码错误19谢谢观赏2019-6-29问题定义错误问题定义错误 它们是在软件定义阶段,

23、分析员研究用户的要它们是在软件定义阶段,分析员研究用户的要求后所编写的文档中出现的错误。换句话说,求后所编写的文档中出现的错误。换句话说,这类错误是由于问题定义不满足用户的要求而这类错误是由于问题定义不满足用户的要求而导致的错误。导致的错误。20谢谢观赏2019-6-29规格说明错误规格说明错误 这类错误是指规格说明与问题定义不一致所产这类错误是指规格说明与问题定义不一致所产生的错误。它们又可以细分成:生的错误。它们又可以细分成:不一致性错误不一致性错误-规格说明中功能说明与问题规格说明中功能说明与问题定义发生矛盾。定义发生矛盾。冗余性错误冗余性错误-规格说明中某些功能说明与问规格说明中某些功

24、能说明与问题定义相比是多余的。题定义相比是多余的。不完整性错误不完整性错误-规格说明中缺少某些必要的规格说明中缺少某些必要的功能说明。功能说明。不可行错误不可行错误-规格说明中有些功能要求是不规格说明中有些功能要求是不可行的。可行的。不可测试错误不可测试错误-有些功能的测试要求是不现有些功能的测试要求是不现实的。实的。21谢谢观赏2019-6-29设计错误设计错误 这是在设计阶段产生的错误,它使系统的设计与需求这是在设计阶段产生的错误,它使系统的设计与需求规格说明中的功能说明不相符。它们又可以细分为:规格说明中的功能说明不相符。它们又可以细分为:设计不完全错误设计不完全错误:某些功能没有被设计

25、,或设计得:某些功能没有被设计,或设计得不完全。不完全。算法错误算法错误:算法选择不合适。主要表现为算法的基:算法选择不合适。主要表现为算法的基本功能不满足功能要求、算法不可行或者算法的效本功能不满足功能要求、算法不可行或者算法的效率不符合要求。率不符合要求。模块接口错误模块接口错误:模块结构不合理;模块与外部数据:模块结构不合理;模块与外部数据库的界面不一致,模块之间的界面不一致。库的界面不一致,模块之间的界面不一致。控制逻辑错误控制逻辑错误:控制流程与规格说明不一致;控制:控制流程与规格说明不一致;控制结构不合理。结构不合理。数据结构错误数据结构错误:数据设计不合理;与算法不匹配;:数据设

26、计不合理;与算法不匹配;数据结构不满足规格说明要求。数据结构不满足规格说明要求。22谢谢观赏2019-6-29编码错误编码错误 编码过程中的错误是多种多样的,大体可归为编码过程中的错误是多种多样的,大体可归为以下几种:数据说明错、数据使用错、计算错、以下几种:数据说明错、数据使用错、计算错、比较错、控制流错、界面错、输入输出错,比较错、控制流错、界面错、输入输出错,及其它的错误。及其它的错误。在不同的开发阶段,错误的类型和表现形式是在不同的开发阶段,错误的类型和表现形式是不同的,故应当采用不同的方法和策略来进行不同的,故应当采用不同的方法和策略来进行检测。检测。23谢谢观赏2019-6-29软

27、件测试的基本任务软件测试的基本任务 测试阶段的基本任务应该是测试阶段的基本任务应该是根据软件开发根据软件开发各阶段的文档资料和程序的内部结构,精各阶段的文档资料和程序的内部结构,精心设计一组心设计一组“高产高产”的测试用例,利用这的测试用例,利用这些用例执行程序,找出软件潜在的缺陷。些用例执行程序,找出软件潜在的缺陷。24谢谢观赏2019-6-29软件测试的特点软件测试的特点 软件测试的开销大软件测试的开销大 按照按照Boehm 的统计,软件测试的开销大约占的统计,软件测试的开销大约占总成本的总成本的30%50%。例如:。例如:APPOLLO登登月计划,月计划,80%的经费用于软件测试。的经费

28、用于软件测试。不能进行穷举测试不能进行穷举测试只有将所有可能的情况都测试到,才有可能只有将所有可能的情况都测试到,才有可能检查出所有的错误。但这是不可能的。检查出所有的错误。但这是不可能的。例如:例如:程序程序P 有两个整型输入量有两个整型输入量X、Y,输出量为,输出量为Z,在,在32 位位机上运行。所有的测试数据组机上运行。所有的测试数据组(Xi,Yi)的数目为:的数目为:232232264。假设毫秒执行次,如要进行完全测。假设毫秒执行次,如要进行完全测试,共需亿年。试,共需亿年。25谢谢观赏2019-6-29例例:Windows9595有有10001000万行万行代码代码 Windows2

29、0002000有有50005000万行万行代码,代码,30003000多个工程师,几百个小团队。多个工程师,几百个小团队。Exchange2000和和 Windows20002000开发人员结构开发人员结构Exchange2000Windows20002000项目经理项目经理25人人约约250人人开发人员开发人员140人人约约1700人人测试人员测试人员350人人约约3200人人26谢谢观赏2019-6-29软件测试的原则软件测试的原则 测试是一项非常复杂的、创造性的和需要高度智慧的挑测试是一项非常复杂的、创造性的和需要高度智慧的挑战性的工作。测试一个大型程序所要求的创造力,事实战性的工作。测

30、试一个大型程序所要求的创造力,事实上可能要超过设计那个程序所要求的创造力。软件测试上可能要超过设计那个程序所要求的创造力。软件测试中一些直观上看是很显而易见的至关重要的原则,总是中一些直观上看是很显而易见的至关重要的原则,总是被人们忽视。被人们忽视。应当把应当把“尽早地和不断地进行软件测试尽早地和不断地进行软件测试”作为软件开发者的座作为软件开发者的座右铭。右铭。不应把软件测试仅仅看作是软件开发的一个独立阶段,而应当不应把软件测试仅仅看作是软件开发的一个独立阶段,而应当把它贯穿到软件开发的各个阶段中。坚持在软件开发的各个阶把它贯穿到软件开发的各个阶段中。坚持在软件开发的各个阶段的技术评审,这样

31、才能在开发过程中尽早发现和预防错误,段的技术评审,这样才能在开发过程中尽早发现和预防错误,把出现的错误克服在早期,杜绝某些发生错误的隐患。把出现的错误克服在早期,杜绝某些发生错误的隐患。测试用例应由测试输入数据和与之对应的预期输出结果这两部测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成。分组成。测试之前应当根据测试的要求选择测试用例(测试之前应当根据测试的要求选择测试用例(Test case),用),用来检验程序员编制的程序,因此不但需要测试的输入数据,而来检验程序员编制的程序,因此不但需要测试的输入数据,而且需要针对这些输入数据的预期输出结果。且需要针对这些输入数据的预期输出结

32、果。To be continue27谢谢观赏2019-6-29软件测试的原则软件测试的原则 程序员应避免检查自己的程序。程序员应避免检查自己的程序。程序员应尽可能避免测试自己编写的程序,程程序员应尽可能避免测试自己编写的程序,程序开发小组也应尽可能避免测试本小组开发的序开发小组也应尽可能避免测试本小组开发的程序。如果条件允许,最好建立独立的软件测程序。如果条件允许,最好建立独立的软件测试小组或测试机构。这点不能与程序的调试试小组或测试机构。这点不能与程序的调试(debuging)相混淆。调试由程序员自己来做)相混淆。调试由程序员自己来做可能更有效。可能更有效。To be continue28谢

33、谢观赏2019-6-29软件测试的原则软件测试的原则 开发者在测试自己的程序时存在一些弊病:开发者在测试自己的程序时存在一些弊病:开发者对自己的程序印象深刻,并总以为是正确的。开发者对自己的程序印象深刻,并总以为是正确的。倘若在设计时就存在理解错误,或因不良的编程习惯倘若在设计时就存在理解错误,或因不良的编程习惯而留下隐患,那么他本人很难发现这类错误。而留下隐患,那么他本人很难发现这类错误。开发者对程序的功能、接口十分熟悉,他自己几乎不开发者对程序的功能、接口十分熟悉,他自己几乎不可能因为使用不当而引发错误,这与大众用户的情况可能因为使用不当而引发错误,这与大众用户的情况不太相似,所以自己测试

34、程序难以具备典型性。不太相似,所以自己测试程序难以具备典型性。程序设计犹如艺术设计,开发者总是喜欢欣赏程序的程序设计犹如艺术设计,开发者总是喜欢欣赏程序的成功之处,而不愿看到失败之处。让开发者去做成功之处,而不愿看到失败之处。让开发者去做“蓄蓄意破坏意破坏”的测试,就像杀自己的孩子一样难以接受。的测试,就像杀自己的孩子一样难以接受。即便开发者非常诚实,但即便开发者非常诚实,但“珍爱程序珍爱程序”的心理让他在的心理让他在测试时不知不觉地带入了虚假成分。测试时不知不觉地带入了虚假成分。29谢谢观赏2019-6-29 下面我们再来看看下面我们再来看看Microsoft 公司关于测试的经验教训:公司关

35、于测试的经验教训:IBM PC 机一起推出的机一起推出的BASIC 软件,用户在用软件,用户在用“.1”(或者其他(或者其他数字)除以数字)除以10 时,就会出错。在时,就会出错。在FORTRAN 软件中也存在破坏软件中也存在破坏数据的数据的“Bug”。由此激起了许多采用。由此激起了许多采用Microsoft 操作系统的操作系统的PC 厂商的极大不满,而且很多个人用户也纷纷投诉。厂商的极大不满,而且很多个人用户也纷纷投诉。Microsoft 公司的经理们发现很有必要引进更好的内部测试与质公司的经理们发现很有必要引进更好的内部测试与质量控制方法。但是遭到很多程序设计师甚至一些高级经理的坚量控制方

36、法。但是遭到很多程序设计师甚至一些高级经理的坚决反对,他们固执地认为在高校学生、秘书或者外界合作人士决反对,他们固执地认为在高校学生、秘书或者外界合作人士的协助下,开发人员可以自己测试产品。在的协助下,开发人员可以自己测试产品。在1984 年推出年推出Mac 机机Multiplan(电子表格软件)之前,(电子表格软件)之前,Microsoft 曾特地请曾特地请Authur Anderson 咨询公司进行测试。但是外界公司一般没有能力执行咨询公司进行测试。但是外界公司一般没有能力执行全面的软件测试。结果,一种相当厉害的破坏数据的全面的软件测试。结果,一种相当厉害的破坏数据的“Bug”迫迫使使Mi

37、crosoft 公司为它的公司为它的2 万多名用户免费提供更新版本,代价万多名用户免费提供更新版本,代价是每个版本是每个版本10 美元,一共花了美元,一共花了20 万美元,可谓损失惨重。万美元,可谓损失惨重。痛定思痛后,痛定思痛后,Microsoft 公司的经理们得出一个结论:如果再不公司的经理们得出一个结论:如果再不成立独立的测试部门,软件产品就不可能达到更高的质量标准。成立独立的测试部门,软件产品就不可能达到更高的质量标准。IBM 和其他有着成功的软件开发历史的公司便是效法的榜样。和其他有着成功的软件开发历史的公司便是效法的榜样。但但Microsoft 公司并不照搬公司并不照搬IBM 的经

38、验,而是有选择地采用了的经验,而是有选择地采用了一些看起来比较先进的方法,如独立的测试小组,自动测试以一些看起来比较先进的方法,如独立的测试小组,自动测试以及为关键性的构件进行代码复查等。及为关键性的构件进行代码复查等。30谢谢观赏2019-6-29Microsoft Microsoft 公司的一位开发部门主管戴夫公司的一位开发部门主管戴夫穆尔回忆说:穆尔回忆说:“我们清我们清楚不能再让开发部门自己测试了。我们需要一个单独的小组来设楚不能再让开发部门自己测试了。我们需要一个单独的小组来设计测试,运行测试,并把测试信息反馈给开发部门。这是一个伟计测试,运行测试,并把测试信息反馈给开发部门。这是一

39、个伟大的转折点。大的转折点。”但是有了独立的测试小组后,并不等于万事大吉了。自从但是有了独立的测试小组后,并不等于万事大吉了。自从Microsoft Microsoft 公司在公司在1984 1984 年与年与1986 1986 年之间扩大了测试小组后,开年之间扩大了测试小组后,开发人员开始发人员开始“变懒变懒”了。他们把代码扔到一边等着测试,忘了唯了。他们把代码扔到一边等着测试,忘了唯有开发人员自己才能阻止错误的发生、防患于未来。此时,有开发人员自己才能阻止错误的发生、防患于未来。此时,Microsoft Microsoft 公司历史上第二次灾难降临了。原定于公司历史上第二次灾难降临了。原定

40、于1986 1986 年年7 7 月月发行的发行的Mac Mac 机的机的Word 3.0Word 3.0,千呼万唤方于,千呼万唤方于1987 1987 年年2 2月问世。这套月问世。这套软件竟然有软件竟然有700 700 多出错误,有的错误可以破坏数据甚至摧毁程序。多出错误,有的错误可以破坏数据甚至摧毁程序。一下子就使一下子就使Microsoft Microsoft 名声扫地。公司不得不为用户提供升级版名声扫地。公司不得不为用户提供升级版本,费用超过了本,费用超过了100 100 万美元。万美元。从从Microsoft Microsoft 公司的教训中可知,公司内部对产品的测试需要开公司的教

41、训中可知,公司内部对产品的测试需要开发人员与独立的测试小组共同参与。发人员与独立的测试小组共同参与。31谢谢观赏2019-6-29软件测试的原则软件测试的原则 在设计测试用例时,应当包括在设计测试用例时,应当包括合理合理的的输入输入条条件和件和不合理不合理的的输入输入条件。条件。合理的输入条件是指能验证程序正确的输入合理的输入条件是指能验证程序正确的输入条件;不合理的输入条件是指异常的,临界条件;不合理的输入条件是指异常的,临界的,可能引起问题异变的输入条件。软件系的,可能引起问题异变的输入条件。软件系统处理非法命令的能力必须在测试时受到检统处理非法命令的能力必须在测试时受到检验。用不合理的输

42、入条件测试程序时,往往验。用不合理的输入条件测试程序时,往往比用合理的输入条件进行测试能发现更多的比用合理的输入条件进行测试能发现更多的错误。错误。To be continue32谢谢观赏2019-6-29软件测试的原则软件测试的原则 充分注意测试中的充分注意测试中的群集现象群集现象。在被测程序段中,若发现错误数目多,而残存错误数在被测程序段中,若发现错误数目多,而残存错误数目也比较多,这种错误群集现象。群集现象已为许多目也比较多,这种错误群集现象。群集现象已为许多程序的测试实践所证实。根据这个规律,应当对错误程序的测试实践所证实。根据这个规律,应当对错误群集的程序段进行重点测试,以提高测试投

43、资的效益。群集的程序段进行重点测试,以提高测试投资的效益。paretopareto原则:原则:测试发现的错误中测试发现的错误中80%80%很可能起源于很可能起源于20%20%的模块中。应孤立这些疑点模块重点测试。的模块中。应孤立这些疑点模块重点测试。严格执行严格执行测试计划测试计划,排除测试的随意性。,排除测试的随意性。测试之前应仔细考虑测试的项目,对每一项测试做出测试之前应仔细考虑测试的项目,对每一项测试做出周密的计划,包括被测程序的功能、输入和输出、测周密的计划,包括被测程序的功能、输入和输出、测试内容、进度安排、资源要求、测试用例的选择、测试内容、进度安排、资源要求、测试用例的选择、测试

44、的控制方式和过程等,还要包括系统的组装方式、试的控制方式和过程等,还要包括系统的组装方式、跟踪规程、调试规程,回归测试的规定,以及评价标跟踪规程、调试规程,回归测试的规定,以及评价标准等。对于测试计划,要明确规定,不要随意解释。准等。对于测试计划,要明确规定,不要随意解释。To be continue33谢谢观赏2019-6-29软件测试的原则软件测试的原则 应当对每一个测试结果做全面检查。应当对每一个测试结果做全面检查。有些错误的征兆在输出实测结果时已经明显地有些错误的征兆在输出实测结果时已经明显地出现了,但是如果不仔细地全面地检查测试结出现了,但是如果不仔细地全面地检查测试结果,就会使这些

45、错误被遗漏掉。所以必须对预果,就会使这些错误被遗漏掉。所以必须对预期的输出结果明确定义,对实测的结果仔细分期的输出结果明确定义,对实测的结果仔细分析检查,以暴露错误。析检查,以暴露错误。妥善妥善保存测试计划,测试用例,出错统计和最保存测试计划,测试用例,出错统计和最终分析报告终分析报告,为维护提供方便。,为维护提供方便。34谢谢观赏2019-6-29软件测试阶段的信息流软件测试阶段的信息流测试测试结果结果分析分析可靠性可靠性分析分析排错排错软件配置软件配置测试配置测试配置测试工具测试工具预预期期结结果果错误率数据错误率数据测试结果测试结果错误错误改正的软件改正的软件需求规格说明书需求规格说明书

46、软件设计说明书软件设计说明书被测源程序被测源程序测试计划测试计划测试用例测试用例测试驱动程序测试驱动程序35谢谢观赏2019-6-29软件测试阶段的信息流软件测试阶段的信息流 上图中,测试过程需要三类输入:上图中,测试过程需要三类输入:软件配置:包括软件需求规格说明、软件设软件配置:包括软件需求规格说明、软件设计规格说明、源代码等;计规格说明、源代码等;测试配置:包括测试计划、测试用例、测试测试配置:包括测试计划、测试用例、测试驱动程序等;驱动程序等;测试工具:测试工具为测试的实施提供某种测试工具:测试工具为测试的实施提供某种服务。例如,测试数据自动生成程序、静态服务。例如,测试数据自动生成程

47、序、静态分析程序、动态分析程序、测试结果分析程分析程序、动态分析程序、测试结果分析程序、以及驱动测试的工作台等。序、以及驱动测试的工作台等。36谢谢观赏2019-6-29软件测试阶段的信息流软件测试阶段的信息流 测试之后,用实测结果与预期结果进行比较。如果发测试之后,用实测结果与预期结果进行比较。如果发现出错的数据,就要进行调试。对已经发现的错误进现出错的数据,就要进行调试。对已经发现的错误进行错误定位和确定出错性质,并改正这些错误,同时行错误定位和确定出错性质,并改正这些错误,同时修改相关的文档。修正后的文档一般都要经过再次测修改相关的文档。修正后的文档一般都要经过再次测试,直到通过测试为止

48、。试,直到通过测试为止。通过收集和分析测试结果数据,对软件建立可靠性模通过收集和分析测试结果数据,对软件建立可靠性模型。型。如果测试发现不了错误,那么可以肯定,测试配置如果测试发现不了错误,那么可以肯定,测试配置考虑得不够细致充分,错误仍然潜伏在软件中。这考虑得不够细致充分,错误仍然潜伏在软件中。这些错误最终不得不由用户在使用中发现,并在维护些错误最终不得不由用户在使用中发现,并在维护时由开发者去改正。但那时改正错误的费用将比在时由开发者去改正。但那时改正错误的费用将比在开发阶段改正错误的费用要高出开发阶段改正错误的费用要高出4040倍到倍到6060倍。倍。37谢谢观赏2019-6-29软件测

49、试方法软件测试方法 静态测试方法静态测试方法 动态测试方法动态测试方法 白盒测试方法白盒测试方法 黑盒测试方法黑盒测试方法38谢谢观赏2019-6-29静态静态和动态和动态测试测试汽车的检查过程汽车的检查过程:踩油门踩油门看车漆看车漆打开前盖检查打开前盖检查发动汽车发动汽车听听发动机声音听听发动机声音上路行使上路行使静态测试静态测试动态动态测试测试39谢谢观赏2019-6-29静态测试方法静态测试方法 静态测试方法的基本特征是在对软件进行分析、静态测试方法的基本特征是在对软件进行分析、检查和审阅,但并不实际运行被测试的软件。检查和审阅,但并不实际运行被测试的软件。如:如:对需求规格说明书、软件

50、设计说明书、源程序对需求规格说明书、软件设计说明书、源程序做检查和审阅,包括:做检查和审阅,包括:是否符合标准和规范;是否符合标准和规范;通过结构分析、流图分析、符号执行指出软件缺陷。通过结构分析、流图分析、符号执行指出软件缺陷。To be continue40谢谢观赏2019-6-29静态测试方法静态测试方法1)人工测试:通过人工阅读分析以及评审软件人工测试:通过人工阅读分析以及评审软件的文档、程序资料等。一些设计上的逻辑错的文档、程序资料等。一些设计上的逻辑错误在机器上不易发现,需要人工复查。好的误在机器上不易发现,需要人工复查。好的人工复查,可找出人工复查,可找出3070%的编码和逻辑设

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(软件工程测试课件.pptx)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|