软件工程作业(十一)

一.白盒子测试有哪些方法,其中最严格的是什么?

白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。

白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化:

1.语句覆盖每条语句至少执行一次。

2.判定覆盖每个判定的每个分支至少执行一次。

3.条件覆盖每个判定的每个条件应取到各种可能的值。

4.判定/条件覆盖同时满足判定覆盖条件覆盖。

5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。

6.路径覆盖使程序中每一条可能的路径至少执行一次。

二.测试用例

(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:a2+ c2== b2

  12、条件12:c2+b2== a2

 (2)输出结果:

  1、不能组成三角形

  2、等边三角形

  3、等腰三角形

  4、直角三角形

  5、一般三角形

  6、某些边不满足限制

业务处理流程的思路用流程图表示如下:

仔细分析之后,发现可以把它们分成4组来讨论:

  1、 条件1:a+b>c; 条件2:a+c>b; 条件3:b+c>a

  这三个表达式有什么特点呢?实际上它们的逻辑是一样的:两个数之和大于第三个数。那么,前面程序的写法就存在逻辑重复的地方,应该把这个逻辑提取到一个函数中。

  2、 条件4: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)前面程序的判断是从最直观的方式(a==b && b==c && a==c)(实际上只需要两个表达式成立即可)三条边都相等来判定是等边三角形;(a==b || b==c || a==c)只有两条边相等来判定是等腰三角形。

  (2)转变一下思路:给定三个整数,然后用一个函数来判断这三个整数有几个相等,返回相等的个数,如果返回值等于3,那么它是等边三角形,如果返回值是2,那么它是等腰三角形,否则,它是一般三角形(如果不是直角三角形的话)。

  4、条件10:a2+b2==c2 条件11:a2+ c2== b2 条件12:c2+b2== a2

  这三个条件的处理方式有两种:

  (1)跟前面三组分析一样,把相同的逻辑提取到一个函数中,然后三次调用。

  (2)根据直角三角形的特点:斜边是最长的,所以我们可以事先写一个函数来找到最长的边,然后把它赋值给c,这样处理之后,只需要一次调用判定(a2+b2==c2)的函数了。

时间: 2024-12-30 10:43:53

软件工程作业(十一)的相关文章

《Junit》——软件工程作业.vo2

<Junit>--软件工程作业.vo2 一.开发工具选择 我选择Eclipse: 二.编写与测试环节 (1)编写想要测试的Java类 (2)导入Junit (3)编写测试类 单元测试覆盖标准: [x] 语句覆盖:选择合适用例,所有语句被执行一次. [x] 判定覆盖:每个判定至少取一次真.一次假. [x] 条件覆盖:每个条件的各种可能结果至少满足一次. [x] 判定条件覆盖:同时满足判断覆盖和条件覆盖. [x] 条件组合覆盖:所有组合情况都要覆盖一次. 代码如下: package first;

《结对作业2》——软件工程作业.vo5

软件工程作业.vo5 一.题目选择 我们选择题目一: [x] 能够自动生成四则运算练习题 [x] 可以定制题目数量 [x] 用户可以选择运算符 [x] 用户设置最大数(如十以内.百以内等) [x] 用户选择是否有括号.是否有小数 [x] 用户选择输出方式(如输出到文件.打印机等) 二.职责分配 驾驶员--毕振国-博客地址 导航员--杨颢 三.结果展示 1.操作界面示例 2.输出界面示例 ++(此处应有掌声,啪啪啪啪啪啪啪啪啪啪啪啪啪啪啪--)++ 四.代码审查表 代码地址: https://co

2017软件工程作业---第一次

首先自我介绍一下,我叫李传康,江苏徐州人,毕业于吉林建筑大学,专业是计算机科学与技术,为人还算友善,欢迎随时来扰. 一.下面,让我来回答一些问题: (1)回想一下你曾经对计算机专业的畅想 当初你是如何做出选择计算机专业的决定的?你认为过去接触到的课程是否符合你对计算机专业的期待,为什么?你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗?(注:不可以回答 "不是","是".请把这当成以后工作时面试题,需要回答足够长度,提供足够信息,让对方了解你.比如,给出为什么.)

软件工程作业 - Week 1

构建之法读后疑问: 初步的完成构建程序设计思路之后实现过程中发现了问题或者可以优化的地方是立马就改进还是完成之后按照步骤统一进行优化. 覆盖性测试,针对一些永远用不到只是用来预防极为极端的情况下,例如内存不足等,非常难以模拟的代码也需要覆盖吗?如果是成本岂不是很高 所谓敏捷开发在任何时候都适合吗?如果不是得话是什么时候不适合呢 拿一些测试应该由编写的人完成 哪一些应该由其他人完成比较好?有没有具体的划分 封闭开发以及合作开发应该以怎么样的频率交替核实?例如两个人开发进度不同 一个人需要交流 另一

软件工程作业-08

•每个人评价一下大家手头正在使用输入法或者搜索类的软件产品. 从用户界面.记住用户选择.短期刺激.长期使用的好处坏处.不要让用户犯简单的错误. 评价软件: 搜狗拼音 用户界面 这是界面,非常简单,用户可以自定义皮肤,让用户感到非常舒适,比较个性化. 而在使用上搜狗拼音也充分考虑到了用户的使用体验使打字时的界面非常炫酷或者唯美,这点做得非常棒. 记住用户选择 在记住用户选择方面,想必每个输入法都必须做到这一点,而相比而言搜狗做得更好,它会记住用户刚刚输入的子并把它放在第一个选择位置上. 而且搜狗输

第四次软件工程作业

1.敏捷开发是在什么样的背景下产生的?其主要特点有哪些?什么时候选择敏捷开发更恰当,为什么? 敏捷开发产生的背景:从20世纪70年代到90年代提出并使用的许多软件开发方法都试图在软件构思.文档化.开发和测试的过程中强加某种形式的严格性. 在20世纪90年代后期,一些抵制这种严格性的开发人员系统地阐述了他们自己的原则,试图强调灵活性在快速有效的软件生产中所发挥的作用.他们将他 们的思想整理为“敏捷宣言”. 主要特点:1. 工作在小的团队中    2. 团队是跨功能的-包括测试人员,开发人员,文档开

软件工程作业(一)

(一)QQ 1.最初使用QQ仅仅是为了和同学联系比较方便,我觉得QQ它的目标不仅仅是为了盈利.的确,QQ有很多功能是需要交钱的,但是它在和别人通信这个最重要的方面是免费的.所以,我个人认为QQ他的目标不仅仅是为了盈利,更重要的是为人们服务. 2.我是从腾讯官网上下载的. 3.通过弹出崩溃窗口来通知用户出行bug.QQ自带检查更功能,有新版本时会自动提醒用户更新. 4.第一,QQ每个一段时间会发布一个新的版本,会添加一些新的功能,像能够添加语音功能.打电话功能等.第二,QQ添加了很多元素,像QQ空

软件工程作业二

1书中说开发者要做足够好的软件,那么什么样软件是“足够好”的软件呢? 2作为一名大学生,如果我们要做软件这个职业的话,我们必然要成为软件工程师,那么作为一名软件工程师我们要怎样提升自己的能力和价值? 3当一个团队中发生了严重的分歧,我们应该如何处理呢? 4我们经常讲要有团队意识,尤其是软件工程师,但是现在社会上又有一种声音要全面发展的人才,这是否与书中强调的团队有冲突呢? 5在一个软件开发之前我们应该有哪些准备呢?在软件后续的维护中我们又需要做些什么呢? 6创新出来的新产品一定会比旧产品更受到人

软件工程作业

1.什么是RUP ? RUP(Rational Unified Process),统一软件开发过程,统一软件过程)是一个面向对象且基于网络的程序开发方法论. 瑞理统一过程(RUP)是Rational软件公司(Rational公司被IBM并购)创造的软件工程方法[1]  .RUP描述了如何有效地利用商业的可靠的方法开发和部署软件,是一种重量级过程(也被称作厚方法学),因此特别适用于大型软件团队开发大型项目. 最佳实践 六大经验 1.迭代开发: RUP的开发过程建立在一系列迭代之上,每次迭代都有一个