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