1 / 103

软件工程

软件工程. 北京邮电大学软件学院 韩万江 Casey_han@263.net. 需求 分析. 概要 设计. 详细 设计. 编码. 测试. 产品 提交. 维护. RoadMap. 软件工程. 第六章 软件测试. 本章目录. 一、测试概述 二、测试方法 三、测试级别 四、测试管理流程 五、测试自动化 六、测试过程 七、案例分析. 软件测试. --- 测试方法. 本节要点. 一、测试方法概述 二、静态测试方法 三、动态测试方法 四、面向对象测试. 测试方法. 静态测试 动态测试. 测试方法.

Download Presentation

软件工程

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 软件工程 北京邮电大学软件学院 韩万江 Casey_han@263.net chapter__6

  2. 需求 分析 概要 设计 详细 设计 编码 测试 产品 提交 维护 RoadMap chapter__6

  3. 软件工程 第六章 软件测试 chapter__6

  4. 本章目录 • 一、测试概述 • 二、测试方法 • 三、测试级别 • 四、测试管理流程 • 五、测试自动化 • 六、测试过程 • 七、案例分析 chapter__6

  5. 软件测试 ---测试方法

  6. 本节要点 • 一、测试方法概述 • 二、静态测试方法 • 三、动态测试方法 • 四、面向对象测试 chapter__6

  7. 测试方法 • 静态测试 • 动态测试 chapter__6

  8. 测试方法 实际运行程序,并通过观察程序运行的实际结果来发现错误的软件测试技术。 不实际运行程序,而是通过检查和阅读等手段来发现错误并评估代码质量的软件测试技术。也称为静态分析技术。 软件测试方法 在知道程序内部结构的情况下采用的测试技术或策略。 动态测试 静态测试 在不知道程序内部结构,只知道程序规格的情况下采用的测试技术或策略。 黑盒测试 白盒测试 白盒测试 灰盒测试 黑盒测试方法和白盒测试方法综合的策略。 chapter__6

  9. 本节要点 • 一、测试方法概述 • 二、静态测试方法 • 三、动态测试方法 • 四、面向对象测试 chapter__6

  10. 静态测试(分析) • 定义: • 不实际运行程序,而是通过检查和阅读等手段来发现错误并评估代码质量的软件测试技术。也称为静态测试技术。 • 方法: • 走查:WalkThrough • 审查:Inspection • 评审:Review Michael Fagan IBM(1976) chapter__6

  11. 静态分析-走查 • 定义: • 开发组内部进行的,主要是个人通过检查和阅读等手段来查找错误的活动。 • 经验: • 限时 • 避免跑题 • 不要现场修改 • 检查要点 • 逻辑错误 • 代码标准/规范/风格 chapter__6

  12. 静态分析-审查 • 定义: • 开发组内部进行的,分配了相关的角色,采用讲解、提问并使用Checklist方式进行的查找错误的活动。 • 经验: • 以会议的形式,制定会议目标、流程和规则,结束后要编写报告 • 参加人员 • 经验丰富的开发人员 • 和本模块相关的开发人员 • 本项目组的新人 • 由另外一名开发者进行讲解、其他开发者主要按照Checklist进行提问并填表、本模块开发者回答问题并记录 • 不要现场修改 • 检查要点 • 设计需求 • 代码标准/规范/风格 chapter__6

  13. 静态分析-评审 • 定义: • 开发组、测试组和相关人员(QA、产品经理等)联合进行的,采用讲解、提问并使用Checklist方式进行的查找错误的活动。一般有正式的计划、流程和结果报告。 • 经验: • 以会议的形式,制定会议目标、流程和规则,结束后要编写报告。相关资料要在会议前下发并阅读。 • 参加人员 • 经验丰富的开发人员 • 和本模块相关的开发人员 • 测试组和相关人员 • 由另外一名开发者进行讲解、其他开发者主要按照Checklist进行提问并填表、本模块开发者回答问题并记录 • 不要现场修改 • 检查要点 • 设计需求 • 代码标准/规范/风格 • 文档的完整性和一致性 chapter__6

  14. 同行(对等)评审(Peer Review) • 对等技术评审是由与工作产品开发人员具有同等背景和能力的人员对工作产品进行的一种评审, • 目的是早期和有效的消除软件工作产品中的缺陷,并可对软件工作产品和其中可预防的缺陷有更好的理解。 chapter__6

  15. 本节要点 • 一、测试方法概述 • 二、静态测试方法 • 三、动态测试方法 • 四、面向对象测试 chapter__6

  16. 动态测试 • 白盒测试 • 黑盒测试 chapter__6

  17. 白盒测试 基于代码的测试 chapter__6

  18. 白盒测试 • 基本的逻辑覆盖 • 其它的逻辑覆盖准则 chapter__6

  19. 基本逻辑覆盖测试 • 语句覆盖 • 判定覆盖 • 条件覆盖 • 判定/条件覆盖 • 条件组合覆盖 • 路径覆盖 chapter__6

  20. 语句覆盖 选择足够的测试用例,使得程序中每一条可执行语句至少被执行一次。 语句覆盖率= (至少被执行一次的语句数量)/(可以执行的语句总数) chapter__6

  21. 语句覆盖实例 1. if Condition then Do_something; End if Another_Statement; TestCase: Condition True chapter__6

  22. 判定覆盖 选择足够的测试用例,使得程序中每一个判断的每一种可能结果都至少被执行一次。判定覆盖也叫分支覆盖。 判定覆盖率= (判定结果被评价的次数)/(判定结果的总数) chapter__6

  23. 判定覆盖实例 1. if Condition then Do_something; End if Another_Statement; TestCase: 1、Condition True 2、Condition False chapter__6

  24. 判定覆盖实例 1. if Condition then Do_something; Else Do_something_Else; End if Another_Statement; TestCase: Condition True TestCase: Condition False chapter__6

  25. 判定覆盖实例 1. If A and B then • Do-Something • End if 判断: 1.A=T,B=T=> A and B=T 2.A= T,B=F => A and B=F TestCase A B A and B TestCase1 T T T TestCase2 T F F chapter__6

  26. 条件覆盖 选择足够的测试用例,使得程序中每一个判断中的每一个条件的可能结果都至少被执行一次 条件覆盖率= (条件操作数值至少被评价一次的数量)/(条件操作数值的总数) chapter__6

  27. 条件覆盖实例 1. If A and B then • Do-Something • End if TestCase A B A and B TestCase1 T F F TestCase2 F T F chapter__6

  28. 条件覆盖 例如: • if (A>1) and (B=0) then X=X/A; • if (A=2) and (X>1) then X=X+1; B=0 , B<>0 A>1,A <=1 X>1 , X <= 1 A=2,A <> 2 chapter__6

  29. 条件覆盖 Testcase A B X • 条件: • A>1 T1; • A<=1 F1 • B=0 T2; • B<>0 F2 • A=2 T3; • A <> 2 F3 • X>1 T4; • X <= 1 F4 Case1、 1 0 3 if (A>1) and (B=0) then X=X/A; if (A=2) and (X>1) then X=X+1; Case2、 2 1 1 chapter__6

  30. 判定条件覆盖 选择足够的测试用例,使得同时满足判定覆盖和条件覆盖。 判定条件覆盖率= (条件操作数值或者判定结果至少被评价一次的数量)/(条件操作数值总数+判定结果的总数) chapter__6

  31. 判定条件覆盖-实例 1. If A and B then • Do-Something • End if 判断: 1. A and B=T 2. A and B=F 条件: 1.A=T 2. A=F 3.B=T 4. B=F TestCaseABA and B TestCase1 T T T TestCase2 F F F chapter__6

  32. 判断 (A>1) and (B=0) A>1,B=0 =>True A>1,B<>0 =>False A<=1,B=0 =>False A<=1,B<>0 =>False (A=2) and (X>1) A=2,X>1 =>True A=2,X<=1 =>False A<>2,X>1 =>False A<>2,X <= 1 =>False 条件: A>1 T1; A<=1 F1 B=0 T2; B<>0 F2 A=2 T3; A <> 2 F3 X>1 T4; X <= 1 F4 判断条件覆盖-实例 if (A>1) and (B=0) then X=X/A; if (A=2) and (X>1) then X=X+1; A、B、X 2、0、3 1、1、1 chapter__6

  33. 判断 (A>1) and (B=0) A>1,B=0 =>True A>1,B<>0 =>False A<=1,B=0 =>False A<=1,B<>0 =>False (A=2) and (X>1) A=2,X>1 =>True A=2,X<=1 =>False A<>2,X>1 =>False A<>2,X <= 1 =>False 条件: A>1 T1; A<=1 F1 B=0 T2; B<>0 F2 A=2 T3; A <> 2 F3 X>1 T4; X <= 1 F4 判断条件覆盖-案例冗余 if (A>1) and (B=0) then X=X/A; if (A=2) and (X>1) then X=X+1; A、B、X 2、0、3 1、1、1 1、0、3 2、1、1 chapter__6

  34. 条件组合覆盖 选择足够的测试用例,使得程序中每一个分支判断中的每一个条件的每一种可能组合结果都至少被执行一次。 条件组合覆盖率= (被评价的分支条件组合数量)/(分支条件组合总数) chapter__6

  35. 条件组合覆盖 1. If A and B then • Do-Something • End if TestCase ABA and B TestCase1 T T T TestCase2 F F F TestCase3 T F F TestCase4 F T F chapter__6

  36. 条件组合 A>1,B=0 A>1,B<>0 A<=1,B=0 A<=1,B<>0 A=2,X>1 A=2,X<=1 A<>2,X>1 A<>2,X <= 1 条件: (A>1) and (B=0) A>1 A<=1 B=0 B<>0 (A=2) and (X>1) A=2 A <> 2 X>1 X <= 1 条件组合覆盖 if (A>1) and (B=0) then X=X/A; if (A=2) and (X>1) then X=X+1; A、B、X 1、0、3 2、1、1 2、0、3 1、1、1 chapter__6

  37. 路径覆盖 选择足够的测试用例,使得程序中所有的可能路径都至少被执行一次。 路径覆盖率= (至少被执行一次的路径数)/(总的路径数) chapter__6

  38. a False True (A>1)and (B=0) c b X=X/A False True (A=2)or (X>1) e d X=X+1 路径覆盖 if (A>1) and (B=0) then X=X/A; if (A=2) or (X>1) then X=X+1; Testcase A B X 覆盖路径 Case 1 1 0 3 abe Case 2 2 1 1 abe Case 3 2 0 3 ace Case 4 1 1 1 abd Testcase A B X 覆盖路径 Case 5 6 0 1 acd chapter__6

  39. 三角形程序实现的数据流图 chapter__6

  40. 三角形程序的伪代码 • Program Triangle2 • Dim a,b,c as integer • Dim IsATriangle As Boolean Step 1 :Get Input • Output(“Enter 3 integers which are sides of triangle”) • Input(a,b,c) • Output(“Side A is ” ,a) • Output(“Side B is ” , b) • Output(“Side C is ” , c) Step 2:Is a Triangle? • If(a<b+c) and (b<a+c) and (C<a+b) • Then IsATriangle=True • Else IsATriangle=false • Endif chapter__6

  41. 三角形程序的伪代码 Step 3 :Determine Triangle Type • If IsATriangle • Then if (a=b)AND(b=c) • Then Output(“Equilateral”) • Else if (a<>b) AND(a<>c) AND(b<>c) • Then Output(“Scalene”) • Else Output(“Isosceles”) • Endif • Endif • Else Output(“Not a Triangle”) • Endif • End triangle2 chapter__6

  42. 三角形程序图 chapter__6

  43. DD-路径(Decision-to-Decision Paths) • 判断(决策)到判断(决策)的路径 • 判断(决策):一个序列语句 • 开始位置是一个判断(决策)的开始,结束位置是下一个判断(决策)语句的开始。 • 序列语句没有分支 chapter__6

  44. 三角形的DD-路径 chapter__6

  45. DD-路径覆盖 DD路径覆盖率= (至少被执行一次的决策路径数)/(系统中总的决策路径数) • E.F.Miller发现: • DD-路径覆盖可以发现全部缺陷的85% chapter__6

  46. A B D E C F G McCabe的基路径方法 线性独立路径数:V(G)=e-n+2 • e :边数 • n :节点数 V(G)=10-7+2=5 chapter__6

  47. 保险金程序-需求 保险金=基本保险费率×年龄系数-安全驾驶折扣 • 保险金程序伪代码 chapter__6

  48. 保险金程序图 chapter__6

  49. 保险金程序路径? V(G)=11 chapter__6

  50. 路径覆盖 • 覆盖路径P1的案例 • 年龄:17,点数:1 • 覆盖路径P2的案例 • 年龄:16,点数:0 • 。。。。。。。 chapter__6

More Related