当前位置:文档之家› 软件测试背景

软件测试背景

替换字符串长度未 作限定: Word2000中,如果 替换字符串长度过 长,则会引起程序 崩溃。
软件错误和软件失效的案例
爱国者导弹防御系统, 1991
美国爱国者导弹防御系统首次被用在第一次海湾战争对抗 伊拉克飞毛腿导弹的防御作战中,总体上看效果不错, 赢得各界的赞誉。但它还是有几次失利,没有成功拦截 伊拉克飞毛腿导弹,其中一枚在沙特阿拉伯的多哈爆炸 的飞毛腿导弹造成28名美国士兵死亡。分析专家发现, 拦截失败的症结在于一个软件缺陷,当爱国者导弹防御 系统的时钟累计运行超过14小时后,系统的跟踪系统就 不准确。在多哈袭击战中,爱国者导弹防御系统运行时 间已经累计超过100多个小时,显然那时系统的跟踪系 统已经很不准确,从而造成这种结果。
课程目的
了解软件测试基本过程 了解软件测试的管理方法 掌握软件测试用例设计方法
掌握junit、selenium等测试工具的使用
掌握bugfree测试管理工具的使用
推荐书目
软件测试,paul C.Jorgensen机械工业出版社 (2003-07) 软件测试的艺术,梅尔斯,机械工业出版社 (2006-01) 软件测试基础,(美)paul ammann,郁莲 译,机械工业出版社 (2010-10出版) 软件测试案例与实践教程 古乐,史九林等清华大学出版社 (2007-02出版) 软件测试技术大全,陈能技,人民邮电出版社 (2008-06出版) 软件性能测试与LoadRunner实战,于涌,人民邮电出版社 (2008-06出版)
B.Beizer从软件测试观点出发,把软件错误分为5类。
1.功能错误
(1)规格说明错误:规格说明可能不完全,有二义性 或自身矛盾。 (2)功能错误:程序实现的功能与用户要求的不一致。 这常常是由于规格说明中包含错误的功能、多余的功 能或遗漏的功能所致。 (3)测试错误:软件测试的设计与实施发生错误。软 件测试自身也可能发生错误。 (4)测试标准引起的错误:对软件测试的标准要选择 适当,若测试标准太复杂,则导致测试过程出错的可 能就大。
软件缺陷构成
其他 10%
编写代码 7%
设 计 27%
软件产品说明 书(需求) 56%
软件缺陷产生的原因分布
软件缺陷产生的原因
1、用户需求和说明书没有被很好的理解
分析人员不能100%理解用户需求,写作水平不高
80
2、软件设计的不合理
设计人员不能100%理解需求文档,设计水平不高
64
51.2
3、代码(算法,流程) 存在错误
软件缺陷产生的原因
2.团队工作


1)系统需求分析时对客户的需求理解不清楚,或者和用户的沟通存 在一些困难。 2)不同阶段的开发人员相互理解不一致。例如,软件设计人员对需 求分析的理解有偏差,编程人员对系统设计规格说明书某些内容重 视不够,或存在误解。 3)对于设计或编程上的一些假定或依赖性,相关人员没有充分沟通。
软件缺陷分类-软件开发阶段
3.编码错误
编码过程中的错误是多种多样的 ,大体可归 为以下几种 :数据说明错、数据使用错、计算错、 比较错、控制流错、界面错、输入/输出错,及其 它的错误。 在不同的开发阶段,错误的类型和表现形式 是不同的,故应当采用不同的方法和策略来进行检 测。
软件缺陷分类-按性质和范围分类
1%以下:24% 1%-5%:34% 5%-10%:22%
10%-30%:16%
30%以上:4%
微软的项目人员比例

Windows2000 Team


Web Matrix Team





程序经理 450 开发人员 900 测试人员 1800 技术支持人员 600 技术传播人员 1120 本地化人员 110 培训人员 115 文档人员 100 市场人员 100 内部IT 50 合计 5345
软件错误和软件失效的案例
后来证实,迪斯尼公司没有对当时市场上的各种PC机 型进行完整的系统兼容性测试,只是在几种PC机型上 进行了相关测试。所以,这个游戏软件只能在少数系 统中正常运行,但在大众使用的其他常见系统中却不 能正常安装和运行。
软件错误和软件失效的案例
在 80 年代初期,Microsoft 公司的许多软件产品出现
软件错误和软件失效的案例
美迪斯尼公司的狮子王游戏软件bug 1994年圣诞节前夕,迪斯尼公司发布了第一个面向儿童的 多媒体光盘游戏“狮子王童话”。尽管在此之前,已经 有不少公司在儿童计算机游戏市场上运作多年,但对迪 斯尼公司而言,还是第一次进军这个市场。由于迪斯尼 公司的著名品牌和事先的大力宣传及良好的促销活动, 结果,市场销售情况非常不错,该游戏成为父母为自己 孩子过圣诞节的必买礼物。 但结果却出人意料,12月 26日,圣诞节后的第一天,迪斯 尼公司的客户支持部电话开始响个不停,不断有人咨询、 抱怨为什么游戏总是安装不成功,或没法正常使用。很 快,电话支持部门就淹没在愤怒家长的责问声和玩不成 游戏孩子们的哭诉之中,报纸和电视开始不断报道此事

软件缺陷:是存在于软件(文档、数据、程序)之中的 那些不希望或不可接受的偏差。其结果是软件运行于某 一特定条件时出现软件故障,这时称软件缺陷被激活。
软件故障:是指软件运行过程中出现的一种不希望或不 可接受的内部状态。此时若无适当措施(容错)加以及 时处理,便产生软件失效。 软件失效:是指软件运行时产生的一种不希望或不可接 受的外部行为结果。
软件缺陷分类-按性质和范围分类
2.系统错误
(1)外部接口错误:外部接口指如终端、打印机、通信线路等系 统与外部环境通信的手段。所有外部接口之间,人与机器之间的 通信都使用形式的或非形式的专门协议。如果协议有错,或太复 杂,难以理解,致使在使用中出错。此外还包括对输入/输出格 式错误理解,对输入数据不合理的容错等等。 (2)内部接口错误:内部接口指程序之间的联系。它所发生的错 误与程序内实现的细节有关。例如,设计协议错、输入/输出格 式错、数据保护不可靠、子程序访问错等。 (3)硬件结构错误 :这类错误在于不能正确地理解硬件如何工作 。 例如,忽视或错误地理解分页机构、地址生成、通道容量、I/O 指令、中断处理、设备初始化和启动等而导致的出错。 (4)操作系统错误:这类错误主要是由于不了解操作系统的工作 机制而导致出错。当然,操作系统本身也有错误,但是一般用户 很难发现这种错误。
程序经理 2 开发组长/架构师: 1 开发人员: 7 测试组长 1 测试人员 13 合计 24
软件错误和软件失效的案例
文本文件保存错误: 在WindowsXP桌面上新建 一个文本文档,输入 “联通”两个字,并保 存退出。
退出后再次打开这个文 本文件时,刚才输入的 内容变成了乱码。
软件错误和软件失效的案例
3.技术问题

1)算法错误:在给定条件下没能给出正确或准确的结果。 2)语法错误:对于编译性语言程序,编译器可以发现这类问题;但 对于解释性语言程序,只能在测试运行时发现。 3)计算和精度问题:计算的结果没有满足所需要的精度。 4)系统结构不合理、算法选择不科学,造成系统性能低下。 5)接口参数传递不匹配,导致模块集成出现问题。
软件缺陷分类-按性质和范围分类
(5)软件结构错误:由于软件结构不合理或不清晰而引起的错误。 这种错误通常与系统的负载有关,而且往往在系统满载时才出现。 这是最难发现的一类错误。例如,错误地设置局部参数或全局参 数;错误地假定寄存器与存储器单元初始化了;错误地假定不会 发生中断而导致不能封锁或开中断;错误地假定程序可以绕过数 据的内部锁而导致不能关闭或打开内部锁;错误地假定被调用子 程序常驻内存或非常驻内存等等,都将导致软件出错。 (6)控制与顺序错误:这类错误包括:忽视了时间因素而破坏了 事件的顺序;猜测事件出现在指定的序列中;等待一个不可能发 生的条件;漏掉先决条件;规定错误的优先级或程序状态;漏掉 处理步骤;存在不正确的处理步骤或多余的处理步骤等。 (7)资源管理错误:这类错误是由于不正确地使用资源而产生的。 例如,使用未经获准的资源;使用后未释放资源;资源死锁;把 资源链接在错误的队列中等等。
软件可靠性问题
因软件设计故障与因计算机硬件设计故障而引发的系统
失效的比例大约是:10:1 运行软件的驻留故障密度(每千行代码的故障数目): ——要求很高的关键财务或财产软件为:每千行代码 1~10个故障 ——关键的生命软件为:每千行代码0.01~1个故障 IEEE将软件可靠性定义为:系统在特定环境下,在给定 的时间内无故障运行的概率。 软件可靠性是对软件在设计、开发以及所预定的环境下 具有能力的置信度的一个度量,是衡量软件质量的主要 参数之一。而软件测试则是保证软件质量、提高软件可 靠性的最重要手段。
软件缺陷分类-软件开发阶段
2.设计错误
这是在设计阶段产生的错误,它使系统的设计与需求规格说 明中的功能说明不相符。它们又可以细分为: (1)设计不完全错误:某些功能没有被设计,或设计得不 完全。 (2) 算法错误:算法选择不合适。主要表现为算法的基本 功能不满足功能要求、算法不可行或者算法的效率不符合 要求。 (3) 模块接口错误 :模块结构不合理 ;模块与外部数据 库的界面不一致,模块之间的界面不一致。 (4) 控制逻辑错误 :控制流程与规格说明不一致 ;控制 结构不合理。 (5) 数据结构错误:数据设计不合理;与算法不匹配;数 据结构不满足规格说明要求。
软件缺陷定义(Defect)
IEEE729-1983对缺陷有一个标准的定义:
从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛 病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能
的失效或违背。
软件缺陷是什么
软件出错机理可描述为:软件错误,软件缺陷,软件故
障,软件失效。

软件错误:是指在软件生存期内的不希望或不可接受的 人为错误,其结果是导致软件缺陷的产生。
相关主题