软件工程入门

文章目录

  • 黑盒测试与白盒测试
  • 黑盒测试(基于规格)
    • 1. 等价类划分
    • 2. 边界值分析
    • 3. 决策表
    • 4. 状态转换
  • 白盒测试(基于代码)
    • 1. 语句覆盖
    • 2. 条件覆盖
    • 3. 路径覆盖
  • 集成测试
  • 集成的策略
    • 大爆炸集成
    • 自顶向下集成
    • 自底向上集成
    • 持续集成
  • 桩、驱动与集成测试用例
  • 类间关系
  • 依赖
        • 语义
        • 语法
        • UML图示
  • 关联
        • 语义
        • 语法
        • UML图示
  • 聚合
        • 语义
        • 语法
        • UML图示
  • 组合
        • 语义
        • 语法
        • UML图示
  • 继承
        • 语义
        • 语法
        • UML图示
  • 实现
        • 语义
        • 语法
        • UML图示
  • 总结
  • 内聚
    • 1. 偶然内聚
    • 2. 逻辑内聚
    • 3. 时间内聚
    • 4. 过程内聚
    • 5. 通信内聚
    • 6. 功能内聚
    • 7. 信息内聚
  • 耦合
    • 1. 内容耦合
    • 2. 公共耦合
    • 3. 重复耦合
    • 4. 控制耦合
    • 5. 印记耦合
    • 6. 数据耦合
  • 软件体系结构风格
    • 一、主程序/子程序风格
      • 1. 简介
      • 2. 设计决策与约束
      • 3. 实现
      • 4. 优点
      • 5. 缺点
      • 6. 应用
    • 二、面向对象式风格
      • 1. 简介
      • 2. 设计决策与约束
      • 3. 实现
      • 4. 优点
      • 5. 缺点
      • 6. 应用
    • 三、分层风格
      • 1. 简介
      • 2. 设计决策与约束
      • 3. 实现
      • 4. 优点
      • 5. 缺点
      • 6. 应用
    • 四、MVC风格
      • 1. 简介
      • 2. 设计决策与约束
      • 3. 实现
      • 4. 优点
      • 5. 缺点
      • 6. 应用

用例图及用例描述_kun_lun_jian的博客-CSDN博客_什么是用例描述

ID 用例的标识
名称 对用例的内容的精确描述,体现了用例所描述的任务
参与者 描述系统的参与者和每个参与者的目标
触发条件 标识启动用例的事件
前置条件 用例能够正常启动和工作的需要的系统状态
后置条件 用例执行完成后的系统状态
正常流程 在常见的符合预期的条件下,系统与外界的行为交互序列
扩展流程 用例中可能发生的其他场景
特殊需求 和用例相关的其他特殊需求,尤其是非功能性需求

契约式编程与防御式编程

黑盒测试与白盒测试

黑盒测试(基于规格)

黑盒测试(black-box testing)是把测试对象看做一个黑盒子,完全基于输入和输出数据来判定测试对象的正确性。测试使用测试对象的规格说明来设计输入和输出数据。
早期的黑盒测试主要使用、等简单方法[Myers1979],后来人们为形式化模型、UML等各种规格手段都建立了相应的测试方法[Bochmann1994,Bertolino2003]。

1. 等价类划分

等价类划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的、常用的黑盒测试用例设计方法。

如图19-8所示,等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其他值的测试。因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量有代表性的测试数据取得较好的测试结果。

3. 决策表

决策表是为复杂逻辑判断设计测试用例的技术。决策表是由、、和四个象限组成的表格
决策表是一种决策逻辑的表示方法,用于描述复杂决策逻辑,其基本结构如表18-2所示。

例如,”礼品赠送事件触发决策”所描述的复杂决策可以建立正式的决策表(如表18-3)。

2. 条件覆盖

条件覆盖设计测试用例的标准是确保程序中每个判断的每个结果都至少满足一次。条件覆盖保证判断中的每个条件都被覆盖了,这样就可以避免测试时cashPayment为false没有得到测试的情况。

使用条件覆盖测试时,可以发现它有两个判断和,需要让cashPayment和vip取true与false各一次,设计测试用例如表19-7所示。
条件覆盖的覆盖程度比语句覆盖强,但是仍然不能保证覆盖所有的执行路径。例如,和这两个条件下的路径就没有得到执行。

集成测试

集成的策略

大爆炸集成

自顶向下集成

优点:

● 按深度优先可以首先实现和验证一个完整的功能需求;
● 只需最顶端一个驱动( driver );
● 利于故障定位。

缺点:

● 桩的开发量大;
● 底层验证被推迟,且底层组件测试不充分。

因此,自顶向下集成适用于、、、的软件系统。

自底向上集成

优点:

● 对底层组件行为较早验证;
● 底层组件开发可以并行;
● 桩的工作量少;
● 利于故障定位。

缺点:

● 驱动的开发工作量大;
● 对高层的验证被推迟,设计上的高层错误不能被及时发现。

因此,自底向上集成适合应用于、、的软件系统。

持续集成

桩、驱动与集成测试用例

类间关系

依赖

语义

一个类A使用到了另一个类B,但是这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A

语法

类B作为类A的方法的参数(或者局部变量)存在

UML图示

由类A指向类B的带箭头虚线表示

关联

语义

比依赖关系强,必然的,长期的,强烈的;
分为单向关联(只是班级中增加了学生)、双向关联(在学生中也添加班级属性)
分为一对一(学生和学生证)、一对多(班级和学生)、多对多关联(学生和课程)
有两个类的关联(客户和订单、订单和商品)、还有一个类和自身关联(领导也是员工)

语法

类B作为成员变量形成存在于类A中

UML图示

由类A指向类B的带箭头虚线表示;双向关联可以取消两个箭头
在关联的两端可以标注关联双方的角色和多重性标记

聚合

语义

关联关系的一种特例
整体和部分的关系
整体部分可分离,整体的生命周期和部分的生命周期不同,has-a的关系
计算机与CPU、公司与员工的关系、班级和学生的关系

语法

同关联关系

UML图示

空心菱形加实线箭头

组合

语义

关联关系的一种特例
整体和部分关系、整体部分不可分离、比聚合更强 ,contains-a的关系
整体的生命周期和部分的生命周期相同
人和四肢的关系

语法

同关联关系

UML图示

实心菱形加实线箭头

继承

语义

类和子类的关系,接口和子接口的关系;
一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能

语法

extends

UML图示

一条带空心三角箭头的实线,从子类指向父类,或者子接口指向父接口。

实现

语义

类和接口之间的关系
一个类可以实现多个接口,实现所有接口的功能;体现了规范和实现分离的原则

语法

implements

UML图示

实现用一条带空心三角箭头的虚线表示,从类指向实现的接口

总结

  1. 组合>聚合>关联>依赖
  2. 关联和依赖的区别

关联关系强、长期
关联关系是通过属性来实现;依赖关联是通过方法形参或者局部变量实现

  1. 关联、组合/聚合的异同

都是关联,都是做类的属性
组合 /聚合表示的是整体和部分的关系,关联可以表示所有关系

  1. 组合和聚合的异同

都是关联的特例,都是表示的整体和部分的关系
整体部分的生命周期是否相同合更强

内聚

内聚(Cohesion)是一个模块内部各成分之间相关联程度的度量。

1. 偶然内聚

如果一个模块的各成分之间毫无关系,则称为偶然内聚。
模块的各成分之间没有关联,只是把分散的功能合并在一起。

例:A模块中有三条语句(一条赋值,一条求和,一条传参),表面上看不出任何联系,但是B、C模块中都用到了这三条语句,于是将这三条语句合并成了模块A。模块A中就是偶然内聚。

总结

判别特征:模块执行多个的操作。
修改方式:将操作按相关性封装进不同的模块中。

在判别偶然内聚的时候,需要从各个操作的语义入手,分析语义之间的相关性。

2. 逻辑内聚

几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。

例:A模块实现的是将对应的人员信息发送给技术部,人事部和财政部,决定发送给哪个部门是输入的控制标志决定的。模块A中就是逻辑内聚。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月21日
下一篇 2022年10月21日

相关推荐