三角形问题从需求分析到测试

上传人:飞****9 文档编号:127333075 上传时间:2020-04-01 格式:PDF 页数:37 大小:592.73KB
返回 下载 相关 举报
三角形问题从需求分析到测试_第1页
第1页 / 共37页
三角形问题从需求分析到测试_第2页
第2页 / 共37页
三角形问题从需求分析到测试_第3页
第3页 / 共37页
三角形问题从需求分析到测试_第4页
第4页 / 共37页
三角形问题从需求分析到测试_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《三角形问题从需求分析到测试》由会员分享,可在线阅读,更多相关《三角形问题从需求分析到测试(37页珍藏版)》请在金锄头文库上搜索。

1、三角形问题从需求分析到测试三角形问题从需求分析到测试 目录 三角形问题从需求分析到测试1 需求说明 三角形问题从需求分析到测试2 学生的答案 三角形问题从需求分析到测试3 需求分析 三角形问题从需求分析到测试4 程序设计 三角形问题从需求分析到测试5 编码 三角形问题从需求分析到测试6 单元测试的步骤 三角形问题从需求分析到测试7 单元测试的尝试 三角形问题从需求分析到测试8 构建自己的单元测试框架1 三角形问题从需求分析到测试9 构建自己的单元测试框架2 三角形问题从需求分析到测试10 集成测试的概念 三角形问题从需求分析到测试三角形问题从需求分析到测试三角形问题从需求分析到测试三角形问题从

2、需求分析到测试 1 1 1 1 需求说明需求说明需求说明需求说明 三角形的问题在很多软件测试的书籍中都出现过 问题虽小 五脏俱全 是个很不错的软 件测试的教学例子 本文借助这个例子结合教学经验 从更高的视角来探讨需求分析 软件设计 软件开发与软件测试之间的关系与作用 题目 根据下面给出的三角形的需求完成程序并完成测试 一 输入条件 1 条件1 a b c 2 条件2 a c b 3 条件3 b c a 4 条件4 0 a 200 5 条件5 0 b 200 6 条件6 0 c 200 7 条件7 a b 8 条件8 a c 9 条件9 b c 10 条件10 a2 b2 c2 11 条件11

3、a2 c2 b2 12 条件12 c2 b2 a2 二 输出结果 1 不能组成三角形 2 等边三角形 3 等腰三角形 4 直角三角形 5 一般三角形 6 某些边不满足限制 三角形问题从需求分析到测试三角形问题从需求分析到测试三角形问题从需求分析到测试三角形问题从需求分析到测试 2 2 2 2 学生的答案学生的答案学生的答案学生的答案 在教学的过程中发现 很多学生一看到这个需求 都觉得很简单 然后立刻就开始动手写 代码了 这并不是一个很好的习惯 如果你的第一直觉也是这样的 不妨耐心看到文章的最后 大部分学生的思路 1 首先建立一个 main 函数 main 函数第一件事是提示用户输入三角形的三边

4、 然后获 取用户的输入 假设用户的输入都是整数的情况 用 C 语言来写 这一步基本上不是问题 printf 和 scanf 但是要求用 java 来写的话 很多学生就马上遇到问题了 java5 0及之前的版本不容 易获取用户的输入 点评 这样的思路做出来的程序只能通过手工方式来测试所有业务逻辑 测试困难 而且 这个程序只能是 DOS 界面版本了 要是想使用图形化界面来做输入 就得全部写过代码 移植 和维护困难 2 业务处理流程的思路用流程图表示如下 3 C 语言代码 include void main int a b c printf please enter three integer sc

5、anf d d d if 0 a else if a b b c a c printf 2是等腰三角形 else if a a b b c c a a c c b b b b c c a a printf 3是直角三角形 else printf 4是一般三角形 else printf 5不能组成三角形 else printf 6某些边不满足限制 点评 这样的思路做出来的程序只能通过手工方式来测试所有业务逻辑 而且这个程序只 能是 DOS 界面版本了 要是想使用 web 或图形化界面来做输入 就得全部写过代码 三角形问题从需求分析到测试三角形问题从需求分析到测试三角形问题从需求分析到测试三角形问

6、题从需求分析到测试 3 3 3 3 需求分析需求分析需求分析需求分析 需求分析是后续工作的基石 如果分析思路有问题 后续工作可能就会走向不正确的方向 比如 代码重用性差 难于测试 难于扩展和难于维护等 反而 如果需求分析做的好 对设计 开发和测试来说 都可能是很大的帮助 看到题目给出的条件达12个之多 粗粗一看 好像很复杂 但仔细分析之后 发现可以把 它们分成4组来讨论 1 条件1 a b c 条件2 a c b 条件3 b c a 这三个表达式有什么特点呢 实际上它们的逻辑是一样的 两个数之和大于第三个数 那 么 前面程序的写法就存在逻辑重复的地方 应该把这个逻辑提取到一个函数中 2 条件4

7、 0 a 200 条件5 0 b 200 条件6 0 c 200 这三个表达式也是同一个逻辑 判断一个数的范围是否在 0 200 区间内 也应该把这个 逻辑提取到一个函数中 去掉重复的逻辑 提高代码的可重用性 可重用性的好处 比如 现在用户的需求改为了三条边的取值范围要改为 100 400 那么 按前面的思路来说 需要改3个地方 而现在只需要在一个函数里改1个地方 这就是代码重用 的好处 3 条件7 a b 条件8 a c 条件9 b c 这三个表达式的逻辑 判断两个数是否相等 也应该把它提取到一个函数中 我们进一步来分析一下判断是否是等边三角形或等腰三角形的条件 1 前面程序的判断是从最直观

8、的方式 a b 判断三条边是否合法 即 判断三条边都在合法的范围内 返回值 true 是 false 否 bool isLegal int a int b int c 判断两条边之和是否大于第三边 返回值 true 是 false 否 bool isSumBiger int a int b int c 判断三条边是否能够组成三角形 返回值 true 是 false 否 bool isTriangle int a int b int c 判断两条边是否相等 返回值 true 是 false 否 bool isEquals int a int b 求三角形有几条边相等 返回值 相等边的数量 int

9、 howManyEquals int a int b int c 判断是否满足两边平方之和是否等于第三边的平方 bool isPowerSumEquals int a int b int c 判断第一个数是否比第二个数大 bool isGreaterThan int a int b 判断是否是直角三角形 bool isRightRriangle int a int b int c 判断三角形的类型 返回值 1 不能组成三角形 2 等边三角形 3 等腰三角形 4 直角三角形 5 一般三角形 6 某些边不满足限制 int triangleType int a int b int c 2 Trian

10、gle cpp Copyright c 2008 胡添发 hutianfa 三角形类型判断 include include 判断一个整数是否在 0 200 区间内 返回值 true 否 false 是 bool isOutOfRange int i if 0 i return false 判断三条边是否能够组成三角形 返回值 true 是 false 否 bool isTriangle int a int b int c if isSumBiger a b c return false 判断两条边是否相等 返回值 true 是 false 否 bool isEquals int a int b

11、 if a b return true return false 求三角形有几条边相等 返回值 相等边的数量 1 没有边相等 2 只有两条边相等 3 三条边相等 int howManyEquals int a int b int c int count 1 if isEquals a b count if isEquals b c count if isEquals a c count if count 3 如果三条边都相等 则 count 多加了一次 count 3 return count 判断是否满足两边平方之和是否等于第三边的平方 bool isPowerSumEquals int a

12、 int b int c if a a b b c c return true return false 判断第一个数是否比第二个数大 bool isGreaterThan int a int b if a b return true return false 判断是否是直角三角形 bool isRightRriangle int a int b int c int max 0 if isGreaterThan a b max a a b b max if isGreaterThan b c max b b c c max return isPowerSumEquals a b c 判断三角形

13、的类型 返回值 1 不能组成三角形 2 等边三角形 3 等腰三角形 4 直角三角形 5 一般三角形 6 某些边不满足限制 int triangleType int a int b int c int type 0 if isLegal a b c if isTriangle a b c int num howManyEquals a b c if 3 num type 2 else if 2 num type 3 else if isRightRriangle a b c type 4 else type 5 else type 1 else type 6 return type 三角形问题从

14、需求分析到测试三角形问题从需求分析到测试三角形问题从需求分析到测试三角形问题从需求分析到测试 6 6 6 6 单元测试的步骤单元测试的步骤单元测试的步骤单元测试的步骤 白盒测试与黑盒测试的过程和方法是有一些区别的 单元测试的步骤 1 理解需求和设计 理解设计是很重要的 特别是要搞清楚被测试模块在整个软件中所处的位置 这对测 试的内容将会有很大的影响 需要记住的一个原则就是 好的设计 各模块只负责完成自己 的事情 层次与分工是很明确的 在单元测试的时候 可以不用测试不属于被测试模块所负 责的功能 以减少测试用例的冗余 集成测试的时候会有机会测试到的 举例 判断三条边是否能够组成三角形 返回值 t

15、rue 是 false 否 bool isTriangle int a int b int c 测试该函数的时候 只需要测试三条边 在合法的取值范围内的整数 是否能够满足 两边之和是否大于第三边的功能 而不需要测试三条边是否在合法的范围 0 200 之间 的整数 因为调用该函数之前 一定要先通过下面函数的检查 要是检查不通过 就不会执 行 isTriangle 函数 判断三条边是否合法 即 判断三条边都在合法的范围内 返回值 true 是 false 否 bool isLegal int a int b int c 所以 单元测试主要是关注本单元的内部逻辑 而不用关注整个业务的逻辑 因为会 有

16、别的模块去完成相关的功能 2 概览源代码 浏览一下源代码 主要任务 1 初步检查源代码的编码风格与规范 2 大致估算测试工作量 比如 需要多少的测试用例 需要写多少的驱动模块和装 模块等 3 确定模块的复杂程度 初步制定测试的优先级等 3 精读源代码 认真阅读和分析代码 主要任务 1 理解代码的业务逻辑 2 检查代码与设计是否相符 如果详细设计没有该模块的流程图的话 先去画出流 程图 3 仔细研究逻辑复杂的模块 4 可以采用一些检查列表来检查程序可能会出现的问题 如果没有检查列表 那么 可以根据程序的特点 有针对性地检查容易出问题的地方 记得把经验总结下来供下次使 用 4 设计测试用例 综合运用白盒测试方法 和结合黑盒测试方法 来设计测试用例 包括功能测试 性 能测试等 要达到一定的测试覆盖率 在设计测试用例的过程中 流程图或控制流图是分析 的好帮手 5 搭建单元测试环境 使用 XUnit 或自己写的框架将有助于单元测试的实施 在这个阶段主要就是写桩模块 和驱动模块 第 4 步所设计的测试用例是通过驱动模块传递给被测试模块的 然后驱动模 块想办法获取被测试模块对数据的处理结果 并判定返

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 初中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号