- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
南京邮电大学软件开发技术基础12_SE第6讲
程序调试 程序调试就是诊断和纠正程序错误 的过程 程序错误类型 语法错误 运行错误 逻辑错误 程序调试方法 试探法 回溯法 对半查找法 归纳法 演绎法 归纳法调试步骤: 收集有关数据 组织数据 导出假设 证明假设 演绎法调试步骤: 设想可能的原因 用已有数据排除不正确假设 精化余下假设 证明余下假设 程序调试原则 确定错误性质和位置的原则 分析思考与错误征兆有关的信息 避开死胡同 避免使用试探法 修改错误的原则 关注错误群集的地方 不要只修改部分错误 不要引入新的错误 面向对象测试 算法层 类层 主题层 系统层 软件维护 定义 指软件交付使用之后,为了改正错误或满足 用户新的需求而修改软件的过程 四类维护 改正性维护 适应性维护 完善性维护 预防性维护 * * 软件工程 软件定义 总体设计 详细设计 编码 软件测试 软件维护 软件测试 软件测试 在软件投入生产性运行前 发现和改正隐蔽在程序中的各种错误 保证程序的正确性、提高程序质量 程序调试 诊断程序中错误的准确位置 研究错误的原因 改正错误 软件测试的目的和原则 为了发现错误而执行程序的过程 根据软件开发各阶段的规格说明和程序的内部结构 精心设计一批测试用例 并用它们去执行程序 以发现程序错误的过程 关键:“发现错误”,而不是“证明程序正确” 输入的测试数据及其预期的输出结果 例: 某程序从键盘输入三个整数a、b、c表示三角形的边长,判断该三角形是等边三角形、等腰三角形或是一般三角形。 if (a=b) and (b=c) then write(‘等边三角形’) else if a=b then write(‘等腰三角形’) else write(‘任意三角形’) 软件测试的目的和原则 三组测试数据: a=3,b=4,c=5; a=4,b=4,c=5; a=4,b=4,c=4 软件测试的目的 发现错误 G. Myers提出的软件测试目的: 测试是为了发现程序中的错误而执行程序的过程; 一个好的测试用例在于极可能发现迄今为止尚未发现的错误; 一次成功的测试在于发现了迄今为止尚未发现的错误。 应当把“尽早地和不断地进行测试”作为座右铭 测试应避免程序员自己进行 测试用例包括测试数据和与其对应的预期输出结果 测试用例应包括合理的和不合理的输入数据 注意错误群集的地方 严格执行测试计划,排除测试的随意性 全面检查每一次测试结果 妥善保存测试计划、测试用例、出错统计和最终的分析报告 软件测试的原则 软件测试步骤 单元测试 集成测试 确认测试 软件测试步骤 单元测试(模块测试) 对象:模块 目的:发现模块内部存在的错误 内容: 模块接口 模块内的局部数据结构 模块内的重要通路(错误处理) 边界条件 主要发现编码阶段的错误 软件测试步骤 集成测试(组装测试、联合测试) 方法:边组装边测试 自顶向下 自底向上 主要发现软件设计阶段的错误 确认测试(有效性测试、验收测试) 检查系统的功能和性能、检查文档 主要发现软件分析阶段的错误 集成测试 自顶向下 对主控模块进行测试(用桩模块代替下层模块) 根据选定的组装策略(深度优先、广度优先),每次用一个实际模块代替一个桩模块 在组装一个模块的同时进行测试 为保证加入模块没有引进新的错误,可能需要进行回归测试(全部或部分地重复以前的测试) 重复2)~4),直到构造起完整的软件结构为止 用来模拟被测模块的下层模块的模块 自顶向下集成测试 M1 M2 M4 M5 M6 M7 M8 M3 集成测试 自底向上 把低层模块组合成实现某个特定子功能的族 写一个驱动程序(用于测试的控制程序),协调测试数据的输入和输出 对由模块组成的子功能族进行测试 用实际的上层模块代替驱动程序,沿软件结构向上移动,把子功能族组合成更大的子功能族 重复2)~4),直到构造起完整的软件结构为止 自底向上集成测试 Mc Ma Mb D1 D2 D3 族1 族2 族3 软件测试方法 黑盒测试 根据程序的功能和性能进行测试 把被测程序看成黑盒子,完全不考虑程序 内部的数据结构和逻辑通路 在程序接口进行测试 软件测试方法 白盒测试 根据程序的逻辑结构进行测试 被测程序装在白盒中,完全了解程序内部 结构和处理过程 按程序内部逻辑进行测试 不可能进行穷举测试 穷举测试 黑盒测试:对所有输入数据的各种可能值的排列 组合都进行测试 白盒测试:程序中每条可能的通路 至少执行
原创力文档


文档评论(0)