当前位置:文档之家› 软件工程第4章

软件工程第4章


《实用软件工程》陆惠恩主编
19
图4.8 求平均值过程的流图
V(G)=17(边数)-13(结点数)+2=6 V(G)=5(判定结点数)+1=6 V(G)=6(有向环数)
路径1:1-2-10-11-13; 路径2:1-2-10-12-13; 路径3:1-2-3-10-11-13; 路径4:1-2-3-4-5-8-9-2.... 路径5:1-2-3-4-5-6-8-9-2.... 路径6:1-2-3-4-5-6-7-8-9-2.... 4.设计可强制执行基本集合中每 条路径的测试用例
第4章 软件编码和软件测试
本章内容: l 结构化程序设计 程序设计语言的选择 程序设计风格 l 软件测试目标 l 软件测试方法 l 软件测试步骤 l 软件设计测试方案 l 软件测试原则和测试策略 l 软件调试、验证与确认 l 软件测试文档 重点: l 程序设计风格 l 设计软件测试方案
回目录
《实用软件工程》陆惠恩主编
《实用软件工程》陆惠恩主编
7
4.5 设计测试方案
测试方案包括三个内容: 要测试的功能 输入的数据 对应的预期输出结果
《实用软件工程》陆惠恩主编
8
4.5.1 等价类划分法 4.5.2 边界值分析法 4.5.3 错误推测法 4.5.4 逻辑覆盖法 1. 语句覆盖 2. 判定覆盖 3. 条件覆盖 4. 判定/条件覆盖 5. 条件组合覆盖 6. 点覆盖 7. 边覆盖 8 . 路径覆盖
《实用软件工程》陆惠恩主编
17
例4.3的因果图
例4.3的判定表
《实用软件工程》陆惠恩主编
18
4.5.7 用基本路径覆盖法设计测试用例





1: i=1; total.input=total.valid=0; sum=0; 2:DO WHILE value〔i〕<>-999 3:AND total.input<100 4:increment total.input by 1; 5:IF value〔i〕>=minimum 6:AND value〔i〕<=maximum 7:THEN increment totalvalid by 1; sum=sum+value〔i〕; 8:ENDIF increment i by 1; 9:ENDDO 10:IF totalvalid>0 11:THEN average=sum/totalvalid; 12:ELSE average=-999; 13:ENDIF
《实用软件工程》陆惠恩主编
15
3. 因果图约束符号
《实用软件工程》陆惠恩主编
16
【例4.3】用因果图法设计测试用例
某规格说明规定: 输入的第一列字符必须是A或B, 第二列字符必须是一个数字。 第一、二列都满足条件时执行操作H; 如果第一列字符不正确,则给出信息L; 如果第二列字符不正确,则给出信息R。 根据上述要求画出因果图,并设计测试用例。
《实用软件工程》陆惠恩主编
20
4.6 软件测试原则和策略 4.6.1软件测试原则 4.6.2.实用测试策略
用等价类划分法设计测试方案。 (2) 使用边界值分析方法,既测试输入数据的边界情况又包括输出 数据的边界情况。 (3) 如果含有输入条件的组合情况,覆盖法检查现有测试方案,若没有达到逻辑覆盖标准, 再补充一些测试用例。
(1)
《实用软件工程》陆惠恩主编
21
4.7 软件调试、验证与确认
4.7.1 软件调试 软件调试也称纠错。 首先进行软件测试,第二步是纠错 4.7.2 程序正确性验证(软件验证) 是确定软件开发周期中的一个给定阶段的产品是否达到需求 的过程。 4.7.3 软件确认 软件确认的方法: 1.系统功能和性能满足需求说明书中的全部要求,得到用户 认可。 2.完成测试计划中的所有要求,并书写测试分析报告和开发 总结。 3.按用户手册和操作手册进行软件实际运行。


《实用软件工程》陆惠恩主编
2
4.1.1 程序设计语言的选择
1. 程序设计语言的分类 (1)面向机器语言:机器语言和汇编语言。 (2)高级程序设计语言 2. 高级语言选用的实用标准 (1)项目的应用领域 (2)软件开发环境 (3)根据系统用户的要求来选择 (4)软件开发人员的知识
《实用软件工程》陆惠恩主编
3
4.1.2 程序设计风格
源程序文档编写规则 1.源程序文档编写时,其标识符名称、注解和 程序布局等要合理。 2. 数据说明 3. 语句构造要简单直接 4. 输入输出语句 5. 程序效率

程序设计主要应考虑的是程序的正确性、
可理解性、可测试性和可维护性。
《实用软件工程》陆惠恩主编
4
4.2 软件测试目标
《实用软件工程》陆惠恩主编
12
程序流程图
《实用软件工程》陆惠恩主编
13
程序图
《实用软件工程》陆惠恩主编
14
计算程序的环行复杂度:



图中有4个线性无关的有向环:R1、R2、R3、R4。 在图4.4(b)中,实线弧数为14,节点数为12。因此, 环行复杂度为 V(G)=14-12+2=4 图4.4(b)中,判定结点的个数为3,3+1=4。 三种计算方法的结果相同。
1
4.1 结构化程序设计



结构化程序设计(Structured Programming ,SP) 仅采用顺序、选择、重复三种基本控制结构; 每种基本结构只有一个入口、一个出口; 将这三种基本控制结构根据程序的逻辑,嵌套或组合成结构 化程序,完成预定的功能。 结构化程序设计的特点 源程序有清晰性,并能较好地适合自顶向下或自底向上的程 序设计技术。 在详细设计阶段,使系统结构具有模块化和清晰性的特性。 在软件编码阶段,使软件易于理解、修改,便于重复使用。
1、软件测试是为了发现程序中的错误而执行程序的过程; 2、好的测试方案能够发现尚未发现的错误; 3、成功的测试是发现了尚未发现的错误的测试。 软件测试的目的是通过人工或计算机执行程序来有意识地发 现程序中的设计错误和编码错误。
《实用软件工程》陆惠恩主编
5
4.3.1 静态分析与动态测试 1. 静态分析 2. 动态测试:以执行程序并分析程序来查错。 为了进行软件测试,需要预先准备好两种数据: ①输入数据; ②预期的输出结果。 我们把以发现错误为目标的用于软件测试的输入数据及与之对应的预期 输出结果叫测试用例。 4.3.2 黑盒法与白盒法 1. 黑盒法 (Black.Box Testing) 又称功能测试,其测试用例完全是根据程序的功能说明 来设计的。 2. 白盒法 (White Box Testing) 又称结构测试,其测试用例是根据程序内部的逻辑结构 和执行路径来设计的。 • 常把黑盒法和白盒法联合起来进行,这也称为灰盒法。
《实用软件工程》陆惠恩主编
22
4.8 软件测试文档
1.软件测试计划 2.测试说明文件 测试设计说明 测试用例说明 测试规程说明 3.软件测试分析报告
《实用软件工程》陆惠恩主编
23
第4章小结





优先选用高级程序设计语言。 结构化程序设计将顺序、选择、重复三种基本控制结构进行组合和嵌套。 软件设计风格直接影响软件的质量,软件的可维护性和可移植性。 软件编码阶段应进行静态分析和模块测试。 软件测试是由人工或计算机,执行或评价系统过程,验证是否满足需求。 测试的根本任务是发现软件中的错误。 测试的早期用白盒法,后期用黑盒法。 设计测试方案要选用尽可能少的高效测试数据,尽可能多地发现错误。 1.边界值分析方法,包括输入数据和输出数据的边界情况。 2.用等价类划分法补充测试方案。 3.必要时用错误推断法补充测试方案。 4.用逻辑覆盖法检查测试方案。 软件调试是查找、分析和纠正程序中错误的过程。 调试不仅修改软件产品还应改进软件过程,避免今后出现错误。 测试和调试常常交替进行。 软件确认是在软件开发过程结束时,对软件进行评价,确定是否和软件需 求相一致的过程 。
回第4章首 返回目录
《实用软件工程》陆惠恩主编
24
《实用软件工程》陆惠恩主编
9
【例4.2】按不同逻辑覆盖法设计测试数据
测试数据的条件组合及对应的执行路径
《实用软件工程》陆惠恩主编
10
4.5.6 因果图法•
1. 因果图法测试用例设计步骤 2. 因果图法基本符号
《实用软件工程》陆惠恩主编
11
4.5.5 程序结构复杂程度的度量
McCabe方法首先画出程序图,然后计算程序的环行复杂度。 程序环行复杂度的计算方法有三种: 1、 强连通图中线性无关有向环的个数。 2、 V(G)=m-n+2 其中,m是程序图G中的弧数,n是有向图G中的节点数。 3、 如果P是流图中判定结点的个数,V(G)=P+1。 【例4.2】计算程序环行复杂度。 现有对计算机应用能力考试成绩进行统计的程序。连续输入考试成绩, 最后以输入0分或负分为结束。规定成绩在60分以下的不及格、 60分以上的及格、80分以上的属于优秀。该程序统计并分别输出 成绩不及格、及格、优秀的人数及总人数。算出此程序的环行复 杂度。
4.3 软件测试方法
《实用软件工程》陆惠恩主编
6
4.4 软件测试步骤
4.4.1 模块测试 也称单元测试,其目的是检查每个模块是否能独立、正确地运行。 模块测试通常在程序设计时进行。 驱动程序代替主程序,用来测试子程序。 存根程序也称“虚拟子程序”,测试主模块。 4.4.2 集成测试 子系统的组装称为集成化。 集成测试分为子系统测试和系统测试两种。 渐 • 增式测试、非渐增式测试 1、自顶向下集成 2、自底向上集成 4.4.3 程序审查会和人工运行 4.4.4 确认测试 1. 确认测试必须有用户积极参与,或以用户为主进行。 2. 软件配置复审 3. Alpha测试和Beta测试 4.4.5 平行运行
相关主题