收藏 分享(赏)

第1-2讲-基于模型的测试.ppt

上传人:cjc2202537 文档编号:1040714 上传时间:2018-06-07 格式:PPT 页数:94 大小:3.49MB
下载 相关 举报
第1-2讲-基于模型的测试.ppt_第1页
第1页 / 共94页
第1-2讲-基于模型的测试.ppt_第2页
第2页 / 共94页
第1-2讲-基于模型的测试.ppt_第3页
第3页 / 共94页
第1-2讲-基于模型的测试.ppt_第4页
第4页 / 共94页
第1-2讲-基于模型的测试.ppt_第5页
第5页 / 共94页
点击查看更多>>
资源描述

1、软件测试概述,WhyWhatHow基于模型的测试基于覆盖的测试一致性测试,Why,测试是保证软件质量和可信性的主要手段之一是否符合用户功能、性能需求软件产品交付前尽可能发现错误测试的代价非常高占开发成本的30%-50%或更高不测试代价更高,Why,The top 10 IT disasters 1983年,前苏联导弹预警软件故障差点导致WW-III1990年,AT&T网络瘫痪导致美国7500万用户受影响1996年,阿丽亚娜5号火箭爆炸。 64-bit 16-bit2006年,空客A380因软件不兼容问题导致拖延交货。英制公制1998年,美国火星气候探测器因导航系统单位不同被毁2004年,EDS

2、 CS2计算机给纳税人带来10亿英镑损失。1999/2000年,千年虫问题2006年,索尼电池引发的一系列笔记本爆炸事1999年,西门子计算机故障引发50万英居民新护照延迟2007年,软件故障导致1.7万旅客滞留LA国际机场8小时。,Why,1996年6月4日阿丽亚娜5号火箭在发射40秒后爆炸原因:惯性参考系统软件的数据转换异常,2004年12月20日,美空军的一架F-22猛禽战斗机因软件问题在起飞过程中失控坠毁,170万行代码,Why,2005年11月1日,东京证券交易所因为软件升级出现系统故障,导致早间股市“停摆”,2007年北京机场信息系统瘫痪。短短50分钟内,至少84个离港航班发生延误

3、,海湾战争美国F-18战斗机飞行控制软件共发生500多次故障爱国者导弹因为软件问题误伤了28名美军士兵,Why,What,测试的发展什么是软件测试软件缺陷,测试的发展,参考:Gelperin D, Hetzel B. The growth of software testing. Communications of the Association of Computing Machinery,1988,31(6):687695,测试的发展,面向调试阶段调试(debugging)、检查(checkout)、测试(testing)无明显差别面向求真(Demonstration)阶段测试从调试中分离

4、,成为生命周期中极为关键的环节调试: Make sure the program runs测试: Make sure the program solves the problem,测试的发展,面向证伪(Destruction)阶段 Myers定义测试是为发现错误而执行程序的过程,测试的发展,60以上的软件错误并非程序错误,而是需求和设计错误错误理解用户需求会导致开发完美优良的,但却是不正确的产品需求和设计阶段的质量保证非常重要,测试的发展,软件缺陷分布,测试的发展,面向评估(Evaluation)阶段 集成分析(Analysis)、评审(review)和测试活动,软件生命周期的每个阶段对应相应

5、的活动和产品集面向预防(Prevention)阶段测试与开发并行,包括:测试计划测试分析(建立测试需求或目标)测试设计(指明测试集的结构、单个测试用例和过程)测试实现(开发测试数据、测试支持软件)测试执行(运行测试、分析测试结果)测试维护(保存测试,在软件变化时更新测试),什么是软件测试,Myers (1979)执行程序的过程,其目的是发现错误IEEE标准610.12 (IEEE, 1990)在特定的条件下运行系统或构件,观察或记录结果,对系统的某个方面做出评价分析某个软件项以发现现存的和要求的条件之差别(即错误)并评价此软件项的特性,软件缺陷,未达到产品说明书中标明的功能未达到产品说明书未指

6、出但应当达到的目标 出现了产品说明书中指明不应出现的功能难以理解、不易使用,软件缺陷,软件缺陷的特征看不到 软件的特殊性决定了缺陷不易看到看到但抓不到 发现了缺陷,但不易找到问题发生的原因,软件缺陷,相关术语软件故障(Fault)软件中的一个静态缺陷软件错误(Error) 不正确的内部状态,某个故障的体现软件失效(Failure)外部的、不正确的行为,How,测试原理测试过程测试技术,几个关键问题谁来测试何时测试何时停止测试怎样进行测试,测试原理,测试原理,测试应可追溯到需求尽早、及时测试(何时开始?)测试计划先于测试执行80%的错误很可能由20%的模块造成小规模大规模一般来讲,完全测试不可能

7、充分覆盖程序逻辑/图结构是可行的(何时停止?)由独立第三方测试 (谁?)保存测试相关文档,以便维护和回归测试,测试原理,软件缺陷在不同阶段发现时修复的费用,测试过程模型,V模型把测试过程作为编码之后的一个阶段需求分析阶段隐藏的问题一直到验收测试才被发现不能体现“尽早地和不断地进行软件测试”的原则,测试模型,W模型,软件测试技术,白盒测试和黑盒测试(另一种:灰盒测试)静态测试和动态测试(验证测试和确认测试)传统测试和面向对象测试基于代码的测试和基于模型的测试,软件测试技术,白盒测试根据程序的结构和内部逻辑设计用例控制流覆盖:语句、判定、条件、判定/条件、条件组合、基本路径测试、条件测试等等数据流

8、覆盖:全定义、全使用、全定义使用等等黑盒测试根据系统的功能性规格说明设计测试用例等价划分、边界值分析、因果图测试、错误推测、组合测试等,软件测试技术,静态测试又称静态分析技术人工或利用工具对程序和文档进行分析与检查走查、审查、符号执行等动态测试运行程序,分析程序的执行状态和外部表现白盒测试、黑盒测试及灰盒测试等,基于模型的测试,依据(形式)模型/规约进行测试 UML, (E)FSM, LTS,CSP, Promela, . . . 更快、更便宜自动生成算法形式的、非歧义测试的完全性,2018年6月6日,27,基于模型的测试,28,软件制品,模型,测试需求,测试规约,测试用例,测试脚本,测试结果

9、,通过/失败,实现抽象级,设计抽象级,基于模型的测试,29,建模,准则,精化,测试生成,脚本生成,执行,评估,软件制品,模型,测试需求,测试规约,测试用例,测试脚本,测试结果,通过/失败,实现抽象级,设计抽象级,基于模型的测试,30,软件制品,模型,测试需求,测试规约,测试用例,测试脚本,测试结果,通过/失败,实现抽象级,设计抽象级,基于覆盖的测试,传统的方法从实现代码导出测试用例基于模型的方法从模型导出测试用例依赖于测试准则,32,测试覆盖准则,测试需求说明测试期间必须满足什么或必须覆盖什么测试准则定义测试需求的规则或规则集测试准则的满足给定特定测试准则C对应的测试需求集TR ,测试包T满足

10、C当且仅当TR中的每个测试需求tr,T中存在一条测试路径t覆盖tr,测试就是定义一个模型,然后设法覆盖它,33,4种模型,图,(not X or not Y) and A and B,if (x y) z = x - y;else z = 2 * x;,A: 0, 1, 1B: 600, 700, 800C: swe, cs, isa, infs,逻辑表达式,输入域特性,语法结构,34,图覆盖,图可以表示:语句和分支,组件和信号,状态和迁移 G = (N, N0, Nf, E),路径:, E路径长度:路径中的边数子路径:路径中的节点子序列Reach (n) :从节点n可到达的子图测试路径:从开

11、始节点到终止节点的路径,35,图覆盖,图结构覆盖覆盖图的节点、边或子路径数据流覆盖用变量的引用标注图,覆盖变量的定义、使用或它们之间的关系,36,图覆盖结构覆盖,节点覆盖测试路径 0, 1, 2, 3, 6 0, 1, 2, 4, 5, 4, 6 ,边覆盖测试路径 0, 1, 2, 3, 6 0, 2, 4, 5, 4, 6 ,37,图覆盖结构覆盖,边对覆盖 :测试覆盖每一个可达的长度不超过2的路径,边对覆盖 边对集 0,1,2, 0,2,3, 0,2,4, 1,2,3, 1,2,4, 2,3,6, 2,4,5, 2,4,6, 4,5,4, 5,4,5, 5,4,6 测试路径 0, 1, 2,

12、 3, 6 , 0, 1, 2, 4, 6 , 0, 2, 3, 6 , 0, 2, 4, 5, 4, 5, 4, 6 ,38,图覆盖结构覆盖,全路径覆盖: 测试覆盖所有可能的路径,指定路径覆盖:测试覆盖用户指定的路径集,不幸的是,如果图包含循环,全路径覆盖可能不切实际,39,图覆盖结构覆盖,测试循环1970s : 执行1次循环1980s : 执行每个循环1次1990s : 执行循环0次、1次和多次2000s : 覆盖主路径,40,图覆盖结构覆盖,简单路径除开始和结束节点可能相同外没有重复节点无内部循环简单路径的所有的子路径也是简单路径一个循环是简单路径主路径 不是其它简单路径的真子路径,即:

13、最大子路径,41,图覆盖结构覆盖,简单路径 0, 1, 2, 3 0, 1, 0, 2 , 1, 3 , 2, 3 , 3, 0 , 0, 1, 3 , 0, 2, 3 , 1, 3, 0 , 2, 3, 0 , 3, 0, 1 , 3, 0, 2 , 0, 1, 3, 0 , 0, 2, 3, 0, 1, 3, 0, 1 , 2, 3, 0, 2 , 3, 0, 1, 3 , 3, 0, 2, 3 , 1, 3, 0, 2 , 2, 3, 0, 1, 主路径 0, 1, 3, 0 , 0, 2, 3, 0, 1, 3, 0, 1 , 2, 3, 0, 2 , 3, 0, 1, 3 , 3,

14、0, 2, 3 , 1, 3, 0, 2 , 2, 3, 0, 1,42,图覆盖结构覆盖,主路径覆盖:测试覆盖每个主路径,遍历长度为 0, 1, , n的所有路径(n为指定的主路径最大长度)主路径覆盖包含节点、边和边对覆盖,43,图覆盖结构覆盖,Len 00123456 !,! 表示终止,Len 10, 10, 21, 22, 32, 43, 6 !4, 6 !4, 55, 4,Len 20, 1, 20, 2, 30, 2, 41, 2, 31, 2, 42, 3, 6 !2, 4, 6 !2, 4, 5 !4, 5, 4 *5, 4, 6 !5, 4, 5 *,* 表示循环,Len 30,

15、 1, 2, 30, 1, 2, 40, 2, 3, 6 !0, 2, 4, 6 !0, 2, 4, 5 !1, 2, 3, 6 !1, 2, 4, 5 !1, 2, 4, 6 !,Len 40, 1, 2, 3, 6 !0, 1, 2, 4, 6 !0, 1, 2, 4, 5 !,简单路径,44,图覆盖结构覆盖,38条简单路径9条主路径,主路径 0, 1, 2, 3, 6 0, 1, 2, 4, 5 0, 1, 2, 4, 6 0, 2, 3, 6 0, 2, 4, 5 0, 2, 4, 6 5, 4, 6 4, 5, 4 5, 4, 5 ,1次循环,多次循环,0次循环,45,图覆盖结构覆盖

16、,问题,测试用例的实例化(可执行的测试用例)语法可达:图中存在一条满足需求的子路径语义可达:测试能真正执行到一条子路径 不可行的测试需求不可达的节点不能严格按子路径执行,46,图覆盖结构覆盖,测试用例的实例化,游历(Touring)如果q是p的子路径,路径p游历路径q 侧访(Sidetrips)路径p侧访路径q当且仅当q的每条边在p中,且边次序相同 绕道游历(Detours)路径p绕道路径q,当且仅当q的每个节点在p中,且节点次序相同,47,图覆盖结构覆盖,游历,设q : 124,48,图覆盖数据流,目标:检测变量值计算和使用定义(def):变量被赋值使用(use):变量被用于计算或判定 de

17、f(n) =x节点n包含x的定义 def(e) =x 边e包含x的定义 use(n) =x节点n包含x的使用 use(e) =x边e包含x的使用,49,图覆盖数据流,DU-对 位置对(li, lj),一个变量在li被定义,在 lj被使用du-路径 从变量的一个定义到它的一个使用的路径,且中间没有对该变量重新定义(定义清纯,def-clear)du (ni, nj, v) 从ni 到 nj的变量v的du-路径集合du (ni, v)从ni 开始的变量v的du-路径集合,图覆盖数据流,对每个du-路径集合S = du(n, v),至少测试S中的一条路径,对每个du-路径集合S = du(ni, n

18、j, v),至少测试S中的一条路径,对每个du-路径集合S = du(ni, nj, v), 测试S中的所有路径,2,全使用覆盖(all-uses),3,全du-路径覆盖(all-du-paths),1,全定义覆盖(all-defs),51,图覆盖数据流,52,逻辑表达式,( (a b) G ) (x b) G ) (x b) = True, FalseG = True, False(x b) G ) (x b) G (x b) or G ) and (x b b c) c a(a b) = true, (b c) = true, (c a) = true不可行不可行的测试需求必须被识别(不可

19、决定的),忽略,66,逻辑覆盖小结,实际中谓词常常很简单,少于3个从句对从句谓词, 谓词覆盖2 -3个从句的谓词, 多条件覆盖大于3个从句的谓词,活动从句覆盖控制软件有许多复杂谓词,包含许多从句,67,68,输入域特性,输入域描述表示输入、参数输入域划分选择输入值组合系统级学生数 0, 1, 1 主修 swe, cs, isa, infs 单元级参数 F (int X, int Y)可能值 X: 2 , Y : 10, 20, 30 ,69,输入域特性,域划分:将域D划分为一个块集Bq,bi bj = , i j, bi, bj Bq, b = D,参数取值参数值组合,三角形问题,输入三个不大

20、于100的整数a、b、c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为边值无效、等边三角形、等腰三角形、一般三角形、以及非三角形,输入条件-1边长在输入域范围,等价类划分-1,三角形问题,测试用例-1,三角形问题,输入条件-2边长在输入域范围两边之和大于第三边,等价类划分-2,三角形问题,测试用例-2,三角形问题,输入条件-3边长在输入域范围两边之和大于第三边两边是否相等,三角形问题,等价类划分-3,三角形问题,测试用例-3,三角形问题,输入条件-4边长在输入域范围两边之和大于第三边三边是否相等,三角形问题,等价类划分-4,三角形问题,测试用例-4,三角形问题,边界值分析

21、法,(1) 边界值分析测试用例,边界值分析法,(2) 健壮性测试用例,示例:三角形问题边长在输入域范围a的取值:0, 1, 2, 45, 99, 100, 101b的取值:0, 1, 2, 45, 99, 100, 101c的取值:0, 1, 2, 45, 99, 100, 101,边界值分析法,边界值分析法,(3) 最坏情况测试用例,边界值分析法,(4) 健壮最坏情况测试用例,86,参数值组合,所有组合: 所有特性的所有块的组合,测试数是每个变量的等价类数之积:,三角形:7*7*7 = 343 太多?,每选择:每个特性的每个块的一个值在至少一个测试用例中被使用使用,测试数是所有特性的块数最大

22、值: 太少?,参数值组合,怎样测试输入的组合?正交数组测试 (Orthogonal array testing)程序错误都是由少数几个参数的相互作用导致的t覆盖正交数组任意t(一般是2或3)个参数的所有可能取值组合至少被一个测试用例覆盖,三角形问题正交数组(成对),89,语法结构,以语法为基础变异测试(Mutation Testing)在程序/模型中引入小变化:变体( mutant)设计测试使程序失败:杀死变体失败:测试产生与原程序不同的输出,if (x y) z = x - y;else z = 2 * x;,if (x y)if (x = y) z = x - y; z = x + y;

23、z = x m;else z = 2 * x;,90,语法结构-BNF,Stream := action*action := actG | actBactG := “G” s nactB := “B” t ns := digit1-3t := digit1-3n := digit2 “.” digit2 “.” digit2digit := “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”,91,语法结构,终止符覆盖:测试包含语法中的每个终止符。,推导覆盖:测试包含每个可能从语法中推出的串。,产生式覆盖:测试包含语法中的每个产生式。,上述准则都是测试语法,怎样测试非语法方面?,92,变异测试,基本串: 语法中的串变异操作:指明串语法变化的规则变体:应用一个变异操作的结果,93,基于语法的覆盖准则,变异覆盖对每个变体m,测试集包含一个测试可以杀死m,被杀死的变体数称为变异得分(mutation score),变异操作覆盖对每个变异操作,测试集包含一个测试用例,94,示例,基本串G 18 08.01.90B 14 06.27.94,变异操作actG 和actB互换置换数字,变异B 18 08.01.90B 19 06.27.94,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报