数据流测试
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定义定义-使用路径
定义 关于变量v的定义一使用路径 的定义一使用路径( 关于变量 的定义一使用路径(记做 du-path) 是 PATHS( P) 中的路径 , ) ( ) 中的路径, 使得对某个v∈ , 使得对某个 ∈V, 存在定义和使用节 点DEF(v,m)和USE(v,n),使 ( , ) ( , ) 是该路径的最初和最终节点。 得m和n是该路径的最初和最终节点。 和 是该路径的最初和最终节点
使用节点
定义 节点n 是变量v 节点n ∈ G(P)是变量v ∈ V的 使用节点,记做USE USE( 使用节点,记做USE(v,n),当且仅 当变量v 的值在对应节点n 当变量 v 的值在对应节点 n 的语句片段 处使用。 处使用。 语句、 赋值语句、 条件语句、 语句 、 赋值语句 、 条件语句 、 循环控 制语句和过程调用, 制语句和过程调用 , 都是使用节点语 句的例子。 句的例子 。 如果执行对应这种语句的 节点, 节点 , 那么与该变量关联的存储单元 的内容会保持不变。 的内容会保持不变。
1. Program Commission(INPUT,OUTPUT) 2. Dim locks, stocks, barrels As Integer 3. Dim lockPrice, stackPrice, barrelPrice As Real 4. Dim totalLocks, totalStock, totalBarrels As Integer 5. Dim lockSales, stockSales,barrelSales As Real 6. Dim sales, commission As Real 7. lockPrice = 45.0 8. stockPrice = 30.0 9. barrelPrice = 25.0 10.totalLocks = 0 11.totalStocks = 0 12.totalBarrels = 0
定义/使用测试 定义 使用测试
定义引用拥有程序图G( ) 的程序P 定义引用拥有程序图 ( P) 的程序 和一组程序变量v。 和一组程序变量 。 P中的所有路径集合是 中的所有路径集合是PATHS(P)。 中的所有路径集合是 ( )
定义节点
定义 节点n 是变量v 节点n ∈ G(P)是变量v ∈ V的 定义节点,记做DEF DEF( 定义节点,记做DEF(v,n),当且仅 当变量v 的值由对应节点n 当变量 v 的值由对应节点 n 的语句片段 处定义。 处定义。 输入语句、 赋值语句、 输入语句 、 赋值语句 、 循环控制语句 和过程调用, 都是定义节点语句的例 和过程调用 , 如果执行对应这种语句的节点, 子 。 如果执行对应这种语句的节点 , 那么与该变量关联的存储单元的内容 就会改变。 就会改变。
28.Output("Total sales",sales) 29.If (sales > 1800.00) 30.Then 31. commission = 0.10 * 1000.0 32. commission = commission + 0.15 * 800.0 33. commission = commission + 0.20 * (sales - 1800.0) 34.Else If (sales > 1000.0) 35.Then 36. commission = 0.10 * 1000.0 37. commission = commission + 0.15 * (sales - 1000.0) 38.Else Commission = 0.10 * sales 39.EndIf 40.EndIf 41.Output("Commission is $", commission) 42.End Commission
谓词使用和计算使用
定义 使用节点USE(v,n)是一个谓词 使用节点 ( , ) 使用( 记做P-use) , 当且仅当语句 使用 ( 记做 ) 当且仅当语句n 是谓词语句; 否则, 是谓词语句 ; 否则 , USE( v, n) 是 ( , ) 计算使用(记做C-use)。 计算使用(记做 ) 对应于谓词使用的节点永远有外度>=2, , 对应于谓词使用的节点永远有外度 对应于计算使用的节点永远有外度<=1。 对应于计算使用的节点永远有外度 。
lockPrice、stockPrice和barrelPrice定义 使用路径 、 定义/使用路径 和 定义
变量 lockPrice stockPrice barrelPrice
路径节点 7,…,24 8, …, 25 9, …, 9 … 26
是定义清除嘛? 是 是 是
locks、stocks和barrels的定义 使用路径 、 和 的定义/使用路径
佣金问题
步枪销售商销售步枪机(lock),枪托(stock) 和枪管(barrel)。枪机卖45美元,枪托卖330 美元,枪管卖25美元。销售商每月至少要售出 一支完整的步枪,每月最多可销售70个枪机、 80个枪托和90个枪管。到了月末,销售商要发 出一封很短的电报,通知-1个枪机被售出。这 样步枪制造商就知道当月的销售情况,计算销 售商佣金如下:销售额不到(含)1000美元的 部分为10%,1000-1800(含)为15%,超过 1800的为20%。佣金程序生成月份销售报告, 汇总售出的枪机、枪托和枪管总数,销售商的 总销售额和佣金。
路径节点 31,32 31,33 31,37 31,41 32,32 32,33 32,37 32,41 33,32 33,33 33,37 33,41 36,32 36,33 36,37 36,41 37,32 37,33 37,37 37,41 38,32 38,33 38,37 38,41
是否可行? 是 是 否 是 是 是 否 是 否 是 否 是 否 否 是 是 否 否 是 是 否 否 否 是
是定义清除嘛? 是 否 否 是 是 否 是 是 是 否 是 是 是
com miss ion 的 定 义/ 使 用 路 径
commission commission commission commission commission commission commission commission commission commission commission commission commission commission commission commission commission commission commission commission commission commission
变量 sales sales sales sales sales sales 路径节点 是定义清除 嘛? 27,28 是 27,29 是 27,33 是 27,28,29,34 是 27,28,29,34,35, 是 36,37 27,28,29,38 是
变量 commission commission
数据流测试
什么是数据流测试? 什么是数据流测试?
数据流测试指关注变量接收值的点和使用 或引用)这些值的点的结构性测试形式。 (或引用)这些值的点的结构性测试形式。 数据流测试指关注可以用作路径测试的 真实性检查” “真实性检查”。 数据流测试两种基本方法: 数据流测试两种基本方法: 1. 一组基本定义和一种统一的测试覆盖指 标结构测试; 标结构测试; 2. 基于“程序片”的概念的测试。 基于“程序片”的概念的测试。
13.Input(locks) 14.While NOT(locks = -1) 15. Input(stocks,barrels) 16. totalLocks = totalLocks + locks 17. totalStocks = totalStocks + stocks 18. totalBarrels = totalBarrels + barrels 19. Input(locks) 20.EndWhile 21.Output("Locks sold:", totalLocks) 22.Output("Stocks sold:", totalStocks) 23.Output("Barrels sold:", totalBarrels) 24.lockSales = lockPrice*totalLocks 25.stockSales = stockPrice*totalStocks 26.barrelSales = barrelPrice*totalBarrels 27.sales = lockSales + stockSales + barrelSales
全定义(all-definition)准则 全定义(all-definition)准则 (all
定义 集合T满足程序 的全定义准则, 满足程序P的全定义准则 集合 满足程序 的全定义准则,当 且仅当所有变量v∈ , 包含从 所有变量 包含从v的 且仅当所有变量 ∈V,T包含从 的每 定义节点到v的一个使用的定义清除 个定义节点到 的一个使用的定义清除 路径。 路径。 T是拥有变量集合 的程序 的程序图 是拥有变量集合V的程序 是拥有变量集合 的程序p的程序图 G(p)中的一个路径集合 。 ( )
7 14
8
9
10
11
12
13
佣 金 问 题
15 20
16 21
17 22
18 23
19 24 29 25 26 27 28
30 31 32 33 35 36 37
34 38
39
40
41
42
佣 金 问 题 变 量 的 定 义/ 使 用 节 点
变量 lockPrice stockPrice barrelPrice totalLoc来自百度文库s totalStocks totalBarrels locks stocks barrels lockSales stockSales barrelSales sales commission
定义节点 7 8 9 10, 16 11, 17 12, 18 13, 19 15 15 24 25 26 27 31, 32, 33, 36, 37, 38
使用节点 24 25 26 16, 21, 24 17, 22, 25 18, 23, 26 14, 16 17 18 27 27 27 28, 29, 33, 34, 37, 38 32, 33, 37, 41
定义-引用路径测试覆盖准则
• 上面介绍的程序分析的核心,是定义一 组叫做Rapps-Weyuker数据流指标
数据流覆盖指标Rapps/Weyuker层次结构 层次结构 数据流覆盖指标
全路径 全定义-使用路径 全使用 全计算使用/部分谓词使用 全谓词使用/部分计算使用 全谓词使用 全边 全节点
全定义
变量 totalLocks totalLocks totalLocks totalLocks totalLocks totalLocks 路径节点 10,16 10,21 10,24 16,16 16,21 16,24 是定义清除嘛? 是 否 否 是 是
sales的定义/使用路径 的定义 使用路径
定义定义-清除路径
定义 关于变量v的定义清除路径 的定义清除路径( 关于变量 的定义清除路径 ( 记做 dc-path ) , 是 具 有 最 初 和 最 终 节 点 DEF ( v , m ) 和 USE ( v , n ) 的 PATHS( P)中的路径 , 使得该路径中 中的路径, ( 中的路径 没有其他节点是v的定义节点 的定义节点。 没有其他节点是 的定义节点。
变量 locks locks locks locks stocks barrels 路径节点 13,14 13,14,15, 16 19,20,14 19,20,14, 15,16 15, …, 17 15, …, 18 是定义清除嘛? 是 是 是 是 是 是
totalLocks的定义/使用路径 的定义 使用路径