




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七章:实现第七章:实现 朱梅霞朱梅霞 著名的软件测试失败案例 1、迪斯尼的狮子王迪斯尼的狮子王 1994年迪斯尼公司发布了第一个面向儿童的多媒体 儿童游戏LionKing Animated Storybook(狮子王动画故事书)。 尽管已经有许多其他公司在儿童游戏市场上运作多年,但是 这次是迪斯尼公司首次进军这个市场。他们进行了大力宣传 促销。结果,销售额非常可观。该游戏成为孩子们那个夏季 的“必买游戏”。后来却飞来横祸。12月26日,圣诞节后的 一天,迪斯尼公司的客户支持部电话开始响个不停。很快, 电话支持部门就淹没在愤怒的家长和哭诉玩不成游戏的孩子 们的电话狂潮之中。报纸和电视中涌现了各
2、种故事。 原因:原因:迪斯尼公司没有对市场上投入使用的各种PC机型进 行正确的测试。软件在少数系统中工作正常例如迪斯尼 的程序员用于开发游戏的系统但在大众使用的常见系统 中却不行。 爱国者导弹防御系统,爱国者导弹防御系统,1991 美国爱国者导弹防御系统是里根总统提出的主动战略防 御(即星球大战)程序的缩略版本。它首次应用在海 湾战争中对抗伊拉克飞毛腿导弹的防御战争中。尽管 关于此系统的赞誉不绝于耳,但是它确实在几次对抗 导弹战役中失利,其中一枚在沙特阿拉伯的多哈击毙 28名美国士兵。 原因:原因:存在一个软件缺陷。一个很 小的系统时钟错误积累起来就可能 拖延14小时,造成跟踪系统失去准 确度
3、。在多哈袭击战中,系统被拖 延100多小时。 千年虫问题Y2K 广泛地讲,“千年虫”还包括以下两个方面的问题: 一个是在一 些计算机系统中,对于闰年的计算和识别出现问题,不能把 2000年识别为闰年,即在该计算机系统的日历中没有2000年2月29日这一 天,而是直接由2000年2月28日过渡到了2000年3月1 日; 另一个是在一些比较老的计算机系统中,在程序中使用了数字串99(或 99/99等)来表示文件结束、永久性过期、删除等一些特殊意义的自动操 作,这样当1999年9月9日(或1999年4 月9日即1999年的第99天)来临时, 计算机系统在处理到内容中有日期的文件时,就会遇到99或99
4、/99等数字 串,从而将文件误认为已经过期或者将文件删除等错误操作,引发系统 混乱甚至崩溃等故障。 千年虫,大约千年虫,大约1974 20世纪70年代某位程序员假设他叫Dave 负责本公司的工资系统。他使用的计算机存储 空间很小,迫使他尽量节省每一个字节。Dave自 豪地将自己的程序压缩得比其他人都小。他使用 的其中一个办法是把4位数日期,例如1973缩减 为2位数,例如73。因为工资系统极度依赖数据 处理,Dave得以节省可观的存储空间。他主要认 为只有在到达2000年时程序计算00或01这样的年 份时才会出现问题。他知道这样会出问题,但是 在25年之内程序肯定会更改或升级,而且眼前的 任务
5、比现在计划遥不可及的未来更加重要。这一 天毕竟是要到来的。1995年, Dave的程序仍然 在使用,而Dave退休了,谁也不会想到进入程序 检查2000年兼容问题,更不用说去修改了。 估计世界各地更换或升级类似Dave程序以解决 原有2000年错误的费用以及超过数亿美元了。 黑盒测试黑盒测试: 如果已经知道软件应该具有的功能,可以通过如果已经知道软件应该具有的功能,可以通过 测试来检验测试来检验是否每个功能都能正常使用是否每个功能都能正常使用,这种,这种 测试称黑盒测试。也称测试称黑盒测试。也称功能功能测试。测试。 7.2.3 测试方法测试方法 白盒测试白盒测试: 如果知道软件如果知道软件内部
6、内部工作过程工作过程(程序流程图(程序流程图 VAR X : REAL) ; BEGIN IF (A1) AND (B=0) THEN X : = X / A; IF (A=2) OR (X1) THEN X : = X + 1 END 入口入口 返回返回 A1 and B=0 or A=2 or X1 and X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 图图7.5 被测试模块的流程图被测试模块的流程图 选取测试用例:选取测试用例: ,程序执行路径为:,程序执行路径为:sacbed。 它它只关注只关注判定表达式的判定表达式的值值,而,而检查不出检
7、查不出表达式中表达式中逻辑运算符逻辑运算符出现的出现的 错误错误 2. 不仅不仅每个语句至少执行一次,每个语句至少执行一次,而且每个判而且每个判 断断的的每种每种可能可能结果结果都都至少至少执行执行一次一次 入口入口 返回返回 A1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 图图7.5 被测试模块的流程图被测试模块的流程图 对于上例,选取如下测试用例:对于上例,选取如下测试用例: I. (TF 覆盖覆盖sacbd) II. (FT 覆盖覆盖sabed) 不能保证一定能查出在判断的条件中判断的条件中存在的错误。
8、 例如,在该例子中,若第二个分支X1错写成X1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 图图7.5 被测试模块的流程图被测试模块的流程图 上例中,有两个判定上例中,有两个判定 表达式,每个表达式有表达式,每个表达式有 两个条件,为了做到条两个条件,为了做到条 件覆盖,应该选取测试件覆盖,应该选取测试 数据使得数据使得a点出现如下点出现如下 结果:结果: 在在b点出现如下结果:点出现如下结果: 选取如下测试用例:选取如下测试用例: I . (满足满足A1,B=0,A=2 和和X1,执行路径为执行路径为 sac
9、bed TT) II. (满足满足A1,B0,A2 和和X1,执行路径为执行路径为 sabd FF) 入口入口 返回返回 A1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 图图7.5 被测试模块的流程图被测试模块的流程图 判定覆盖不一定包含条件覆盖,判定覆盖不一定包含条件覆盖, 条件覆盖也不一定包含判定覆盖条件覆盖也不一定包含判定覆盖 入口入口 返回返回 A1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 图图7.5 被测试模块的
10、流程图被测试模块的流程图 如:如: I (满足满足A1,B=0, A=2和和X1,执行路径执行路径 为为sacbed TT) II (满足满足A1,B0, A2和和X1,执行路径执行路径 为为sabed FT) 只满足条件覆盖,并只满足条件覆盖,并 不满足判定覆盖。不满足判定覆盖。 入口入口 返回返回 A1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 图图7.5 被测试模块的流程图被测试模块的流程图 4. 选取足够的测试用例使得同时满足判定覆盖选取足够的测试用例使得同时满足判定覆盖 和条件覆盖的要求:和条件覆盖
11、的要求: (1)每个)每个表达式的真假结果表达式的真假结果都取到都取到 (2)表达式中每个)表达式中每个条件的真假结果条件的真假结果也取到也取到 对于上例,选取如下测对于上例,选取如下测 试用例:试用例: IA=2,B=0,X=4 (满满 足足A1,B=0,A=2和和X1, 执行路径为执行路径为sacbed TT) I I A = 1 , B = 1 , X = 1 (满足满足A1,B0,A2和和 X1,执行路径为执行路径为sabd FF) 入口入口 返回返回 A1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7
12、图图7.5 被测试模块的流程图被测试模块的流程图 判定判定/条件覆盖并不比条件覆盖更强,也不会条件覆盖并不比条件覆盖更强,也不会 比判定覆盖更强。比判定覆盖更强。 5. 选取足够的测试用例,使得选取足够的测试用例,使得每个每个判定表达式判定表达式 中中条件的条件的各种各种可能可能的的组合组合都都至少至少出现出现一次一次。 对于上例,共有对于上例,共有8 种可能的条件组合:种可能的条件组合: 1)A1,B=0 TT 2)A1,B0 TF 3)A1,B=0 FT 4)A1,B0 FF 5)A=2,X1 TT 6)A=2,X1 TF 7)A2,X1 FT 8)A2,X1 FF 入口入口 返回返回 A
13、1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 图图7.5 被测试模块的流程图被测试模块的流程图 选取如下测试用例:选取如下测试用例: I (满足满足1、5组合:组合: A1,B=0,A=2, X 1 , 执 行 路 径执 行 路 径 sacbed) II (满足满足2、6组合:组合: A1,B0,A=2, X1,执行路径执行路径sabed) 入口入口 返回返回 A1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 图图7.5 被测
14、试模块的流程图被测试模块的流程图 III (满足满足3、7组合:组合:A1, B=0,A2,X1,执执 行路径行路径sabed) IV (满足满足4、8组合:组合:A1, B0,A2,X1,执执 行路径行路径sabd) 入口入口 返回返回 A1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 图图7.5 被测试模块的流程图被测试模块的流程图 注意:满足条件组合满足条件组合覆盖标准的测覆盖标准的测 试数据试数据不一定不一定能能使使程序中的程序中的每条路每条路 径径都都执行到执行到 1. 流图流图 “退化退化”的程序流
15、程图,仅描绘程序的控的程序流程图,仅描绘程序的控 制流程,不表现对数据的具体操作及循环、制流程,不表现对数据的具体操作及循环、 选择的条件。选择的条件。 6.5.1 McCabe方法方法 一个圆代表一条或多条语句;一个圆代表一条或多条语句; 一个顺序结构可以合并成一个结点;一个顺序结构可以合并成一个结点; 汇点也是结点;汇点也是结点; 一个顺序处理框序列和一个判断框可一个顺序处理框序列和一个判断框可 映射成一个结点。映射成一个结点。 复合条件:复合条件: 包含了一个或包含了一个或 多个布尔运算符多个布尔运算符 (OR、AND、 NOR等)。等)。 应把复合条件应把复合条件 分解为简单条件,分解
16、为简单条件, 每个条件对应一每个条件对应一 个结点。个结点。 如果从对程序路径的覆盖程度分如果从对程序路径的覆盖程度分 析,可以提出下面一些逻辑覆盖析,可以提出下面一些逻辑覆盖 标准:标准: 6. 点覆盖点覆盖 程序执行程序执行路径路径至少至少经过经过流图中流图中 的的每个结点一次每个结点一次 s a b d c e 1 2 3 4 5 6 7 图图7.5 对应的程序图对应的程序图 7. 边覆盖边覆盖 使得程序执行使得程序执行路径路径至少至少经过经过程序图中程序图中每条边一次每条边一次。 s a b d c e 1 2 3 4 5 6 7 图图7.5 对应的程序图对应的程序图 选取如下测试用例
17、:选取如下测试用例: I (执行路径执行路径1453) (执行路径执行路径1267) 8. 路径覆盖路径覆盖 选取足够多的测试用例,使得程序的选取足够多的测试用例,使得程序的每条可每条可 能路径能路径都都至少执行一次至少执行一次。 s a b d c e 1 2 3 4 5 6 7 图图7.5 对应的程序图对应的程序图 选取如下测试用例:选取如下测试用例: I (执行路径执行路径123) II (执行路径执行路径1267) (执行路径执行路径1453) IV (执行路径执行路径14567) 7.6.2 控制结构测试控制结构测试 (自学自学) 7.7 黑盒测试技术黑盒测试技术(功能测试)(功能测
18、试) 等价类等价类:在数学中,给定一个集合 A 和在 A 上的一个等价关系 ,则 A 中的一 个元素 a 的等价类是在 A中等价于 a 的所有元素的子集: a = y|y ay A 等价关系等价关系:设是集合A上的一个二元关系,若R满足: 自反性:任意x A, (x, x) ; 对称性:任意x, y A, (x, y) (y, x) ; 传递性:任意x, y, z A, (x, y) (y, z ) ) (x, z) 则称是定义在A上的一个等价关系。设是一个等价关系,若(x,y) ,则称x 等价于y,记作x xy. . 7.7.1 等价划分(等价类划分)等价划分(等价类划分) 例子:等价关系
19、对称性: 任意x, y A, (x, y) (y, x) ; 传递性:任意x, y, z A, (x, y) (y, z ) ) (x, z) (2)假设a表示一辆红颜色的轿车,则 a=y|y是X中一辆红颜色的轿车 等价类划分的思想等价类划分的思想: 如果将所有可能的输入数据(有效的和无效如果将所有可能的输入数据(有效的和无效 的)的)划分为若干个等价类划分为若干个等价类,就可以假定用每一,就可以假定用每一 个个等价类中的代表值等价类中的代表值作为测试用例来进行测试作为测试用例来进行测试 时,时,等价于用该类中所有值等价于用该类中所有值进行了测试。进行了测试。 有效等价类:有效等价类:合理的、
20、有意义的输入数据所构成的集合 无效等价类:无效等价类:不合理的、无意义的输入数据所构成的集合 用等价类划分设计测试用例时,主要分两步:用等价类划分设计测试用例时,主要分两步: 划分等价类划分等价类、确定测试用例确定测试用例。 1)等价类划分等价类划分 划分等价类需要经验,以下给出一些规则:划分等价类需要经验,以下给出一些规则: A如果如果某输入条件规定了输入的范围某输入条件规定了输入的范围,那么可以,那么可以 划分为划分为一个有效的一个有效的等价类和等价类和两个无效的两个无效的等价类。等价类。 如如X的值的输入范围是的值的输入范围是1,99,那么测试,那么测试X时,可以这样划分:有效时,可以这
21、样划分:有效 等价类为等价类为1,99,无效等价类为(,无效等价类为(-,1)和()和(99,+)。)。 B 如果输入条件规定了输入值的集合,或规定了如果输入条件规定了输入值的集合,或规定了“必须如必须如 何何”的条件,则可以确定的条件,则可以确定一个有效一个有效等价类和等价类和一个无效一个无效等等 价类。价类。 例如:例如:“标识符是一字母打头的标识符是一字母打头的串。串。” 则则字母打头的字母打头的-为一个有效等价类为一个有效等价类, 而而其余的其余的-为一个无效等价类为一个无效等价类. C如果某个输入条件如果某个输入条件规定了一组可能的值规定了一组可能的值,且程序可以,且程序可以 对不同
22、的值作出不同的处理对不同的值作出不同的处理,那么可以,那么可以为每种值确定为每种值确定 一个有效一个有效的等价类,同时的等价类,同时还有一个无效还有一个无效等价类。等价类。 如,如,“职称职称”这个量可能的值是:教授、副教授、讲师、助教。这个量可能的值是:教授、副教授、讲师、助教。 那么可以这样划分:四类有效等价类分别为教授、副教授、讲师、那么可以这样划分:四类有效等价类分别为教授、副教授、讲师、 助教,无效等价类为四种职称以外的所有值。助教,无效等价类为四种职称以外的所有值。 2)确定测试用例确定测试用例 A给给每个等价类规定一个每个等价类规定一个唯一的编号唯一的编号; B设计一个新的测试用
23、例,使其设计一个新的测试用例,使其尽可能多尽可能多地覆盖地覆盖 未未被覆盖过的被覆盖过的有效有效等价类等价类。重复重复此步,直至所有有效此步,直至所有有效 等价类被覆盖;等价类被覆盖; C设计一个新的测试用例,使其设计一个新的测试用例,使其覆盖而覆盖而且只且只覆盖覆盖一个一个尚尚 未被覆盖未被覆盖的的无效无效等价类。重复此步,直到所有无效等价等价类。重复此步,直到所有无效等价 类被覆盖。类被覆盖。 通常程序发现一类错误后,就报出错信息,不再检查其它类错误,通常程序发现一类错误后,就报出错信息,不再检查其它类错误, 所以设计测试用例时,一次只覆盖一个无效等价类。所以设计测试用例时,一次只覆盖一个
24、无效等价类。 实例:一个把数字串变成整数的函数。运行程序的计算机字实例:一个把数字串变成整数的函数。运行程序的计算机字 长长16位,用位,用二进制补码二进制补码表示整数。函数由表示整数。函数由PASCAL语言编写。语言编写。 function strtoint ( dstr: shortstr ): integer type shortstr = array1.6 of char; /字符串字符串6位位/ 原码: 将最高位作为符号位(以0代表正,1代表负),其余各位代表数值本身的绝对值(以二进制表示)。 反码: 一个数如果为正,则它的反码与原码相同;一个数如果为负,则符号位为1,其余各位是对原
25、码取反。 补码: 正数为原码,负数为求反码再加1 原码 反码 补码 70000 0111 0000 0111 0000 0111 -7 1000 0111 1111 1000 1111 1001 利用溢出,我们可以将减法变成加法。对于十进制数,如果从9得到结果5,可以用减法: 9-4=5 因为4+6=10,我们将6作为4的补数,将上式的减法改写为加法:9+6=15 去掉高位1(也就是减去10),得到结果5. 题外话:16位二进制补码的最小负整数为什么是-32768? 原码: 负整数集合-32767,-0, 正整数集合0,32767;总共2的16次方个编码方式; 负整数集合1111 1111 1
26、111 1111, 1000 0000 0000 0000 正整数集合0000 0000 0000 0000, 0111 1111 1111 1111 补码: 负整数集合-32767,-0, 正整数集合0,32767;总共2的16次方个编码方式; 负整数集合1000 0000 0000 0001, 0000 0000 0000 0000 正整数集合0000 0000 0000 0000, 0111 1111 1111 1111 由此可见+0和-0在补码系统中的编码是一样的,因此补码比原码多了一 个编码出来,即1000 0000 0000 0000,于是人为的规定这个补码为-32768 有效输入
27、的等价类有:有效输入的等价类有: (1)16个数字字符组成的数字串(最高位数字不为零);个数字字符组成的数字串(最高位数字不为零); 如:如: 0 , 999999 (2)最高位数字是零的数字串;)最高位数字是零的数字串; 如:如:“012345”“”“001234”“”“000123”“”“000012”“”“000001”“”“000000” (3)最高位数字左邻是负号的数字串;)最高位数字左邻是负号的数字串; 如:如:“12345”“”“-01234”“”“-00123”“”“-00012”“”“-000001” 无效输入的等价类有:无效输入的等价类有: (4)空字符串(全是空格);如)
28、空字符串(全是空格);如“ ”; (5)左部填充的字符既不是零,又不是空格;)左部填充的字符既不是零,又不是空格; 如:如:“A12345” (6)最高位数字右面由数字和空格混合而成;最高位数字右面由数字和空格混合而成; 如:如:“123 45” (7)最高位数字右面由数字和其他字符混合而成;)最高位数字右面由数字和其他字符混合而成; 如:如:“12A345” (8)负号与最高位数字之间有空格;负号与最高位数字之间有空格; 如:如:“- 1234” 合法输出的等价类有:合法输出的等价类有: (9)在计算机能表示的最小负整数和零之间的负整数;)在计算机能表示的最小负整数和零之间的负整数; 如:如
29、: -32768 , 0 ) (10)零;)零; (11)在零和计算机能表示的最大正整数之间的正整数;)在零和计算机能表示的最大正整数之间的正整数; 如:如: (0 , 32767 非法输出的等价类有:非法输出的等价类有: (12)比计算机能表示的最小负整数还小的负整数;)比计算机能表示的最小负整数还小的负整数; 如:如:“32769” (13)比计算机能表示的最大正整数还大的正整数;)比计算机能表示的最大正整数还大的正整数; 如:如:“123456” (14) 无效输入无效输入 ,如:,如:“123 45” (15)负号位置错,如:)负号位置错,如:“- 12” (16)填充错,如:)填充错
30、,如:“a1aaa9”. 根据划分的等价类,设计出测试方案根据划分的等价类,设计出测试方案11个:个: (1)16个数字组成的字符串;个数字组成的字符串; 输入:输入: 1 预期的输出:预期的输出:1 (2)最高位数字是零的数字串;最高位数字是零的数字串; 输入:输入:000001 预期的输出:预期的输出:1 (3)负号与最高位数字相邻;)负号与最高位数字相邻; 输入:输入:00001 预期的输出:预期的输出:1 (4)最高位数字是零的特例;)最高位数字是零的特例; 输入:输入:000000 预期的输出:预期的输出:0 (5)太小的负整数;)太小的负整数; 输入:输入:47561 预期的输出:
31、错误无效输入预期的输出:错误无效输入 (6)太大的正整数;)太大的正整数; 输入:输入:132767 预期的输出:错误无效输入预期的输出:错误无效输入 (7)空字符串;)空字符串; 输入:输入: 预期的输出:错误没有数字预期的输出:错误没有数字 (8)字符串左部字符既不是零又不是空格;)字符串左部字符既不是零又不是空格; 输入:输入:AAAAA1 预期的输出:错误非数字预期的输出:错误非数字 (9)最高位数字后面有空格;)最高位数字后面有空格; 输入:输入:1 2 预期的输出:错误无效输入预期的输出:错误无效输入 (10)最高位数字后面有其他字符;)最高位数字后面有其他字符; 输入:输入:1A
32、AA23 预期的输出:错误无效输入预期的输出:错误无效输入 (11)负号和最高位数字之间有空格;负号和最高位数字之间有空格; 输入:输入: 12 预期的输出:错误负号位置错。预期的输出:错误负号位置错。 程序通常在处理边缘情况时容易出现错误,如等价类程序通常在处理边缘情况时容易出现错误,如等价类 与等价类之间的边界值。与等价类之间的边界值。 所以在设计测试用例时,使用所以在设计测试用例时,使用正好等于正好等于、正好大于正好大于、 正好小于边界值正好小于边界值的数据进行测试,发现程序错误的概率的数据进行测试,发现程序错误的概率 较大。较大。 7.7.2 边界值分析边界值分析 边界值分析测试法属黑
33、盒测试。边界值分析测试法属黑盒测试。 在实际设计测试方案时,常常在实际设计测试方案时,常常结合使用结合使用等价划等价划 分和边界值分析分和边界值分析两种技术,把一些等价类的边两种技术,把一些等价类的边 界值作为测试用例进行测试。界值作为测试用例进行测试。 上例中设计了上例中设计了11个测试用例,还应该用边界值分个测试用例,还应该用边界值分 析补充测试用例:析补充测试用例: (12)使输出)使输出刚好等于最小刚好等于最小负整数;负整数; 输入:输入:32768 预期的输出:预期的输出:32768 (13)使输出)使输出刚好等于最大刚好等于最大的正整数;的正整数; 输入:输入: 32767 预期的
34、输出:预期的输出:32767 (14)使输出)使输出刚刚小于最小刚刚小于最小的负整数;的负整数; 输入:输入:32769 预期的输出:错误无效输入预期的输出:错误无效输入 (15)使输出)使输出刚刚大于最大刚刚大于最大正整数;正整数; 输入:输入: 32768 预期的输出:错误无效输入预期的输出:错误无效输入 :8180/index.jsp 软工空间首页的软工服务栏里有测试服务 一栏,大家编了Java或C+程序后,可以用 它里面提供的一系列工具进行测试 7.8 调试调试 7.8.1 调试过程调试过程 调试是在测试发现错误之后排除错误的过程。调试是在测试
35、发现错误之后排除错误的过程。 测试用例测试用例 结果结果 调试调试 附加测试附加测试 纠正且回归测试纠正且回归测试 已识别原因已识别原因 被怀疑原因被怀疑原因 1. 蛮干法蛮干法:打印内存的内容,从中寻找错误的线索,是效率打印内存的内容,从中寻找错误的线索,是效率 最低的程序调试方法。最低的程序调试方法。 2. 回溯法回溯法:从发现问题的程序段开始人工地往回追踪分析程从发现问题的程序段开始人工地往回追踪分析程 序代码,直到找到错误。序代码,直到找到错误。 3. 原因排除法原因排除法 包括:对分查找法、归纳法、演绎法包括:对分查找法、归纳法、演绎法 7.8.2 调试途径调试途径 7.9 软件可靠
36、性软件可靠性(了解,可自学)(了解,可自学) 1. 软件可靠性定义软件可靠性定义 是程序在给定的是程序在给定的时间间隔时间间隔内,内,按照按照规格说明书的规定规格说明书的规定成成 功功地运行的地运行的概率概率。 7.9.1 基本概念基本概念 2. 软件的可用性软件的可用性 对故障可修复系统,应同时使用对故障可修复系统,应同时使用可靠性可靠性和和可用性可用性来衡量。来衡量。 软件可用性软件可用性是:程序在给定的是:程序在给定的时间点时间点,按照规格说明书的规,按照规格说明书的规 定,成功地运行的概率。定,成功地运行的概率。 可靠性和可用性的区别可靠性和可用性的区别是:可靠性是在是:可靠性是在0到
37、到t时间间隔内,系统时间间隔内,系统 没有失效的概率。而可用性是在没有失效的概率。而可用性是在t时刻,系统是正常运行的概率。时刻,系统是正常运行的概率。 如果在如果在t时刻,系统是可用的,则有两种可能:时刻,系统是可用的,则有两种可能: 1)在)在0到到t时刻这段时间内,系统一直没有失效(可靠);时刻这段时间内,系统一直没有失效(可靠); 2)在)在0到到t时刻这段时间内失效过,但是系统修复后运行到时刻这段时间内失效过,但是系统修复后运行到t时刻时刻 时情况良好。时情况良好。 如果在一段时间内,软件系统故障停机时间分别为:如果在一段时间内,软件系统故障停机时间分别为: td1 , td2 ,
38、,正常运行时间分别为:正常运行时间分别为:tu1 , tu2 , ,则系统的则系统的 稳态可用性定义为:稳态可用性定义为: downup up ss TT T A 其中其中Tup= tui , Tdown= tdi 如果引入系统平均无故障时间如果引入系统平均无故障时间MTTF和平均维修时间和平均维修时间 MTTR的概念,则上面公式的系统稳态可用性变成:的概念,则上面公式的系统稳态可用性变成: MTTRMTTF MTTF A ss MTTR是修复一个故障平均需要用的时是修复一个故障平均需要用的时 间,取决于维护人员的技术水平和对系统熟悉程度。间,取决于维护人员的技术水平和对系统熟悉程度。 MTT
39、F是系统按照规格说明书规定成是系统按照规格说明书规定成 功地运行的平均时间,取决于系统中潜伏的错误数量。功地运行的平均时间,取决于系统中潜伏的错误数量。 1. 符号符号 估算估算MTTF时使用到下列符号时使用到下列符号 ET测试之前程序中故障总数;测试之前程序中故障总数; IT程序长度(机器指令总数);程序长度(机器指令总数); 测试(包括调试)时间;测试(包括调试)时间; Ed() 在在0至至期间发现的错误数;期间发现的错误数; Ec() 在在0至至期间改正的错误数;期间改正的错误数; 7.9.2 估算平均无故障时间估算平均无故障时间MTTF的方法的方法 2. 基本假定基本假定 可作出下列假
40、定:可作出下列假定: 1)单位长度里的故障数单位长度里的故障数ET/ IT近似为常数近似为常数。一些统计。一些统计 数字表明,通常有:数字表明,通常有:0.510-2ET/ IT210-2。 2)失效率正比于软件中剩余的(潜藏的)故障数,而失效率正比于软件中剩余的(潜藏的)故障数,而 平均无故障时间平均无故障时间MTTF与剩余的故障数成反比与剩余的故障数成反比。 3)调试过程没有引入新的故障调试过程没有引入新的故障,即,即Ec()= Ed()。 由于系统剩余的故障数为:由于系统剩余的故障数为: Er() = ET- Ec() 所以单位长度程序中剩余的故障数为:所以单位长度程序中剩余的故障数为:
41、 r () = ET / IT - Ec()/ IT 3. 估算平均无故障时间估算平均无故障时间MTTF 因为平均无故障时间与单位长度程序中剩余的故障因为平均无故障时间与单位长度程序中剩余的故障 数数r ()成反比,所以:成反比,所以: / )(/ 1 )( TcTT r IEIEK MTTF 其中:其中:K为常数,它的值根据经验选取,为常数,它的值根据经验选取, 经典值是经典值是200。 由上式变换后得到程序中改正的错误数:由上式变换后得到程序中改正的错误数: 根据对软件平均无故障时间的要求,可以估计根据对软件平均无故障时间的要求,可以估计 需要改正多少个错误后,测试工作就可以结束。需要改正
42、多少个错误后,测试工作就可以结束。 MTTFK I EE T Tc 4. 估计故障总数估计故障总数ET的方法的方法 1)植入故障法植入故障法 假设人为地植入的故障数为假设人为地植入的故障数为Ns,经过一段时间的测试之后发现经过一段时间的测试之后发现 ns个植入的故障,同时还发现了个植入的故障,同时还发现了n个原有的故障,则可以估计出程个原有的故障,则可以估计出程 序中原有的故障总数:序中原有的故障总数: s s N n n N 其中:其中: 是故障总数是故障总数ET的估计值;的估计值; N 植入错误法人为植入的错误与原有程序错误可能植入错误法人为植入的错误与原有程序错误可能 性质很不相同,发现它们的难度也不同,用此法性质很不相同,发现它们的难度也不同,用此法 估计的错误数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年乡村医生考试题库:农村居民健康管理服务规范与急救技能试题
- 2025年征信考试题库:征信市场监管创新实践与挑战试题
- 2025年物流师技能鉴定模拟试卷:物流项目管理与执行模拟题
- 2025年专升本艺术概论模拟试卷(艺术批评理论与实践)-艺术批评理论在艺术批评研究中的应用试题
- 语文园地二-2022-2023学年三年级语文下册课时练分层作业(部编版)
- 榆林职业技术学院《三维动画制作》2023-2024学年第二学期期末试卷
- 广东省肇庆市本年度(2025)小学一年级数学统编版阶段练习(下学期)试卷及答案
- 外贸单证考试试题及答案
- 粤牌考试试题及答案
- 公务员送分面试题及答案
- 河北省唐山市、廊坊市2025届高三第二次模拟演练语文试卷(含答案)
- 民法典知识竞赛课件
- 绞车工考试题及答案
- 2025年度“基层法治建设年”活动实施方案
- MOOC 大学英语听说译-河南理工大学 中国大学慕课答案
- 外科学试题库及答案(共1000题)
- D502-15D502等电位联结安装图集
- 2022年本科教学工作合格评估整改工作方案
- 广东省建设工程造价咨询服务收费项目和收费标准表[粤价函(2011)742号]
- 小学二年级三位数竖式计算800题
- DL/T 5203-2005《火力发电厂煤和制粉系统防爆设计技术规程》简介
评论
0/150
提交评论