软件测试技术介 绍.ppt
《软件测试技术介 绍.ppt》由会员分享,可在线阅读,更多相关《软件测试技术介 绍.ppt(118页珍藏版)》请在麦多课文档分享上搜索。
1、软 件 测 试 技 术 介 绍,上海创景计算机系统有限公司 ,内 容,1. 软件测试基本概念 1.1 为何软件测试 1.2 什么是软件测试 1.3 软件测试的作用 1.4 软件测试公理,2. 软件测试技术介绍 2.1 静态测试技术 2.2 静态分析 2.3 动态测试技术,3. 软件生命周期中的软件测试 3.1 软件测试过程模型 3.2 软件开发过程 3.3 单元测试 3.4 集成测试 3.5 系统测试 3.6 测试进入条件,4. 软件测试管理,随着软件功能越来越强、复杂程度越来越高,导致致命故障越来越多。,1.1 为何软件测试?,“The day the software crashed”-福
2、布斯杂志 Tandem - 金融交易系统宕机; AT&T - 电话系统; Chemical bank-双倍借贷给客户; IRS 向纳税人征收680亿美金税金; Patriots & Scuds - 爱国者导弹故障; Bank of New York - 236亿美金; Ariana5-火箭故障; DSC Communications - 电话系统故障; ,软件错误开销: 美国航空公司 储运损耗每分钟损失2万美金; 1989 - 12小时储运损耗 1994 - 5小时储运损耗 飞行系统故障 - $50,000,000损失; Boeing - 每分钟损失5万美金; 美国联邦快递 - 每分钟损失16
3、.7万美金。,1.1 为何软件测试?,2018年10月14日,5,历史上: 1973年W.Hetzel指出测试是对程序或系统能否完成特定任务建立信心的过程。 异议:我们不应该只是为了对一个程序建立信心或显示信心而去作测试。,1.2 什么是软件测试?,修正观点: 测试目的在于鉴定程序或系统的属性或能力的各种活动,它是软件质量的一种度量。,1983年IEEE: 使用人工或自动手段来运行某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清结果与实际结果之间的差别。,2018年10月14日,6,软件测试的重要性软件设计与编码过程是引入错误的过程,而软件测试是排除软件错误的过程。,1.3 软件测试
4、的作用,2018年10月14日,7,确定需求,设计,编码,测试,排除,故障隔离,故障分类,改正,故障,故障,故障,故障,故障等级,失效,通过测试排除软件故障,1.3 软件测试的作用,2018年10月14日,8,1.3 软件测试的作用,通过测试排除软件故障,2018年10月14日,9,测试只能证明错误的存在,而不能表明程序中没有错误。,1.4 软件测试公理,2. 测试的两个作用是:确定程序中缺陷的存在;有助于判断该程序在实际上是否可用。,3. 软件测试最困难的问题之一是知道何时停止测试(When to stop testing? ),4. 自己测试自己的程序是不可能的。,5. 当一个软件被测出的
5、缺陷数目增加时,更多的未被发现的缺陷存在的概率也随之增加。,2018年10月14日,10,一个好的测试用例应当是一个对以前未被发现的缺陷有高发现率的用例,而不是一个表明程序工作正确的用例。,1.4 软件测试公理,7. 要对有效的和无效的输入状况写测试用例。(测试用例要兼顾有效与无效的输入),8. 每个测试用例必备的部分是描述预期的输出。,9. 像做其它事情一样,测试在其一开始就必须要有一个目标。,测试技术,静态测试,代码审查代码走查 桌面检查 技术评审 静态分析,控制流分析数据流分析 接口分析 表达式分析,动态测试,黑盒测试技术白盒测试技术,2. 软件测试技术介绍,动态测试,控制流覆盖数据流覆
6、盖,黑盒测试技术白盒测试技术,功能测试 等价类划分 边值分析 因果图 随机测试 猜错法,2. 软件测试技术介绍,语句覆盖分支覆盖路径覆盖错误处理路径,全定义使用路径全使用路径全定义路径数据流异常状态图,2018年10月14日,13,不执行程序代码,通过审查文档、代码的方式查找软件中的缺陷。,2.1 静态测试技术,76%以上错误; 不需特别条件,容易开展; 在发现了错误的同时也就定位错误,不需额外的工作定位错误; 对评审人员要求高; 可借助于工具进行。,2018年10月14日,14,静态测试方法 技术评审 软件需求分析与设计; 对需求规格文档、设计文档进行非二义性、平衡性、一致性检查。 代码走查
7、(Walkthrough) 设计测试数据人工方式执行代码。 代码审查(Code Inspection),2.1 静态测试技术,2018年10月14日,15,代码审查(Code Inspection),2.1 静态测试技术,代码审查测试内容: 代码与设计的一致性; 代码对标准的遵循性; 代码的逻辑表达的正确性; 代码结构的合理性。,代码审查实施 审查会 代码审查单,2018年10月14日,16,静态分析 静态分析是对被测软件进行特性分析的一些方法的总称; 静态分析的查错功能是编译系统所不能替代的;,2.2 静态分析,静态分析可辅助代码评审人员: 发现可能的程序欠缺; 找到潜伏着问题的根源; 提供
8、间接涉及程序欠缺的信息; .,2018年10月14日,17,静态分析方法,2.2 静态分析,编码规则检查 控制流分析 数据流分析 软件度量分析,2018年10月14日,18,改善代码质量 避免编程语言本身在使用过程中容易造成的误用; 提高开发速度: 开发人员不需要总是从一些基本原则出发进行决策; 增进团队精神: 有助于减少团队内部在一些小事情上的不必要的争论,使团队成员更易于阅读和维护其他成员的代码; 在正确的方向上取得一致: 使开发人员放开手脚,在有意义的方向上发挥创造力;,2.2.1 为什么进行编码规则检查,2018年10月14日,19,C语言本身容易出错的问题 词法”陷阱“ 语法”陷阱“
9、 语义”陷阱“ 连接 库函数 预处理器 可移植性缺陷,2.2.1 编码规则检查改善代码质量,2018年10月14日,20,容易和混淆; &和|容易和&和|混淆; 词法分析中的“贪心法” y = x/*p /* p指向除数 */ 会被编译器理解为/*p /* p指向除数 */为注释 字符与字符串 C语言中的单引号和双引号含义不同,易错用带来问题; s表示一个整数; “s”表示一个字符指针;,2.2.1 编码规则检查词法“陷阱”,2018年10月14日,21,运算符的优先级问题; 注意作为语句结束标注的分号 If (a b)big a; If (a b);big a; “悬挂”else的问题; s
10、witch语句遗漏break;,2.2.1 编码规则检查语法“陷阱”,2018年10月14日,22,指针与数组; 非数组的指针; 作为参数的数组声明; 空指针并非空字符串; 边界计算与不对称边界; 求值顺序; 运算符&、|和! 整数溢出,2.2.1 编码规则检查语义“陷阱”,2018年10月14日,23,在循环语句中使用“break”语句。,#include “c_standards.h“ /* * Standard 31 S : Use of break statement in loop */ void static_31 (void) SINT_32 i=10 ; while (i -1
11、) if (i = 0) break; i = i - 1; ,2.2.1 编码规则检查典型规则举例,2018年10月14日,24,#include “c_standards.h“ /* * Standard 56 S : Equality comparison of floating point. */ void static_56 ( void) FLOAT_32 fl, f2; fl=1.01f; f2=2.01f; if (fl = f2) /* . */ if (fl = 0.0f) fl = fl + 0.01f; ,2.2.1 编码规则检查典型规则举例,浮点数比较。,2018年1
12、0月14日,25,功能函数无返回值。,#include “c_standards.h“ /* * Standard 36 S : Function has no return statement. */ UINT_32 static_36(UINT_32 p_1, UINT_16 p_2) UINT_32 y=p_1; /* Not returning a value */ ,2.2.1 编码规则检查典型规则举例,2018年10月14日,26,MISRA C /MISRA-C:2004 MISRA国际发动机工业软件可靠性协会组织制定了“汽车软件C语言使用指南”的标准。这份标准的产生在自动化行业
13、极大地推动了使用“安全的C”进行编程。这份标准在汽车行业被广泛接受,同时它也被其它行业所广泛借鉴 。 ISO 9126 ISO 国际标准化组织 IEC 61508 IEC 国际电工委员会 DERA C DERA 英国防护评估和研究机构,2.2.1 编码规则,2018年10月14日,27,在语言的底层面上,前面列出的C语言存在的隐患,在C中基本都存在,所以从这个角度来看,C语言的大多数规则同样适用于C;C应用比较广泛的编程规则 Ellemtel Coding Standards C Codeing Standards More Effective C+,2.2.1 关于c+编码规则,2018年1
14、0月14日,28,编码规则主要是针对语言使用本身的; 编程风格主要是针对代码书写风格的;对于质量“苛刻性”系统,执行严格的编码规则后,弱化了对于编程风格的要求; 规则约束很全面很严格,很大程度上已经完成了编程风格检测所要达到的效果;对于非质量“苛刻性”系统,执行宽松的编码规则,编程风格的作用就显得比较重要;,2.2.1 关于编码规则与编程风格,2018年10月14日,29,编码规则检查实施 项目之初制定编码规则可提高软件产品质量,做到“有法可依”; 培训软件编程人员理解规则; 加强管理,项目进行过程中需严格按编码规则检查,做到“执法必严”; 有效的编码规则检查工具支持;,2.2.1 编码规则检
15、查的实施,控制流分析 使用控制流程图系统检查程序的控制流程结构; 结构化验证; 分析不合理的控制流程结构: 无条件跳转指令(GOTO语句)使用; 不适当的循环嵌套、分支嵌套; 多重入口、出口; 不允许的递归调用等。,2.2.2 控制流分析,数据流分析 在控制流基础上分析数据使用情况; 静态数据流分析可帮助查找典型的程序错误: 用错的局域变量和全局变量; 不匹配的参数; 未使用过的变量或标号; 未定义的变量; 不允许的递归; 静态数据流分析包括: 过程函数参数及调用信息分析; 数据流反常分析; 全局变量分析。,2.2.3 数据流分析,过程或函数调用信息分析: 参数; 全局变量; 函数返回值。 过
16、程或函数调用信息分析用途: 编写程序接口文档; 检测错误。 查找错误时,下列两种情况需特别关注: 存在Clear Path使得输出参数或变量不能正常取值; 存在Clear Path使得过程或函数不能正常返回值。,2.2.3 数据流分析,典型数据流异常 UR 声明后没有初始化就被引用 ; 真实错误(genuine error) DU 初始化后没有被引用 ; 可疑错误(suspicious error) DD 两次初始化之间没有被引用; 可疑错误(suspicious error),1 void proc ()2 3 int x,y,z,t;4 x = 1;5 if (y 0)6 x = 2;7
17、/* end if */8 z = x + 1;9 10,2.2.3 数据流分析,2.2.3 数据流分析,一般编译器会进行简单的数据流分析,并且会有相应的警告或者报错信息;相对于编译器的数据流分析,专业工具的数据流分析更全面更彻底 专业工具是全路径的数据流分析,而编译器一般不是; 专业工具检查的数据流异常的种类比编译器检查的种类多;,2.2.3 数据流分析,数据流分析是较深入的静态分析技术; 对于程序进行数据流分析,并且排除相应的数据流异常可以提高程序的健壮性; 对于有“苛刻性”质量要求的项目,要求进行数据流分析;,什么是软件度量? 体检 身高; 体重; 血压; 软件度量 直观性; 客观性;
18、与软件错误相关性。,2.2.4 软件质量度量与跟踪控制,软件产品质量 内部特性 代码大小 代码结构 外部特性 可靠性、可用性、可维护性等 软件开发过程,复杂度,2.2.4 软件质量度量与跟踪控制,2018年10月14日,38,常用度量元 McCabe圈复杂度 结点度量 Halstead 软件科学度量 循环深度 基本圈复杂度 基本结点度量 LCSAJ密度 扇入/扇出 注释行数及比例 代码可达性 .,2.2.4 软件质量度量与跟踪控制,NASA软件保证技术中心 Software Assurance Technology Centre 软件度量模型 每个模块代码行小于100行; 每个模块可执行语句小
19、于50行; 注释行比例20%-30%; 无GOTO语句使用; McCabe圈复杂度小于10。 资料来源于“satc.gsfc.nasa.gov”,2.2.4 软件质量度量与跟踪控制,动态测试是在抽样测试数据上执行程序并分析输出以发现错误的过程。根据测试理论,如果抽样测试数据满足一定要求,通过测试可以发现程序中大多数错误,并且可以评估程序的质量(正确性,可靠性等)。,2.3 动态测试技术,动态测试技术具有以下特点: 实际运行被测试程序,取得程序运行的真实情况、动态情况,进而进行分析。 必须生成测试数据来运行程序,测试质量依赖于测试数据。 生成测试数据,分析测试结果工作量大,使开展测试工作费时、费
20、力。 动态测试中涉及多方面工作,人员多、设备多、数据多,要求有较好的管理和工作规程。动态测试包括三部分核心内容:生成测试数据,执行程序与验证程序的输出结果。,2.3 动态测试技术,动态测试适用的层次: 单元测试 集成测试 系统测试,2.3 动态测试技术,黑盒测试与白盒测试方法,2.3 动态测试技术,黑盒测试(BLACK-BOX TESTING)是一种按照需求规格说明设计测试数据的方法。它把程序看作内部不可见的黑盒子,完全不需考虑程序内部结构和编码结构,也不需考虑程序中的语句及路径,测试者只需了解程序输入和输出之间的关系,或是程序的功能,完全依靠能够反映这一关系和程序功能的需求规格说明确定测试数
21、据,判定测试结果的正确性。黑盒测试方法可用于功能测试、边界测试、强度测试、随机测试。,2.3.1 黑盒测试,黑盒测试-基于需求(规格说明)的测试根据规格说明生成测试用例每个需求至少覆盖一次 方法: 功能/性能测试(最普通的,最低限度的测试) 边值测试(Boundary Values) 强化测试(Stress testing : at Capacity Limits) 最坏情况测试(Worst cases Testing) 随机测试缺点:在进行上述所有各种测试后,仍有部分程序未被执行。,2.3.1 黑盒测试,规范 (Specification),生成测试用例,生成预期的输出结果,规范 (Spec
22、ification),测试用例,被测软件,输出,比较和分析,预期的输出结果,正确/错误,黑盒测试技术,2.3.1 黑盒测试,黑盒测试方法 关心被测系统或模块功能接口; 不必了解软件实现结构; 基于软件需求规格说明。 黑盒测试方法有效性很大程度依赖于被测软件需求规格说明、设计说明 要求规范的软件需求分析、设计; 相关项目规范有非常明确的、具体的要求; 分析师、设计师不使用规范的方法; 测试人员很难对软件需求分析、设计文档进行评审。 方便有效的工具支持。,2.3.1 黑盒测试,黑盒测试用例设计 等价类划分; 边值分析; 因果图法; 随机测试法; 猜错法; 数据域分析法; .,2.3.1 黑盒测试,
23、等价类划分 将输入或输出划分为等效的几个区间: 保证每个区间中任何数据或值具有相同特征; 分区之间无依赖性。 无效等价类与有效等价类。 输入或输出不仅只是参数: 外部数据; 时间; 顺序/历史; 状态。 必须设计测试用例以覆盖每一分区。,2.3.1 黑盒测试,等价类划分 - 需考虑的几个问题: 分区手工划分; 当软件复杂性增加时; 等价类划分变得复杂。 如果分区之间具有依赖性; 使得测试用例变得困难。 偏向于正向划分等价类: 必须补充反向测试数据。,2.3.1 黑盒测试,边值分析 边值分析法与等价类划分方法相近: 软件错误易于在各分区的边值范围发生。 基于如下原则设计测试用例: 以边值执行测试
24、; 以边值邻近值执行测试,2.3.1 黑盒测试,边值分析 - 需考虑的问题: 需具备硬件先验知识 移植性 使用每个最小边值; 使用每个最大边值; 往往只做正向测试,2.3.1 黑盒测试,因果图法 因果图法的基本原理是通过因果图,将自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计测试用例。 使用因果图法设计测试用例步骤: 列出一个模块的输入条件(因)和动作(果),并给每一个原因与结果赋予一个标识符; 画出因果图; 将因果图转换为判定表; 按判定表规则设计为测试用例。,2.3.1 黑盒测试,随机测试 采用随机数据产生测试用例。,2.3.1 黑盒测试,错误推测法: 通过估计可能发生的错误
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 技术 介绍 PPT
