第1章 软件测试概述

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对于软件存在的各种问题在软件工程或软件测试中都可以 称为软件缺陷或软件故障。 软件缺陷即计算机系统或者程序中存在的任何一种破坏正 常运行能力的问题、错误,或者隐藏的功能缺陷、瑕疵。缺陷 会导致软件产品在某种程度上不能满足用户的需要。对于软件 缺陷的精确定义,通常有以下5条描述:
16
1.2.2 软件缺陷的定义
21
1.2.3 软件缺陷产生的原因
3. 技术问题
算法错误。 语法错误。 计算的精度问题。 系统结构不合理,造成系统性能问题。 接口参数不匹配,导致模块集成出现问题。
22
1.2.3 软件缺陷产生的原因
软件缺陷是由很多原因造成的,将诸多原因如规格说明书、 系统设计结果、编程的代码等归类起来比较后发现,规格说明 书是软件缺陷出现最多的地方,如下图所示。
编程代码 15% 其他 6%
规格说明书 54% 系统设计 25%
23
1.2.3 软件缺陷产生的原因
软件产品规格说明书为什么是软件缺陷存在最多的地方, 主要原因有以下几种: 由于软件产品还没有设计、开发,完全靠想象去描述系统的 实现结果,所以有些特性还不够清晰。 用户一般是非计算机专业人员,软件开发人员和用户的沟通 存在较大困难,对要开发的产品功能理解不一致。 需求变化的不一致性。用户的需求总是在不断变化的,这些 变化如果没有在产品规格说明书中得到正确的描述,容易引起 前后文、上下文的矛盾。 对规格说明书不够重视,在规格说明书的设计和写作上投入 的人力、时间不足。 没有在整个开发队伍中进行充分沟通,有时只有设计师或项 目经理得到比较多的信息。
为什么不可能做穷举测试
M1 D3 M2 M3 D2 D1
D4
M5 M6 <=20次
M4 M7
D5
循环次数 0 1 2……20 独立路径数 51+52+53+……+521≈1014 (1百万亿) 每个测试用例(考虑、执行、验证结果)5分钟 共需测试时间 10亿年
33
1.3.1 软件测试的复杂性
2. 杀虫剂现象
(1)软件未达到产品说明书中已经标明的功能;(缺少) (2)软件未达到产品说明书中虽未指出但应当达到的目标; (缺少) (3)软件出现了产品说明书中指明不会出现的错误;(多余) (4)软件功能超出了产品说明书中指明的范围;(多余) (5)软件测试人员认为软件难以理解、不易使用,或者最终用 户认为该软件使用效果不良。
讨论 来回答一个问题:如果树上有10只 鸟,开枪打死1只,还剩几只?
wenku.baidu.com
3
1.1 软件测试的背景
1.1.1 软件测试发展历史 1.1.2 软件测试的现状
4
1.1 软件测试的背景
随着软件产业的日益发展,软件系统的规模和复 杂性与日俱增,软件的生产成本和软件中存在的缺陷 故障造成的损失也大大增加,甚至会带来灾难性的后 果。软件产品不同于其他科技和生产领域,它是人脑 的高度智力化的体现,由于这一特殊性,软件与生俱 来就有可能存在着缺陷。 在开发大型软件系统的漫长过程中,面对纷繁复 杂的各种现实情况,人的主观认识和客观现实之间往 往存在着差距,开发过程中各类人员之间的交流和配 合也往往并不是尽善尽美的。
27
1.3 软件测试的复杂性与经济性
分析
1.3.1 软件测试的复杂性 1.3.2 软件测试的经济性 1.3.3 软件测试的充分性准则
28
1.3 软件测试的复杂性与经济性分析
人们通常认为软件工程中程序的开发是一个复杂 而困难的过程,需要投入大量的人力、物力和时间, 而测试程序则比较容易,不需要花费太多的精力,并 且通过测试可以找到所有的软件故障。这其实是人们 对软件开发过程理解上的一个误区。在实际的软件开 发过程中,软件测试作为现代软件开发工业的一个非 常重要的组成部分,正扮演着越来越重要的角色。随 着软件规模的不断扩大,如何在有限的条件下对被开 发的软件进行有效的测试已经成为软件工程中一个非 常关键的课题。
13
1.2.1 软件缺陷案例分析
美迪斯尼公司的狮子王游戏软件bug 美航天局火星登陆探测器缺陷
兼容性
衔接性 访问量大
-
北京奥运会门票暂停第二阶段的门票销售。 诺基亚Series40手机平台存在缺陷 金山词霸bug
漏洞
上述所有实例中的软件问题在软件工程或软件测试中都被
称为软件缺陷。
14
15
1.2.2 软件缺陷的定义
9
1.1.2 软件测试的现状
总之,国内软件行业普遍规模偏小,缺乏大型软件 产品经验,开发过程不够规范,这决定了国内软件测 试行业与一些发达国家相比还存在一定的差距。其实, 这与中国整体软件的发展水平是一致的,因为我国整 体的软件产业水平和软件发达国家的水平相比有较大 的差距,而作为软件产业重要一环的软件测试,必然 也存在着不小的差距。但是,我们在软件测试实现方 面并不比国外差,国际上优秀的测试工具,我们基本 都有,这些工具所体现的思想我们也有深刻的理解, 很多大型系统在国内都得到了很好的测试。
17
1.2.2 软件缺陷的定义
缺陷辨析1:计算器说明书一般声称该计算器将准确无误地进行加、减、乘、除运算。 如果测试人员或用户选定了两个数值后,随意按下了“+”号键,结果没有任何反应。 (LG:BUG1) 缺陷辨析2: 若在进行测试时,发现除了规定的加、减、乘、除功能之外,还能够 进行求平方根的运算,而这一功能并没有在说明书的功能中规定。(LG:BUG4) 缺陷辨析3:若在测试过程中发现,因为电池没电而导致了计算不正确,但产品说明 书未能指出在此情况下应如何进行处理。(LG:BUG2) 缺陷辨析4:假如计算器说明书指明计算器不会出现崩溃、死锁或者停止反应,而 在用户随意按、敲键盘后,计算器停止接受输入或没有了反应。(LG:BUG3) 缺陷辨析5:测试人员或最终用户发现计算器某些地方不好用,比如,按键太小、 显示屏在亮光下无法看清等。(LG:BUG5)
24
1.2.4 软件缺陷的修复费用
软件通常要靠有计划、有条理的开发过程来实现。从开始 到计划、编程、测试,到公开使用的过程中,都有可能发现软 件缺陷。软件缺陷造成的修复费用随着时间的推移呈指数级地 增长。当早期编写产品说明书时发现并修复缺陷,费用可能只 要10美元甚至更少。同样的缺陷如果直到软件编写完成开始测 试时才发现,费用可能要 100 ~ 1000 美元。如果是客户发现 的,费用可能达到数千甚至数百万美元。下图所示为软件缺陷 在不同阶段发现时错误修正后的费用情况。
第1章 软件测试概述
1.1 软件测试的背景 1.2 软件缺陷 1.3 软件测试的复杂性与经济性分析 1.4 软件测试的认识 1.5 软件测试人员的素质
1
本课教学目标

了解软件测试的背景 正确理解软件缺陷的概念 了解软件测试的发展历程及国内外现状 了解软件测试的发展趋势
2
引子:猎人打鸟
18
软件缺陷特征
● “看不到”
——软件的特殊性决定了缺陷不易看到 ●“看到但是抓不到” ——发现了缺陷,但不易找到问题发生的原因所在
19
1.2.3 软件缺陷产生的原因
1. 软件本身
文档错误、内容不正确或拼写错误。 数据考虑不周全引起强度或负载问题。 对边界考虑不够周全,漏掉某几个边界条件造成的错 误。 对一些实时应用系统,保证精确的时间同步,否则容 易引起时间上不协调、不一致性带来的问题。 没有考虑系统崩溃后在系统安全性、可靠性的隐患。 硬件或系统软件上存在的错误。 软件开发标准或过程上的错误。
5
1.1 软件测试的背景
如何防止和减少这些可能存在的问题呢?答案是进行软件 测试。测试是最有效的排除和防止软件缺陷与故障的手段,并 由此促进了软件测试理论与技术实践的快速发展。新的测试理 论、测试方法、测试技术手段在不断涌出,软件测试机构和组 织也在迅速产生和发展,由此软件测试技术职业也同步完善和 健全起来。
20
1.2.3 软件缺陷产生的原因
2. 团队工作
系统分析时对客户的需求不是十分清楚,或者和用户的沟通 存在一些困难。 不同阶段的开发人员相互理解不一致,软件设计对需求分析 结果的理解偏差,编程人员对系统设计规格说明书中某些内容 重视不够,或存在着误解。 设计或编程上的一些假定或依赖性,没有得到充分地沟通。
6
1.1.1 软件测试发展历史
早期 “调试” 为了确信自己的产品
1957年 20世纪70年代
20世纪80年代早期
Glenford Myers 《软件测试艺术》
“测试是为发现错误而执行一个程序或系统的过程”
软件质量、Bill Hetzel 《软件测试完全指南》
“测试是以评价一个程序或者系统属性为目标的任何 一种活动。测试是对软件质量的度量”
30
1.3.1 软件测试的复杂性
穷举测试会引起以下几种问题: 测试所需要的输入量太大; 测试的输出结果太多; 软件执行路径太多; 软件的规格说明书存在主观性,没有一个客观的标 准,从不同的角度来评判,软件缺陷的标准是不同的。
31
1.3.1 软件测试的复杂性
加法的测试(穷举法): 输入合理数据: 1+0= , 1+1= , 1+2= , … ,计算器能处理的数字 是 32 位 , 所 以 要 一 直 输 入 到 1+99999…99999 (共 32 个 9 ) = 。 接下来,继续输入 2+0= ,2+1= , 2+2= , … , 直 到 输 入 2+99999…99999 (共 32 个 9 ) = 。 依次类推,加法的输入还在继 续……。 输入不合理数据: 1+a , jpkl+o9 , jsfw+16 , …, 这样的测试情况可能 32 出现无穷多个。
25
1.2.4 软件缺陷的修复费用
120 100 80 60 40 20 0 编制说明书 设计阶段 编写代码 测试 发布
26
软件产品开发完毕,再进行测试的观念是有悖于生 命周期理论的。软件产品质量问题越晚发现,修复的 代价越大。
$1000+
$100
$10
$1 specification design code release
20世纪90年代
测试工具盛行 Rick D. Craig & Stefan P. Jaskiel 《系统的软件测试》
“测试是为了度量和提高被测软件的质量,对测试件 进行工程设计、实施和维护的整个生命周期过程”
7
2002年
软件测试过程模型—V模型
8
1.1.2 软件测试的现状
在我国,软件测试目前还没有形成一个真正的产业,尚处 于起步阶段,根据51testing组织得到的《2009年中国软件测 试从业人员调查报告》可以看出:软件测试从业人员所在公司 成立的时间在5年以上的比例为58%,集中分布在应用软件行 业、电信/互联网服务行业,公司多为私营或集体所有制企业, 且比例逐年增加。调查显示虽然国内IT软件开发企业对软件测 试认识比较淡薄,公司测试人员与开发人员的比例主要分布在 1:3-1:4之间,较国外1: 1比例相距甚远,但是国内IT企业也 逐步开始重视软件测试团队的建设,在IT企业中,一些知名企 业已经将软件测试作为企业未来发展的一个板块,参与2009 年调查的软件测试从业人员中,73%的人所在公司具有独立的 测试部门,专职测试人员也呈逐年上升趋势。
29
1.3.1 软件测试的复杂性
软件测试是一项细致并且需要具备高度技巧的工 作,稍有不慎就会顾此失彼,发生不应有的疏漏。针 对下面几个问题的分析充分说明了软件测试的复杂性。 1. 不可能对程序实现完全测试 在实际的软件测试工作中,完全测试是不现实的。 所谓完全的测试,就是让被测程序在一切可能的输入 情况下全部执行一遍。通常也称这种测试为“穷举测 试”。
10
1.2 软件缺陷
1.2.1 软件缺陷案例分析 1.2.2 软件缺陷的定义 1.2.3 软件缺陷产生的原因 1.2.4 软件缺陷的修复费用
11
BUG

BUG的由来

BUG
第一个BUG(1945年9月9日)

“测” “试”(拉丁语TESTUM)
12
1.2.1 软件缺陷案例分析
软件是由人编写开发的,是一种逻辑思维的产品, 尽管现在软件开发者采取了一系列有效措施,不断地 提高软件开发质量,但仍然无法完全避免软件(产品) 会存在各种各样的缺陷。软件中存在的缺陷有时会造 成相当严重的损失和灾难。 下面以4个软件缺陷的案例来说明。
相关文档
最新文档