系统架构设计师 - 软件工程(3)

软件工程


大家好呀!我是小笙,本章我主要分享系统架构设计师 - 软件工程(3)知识,希望内容对你有所帮助!!

软件工程(13-22分)非常重要

软件测试

测试方法

动态测试【计算机运行】
  • 黑盒测试法 (一种软件测试方法,主要关注于软件系统的功能和行为,而不是其内部结构或实现细节)
    • 等价类划分:将所有可能的输入划分为若干个等价类,每个等价类代表了一类相似的输入
    • 边界值分析:测试输入的边界值和临近值
    • 错误推测:基于对系统可能出现错误的经验和直觉,设计测试用例以发现潜在的错误
    • 状态测试法:测试系统在各种状态之间转换的行为
  • 白盒测试法 (一种软件测试方法,专注于测试软件的内部逻辑和结构,而不仅仅是其功能)
    • 语句覆盖:确保每一条语句都被执行至少一次
    • 分支覆盖:测试所有可能的分支路径,以确保每个分支条件都被执行至少一次
    • 路径覆盖:测试所有可能的路径组合,包括不同的分支和循环
    • 条件覆盖:确保每个条件在所有可能的情况下都被测试到
  • 灰盒测试法 (黑盒 + 白盒)
    • 集成测试:测试系统各个组件的交互和集成效果,确保它们协同工作
    • 接口测试:检查系统组件或模块之间的接口是否按预期工作,验证数据交换的准确性
    • 功能测试:测试系统的功能是否符合需求,通常基于已有的部分内部知识设计测试用例
静态测试【纯人工】
  • 静态代码分析:使用静态分析工具对源代码进行分析,识别编程错误、资源泄漏、死代码等问题
  • 代码审查:开发者互相检查代码,确保代码质量,遵循编码规范,并识别潜在的错误或改进点(类似代码走查)
  • 文档审查: 审查文档是否清晰、准确地描述了系统需求和设计,确保其符合项目标准和需求
  • 桌面检查:对开发或测试环境的检查,确保所有必需的工具、文档和资源都在正确的位置,并且没有遗漏或配置错误

例题

1、软件测试一般分为两个大类:动态测试和静态测试。前者通过运行程序发现错误,包括 边界值分析、逻辑覆盖、基本路径 等方法;后者采用人工和计算机辅助静态分析的手段对程序进行检测,包括 桌面检查、代码审查、代码走查 等方法

  • 边界值分析、逻辑覆盖、基本路径
  • 桌面检查、逻辑覆盖、错误推测
  • 桌面检查、代码审查、代码走查
  • 错误推测、代码审查、基本路径

测试阶段

  • 单元测试:模块测试,模块功能、性能、接口等
  • 集成测试:模块间的接口
  • 系统测试:真实环境下,验证完整的软件配置项能否和系统正确连接
  • 确认测试:验证软件与需求的一致性。内部确认测试、Alpha测试、Beta测试、验收测试
  • 回归测试:测试软件变更之后,变更部分的正确性对变更需求的符合性
集成测试策略
  • 一次性组装(风险高)

  • 增量式组装(测试全面)

    • 自顶向下(需要桩模块)
    • 自底向上(需要驱动模块)
    • 混合式
系统测试
  • 功能测试
  • 性能测试
    • 负载测试:各种工作负载下系统的性能
    • 压力测试:系统的瓶颈或不能接受的性能点
    • 强度测试:系统资源特别低的情况下运行
    • 容量测试【并发测试】:同时在线的最大用户数
    • 可靠性测试:MTTF之类的参数
  • 健壮性测试
  • 用户界面测试
  • 安全性测试
  • 安装与反安装测试

例题

1、在单元测试中,驱动模块用来调用被测模块,自顶向下的单元测试中不需要另外编写驱动模块

  • 驱动模块用来调用被测模块,自顶向下的单元测试中不需要另外编写驱动模块
  • 桩模块用来模拟被测模块所调用的子模块,自顶向下的单元测试中不需要另外编写桩模块
  • 驱动模块用来模拟被测模块所调用的子模块,自底向上的单元测试中不需要另外编写驱动模块
  • 桩模块用来调用被测模块,自底向上的单元测试中不需要另外编写桩模块

2、软件性能测试有多种不同类型的测试方法,其中,强度测试 用于测试在限定的系统下考查软件系统极限运行的情况,容量测试 可用于测试系统同时处理的在线最大用户数量

  • 强度测试 负载测试 压力测试 容量测试

面向对象的测试(了解)

  • 算法层(单元测试):包括等价类划分测试、组合功能测试(基于判定表的测试)、递归函数测试和多态消息测试
  • 类层(模块测试):包括不变式边界测试、模态类测试和非模态类测试
  • 模板层/类树层(集成测试):包括多态服务测试和展平测试
  • 系统层(系统测试)

软件调试

  • 蛮力法:主要思想是"通过计算机找错",低效,耗时
  • 回溯法:从出错处人工沿控制流程往回追踪,直至发现出错的根源。复杂程序由于回溯路径多,难以实施
  • 原因排除法:主要思想是演绎和归纳,用二分法实现

软件测试 VS 软件调试

软件测试 软件调试
目的是找出存在的错误 目的是定位错误并修改程序以修正错误
从一个已知的条件开始,使用预先定义的过程,有预知的结果 从一个未知的条件开始,结束的过程不可预计
测试过程可以事先设计,进度可以事先确定 调试不能描述过程或持续时间

系统转换计划

遗留系统演化策略

例题

1、遗留系统的演化可以采用淘汰、继承、改造和集成四种策略。若企业中的遗留系统技术含量较高,业务价值较低,在局部领域中工作良好,形成了一个个信息孤岛时,适合于采用 集成 演化策略

  • 淘汰
  • 继承
  • 改造
  • 集成

新旧系统转换策略

  • 直接转换策略(把现有系统下线,新系统然后上线)
  • 并行转换策略
  • 分段转换策略

数据转换与迁移

旧数据库 -> 抽取 -> 转换 -> 装载 -> 新数据库


系统运行与软件维护

  • 正确性维护:指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误
  • 适应性维护:指使应用软件适应环境变化【外部环境、数据环境】而进行的修改
  • 完善性维护:扩充功能和改善性能而进行的修改
  • 预防性维护:为了适应未来的软硬件环境的变化,应主动增加预防性的新的功能,以使用系统适应各类变化而不被淘汰。如将专用报表功能改成通用报表生成功能,以适应将来报表格式的变化

例题

1、软件的维护并不只是修正错误。为了满足用户提出的增加新功能、修改现有功能以及一般性的改进要求和建议,需要进行 完善性维护 ,它是软件维护工作的主要部分;软件测试不可能揭露旧系统中所有潜在的错误,所以这些程序在使用过程中还可能发生错误,诊断和更正这些错误的过程称为 改正性维护 ;为了改进软件未来的可维护性或可靠性,或者为了给未来的改进提供更好的基础而对软件进行修改,这类活动称为 预防性维护

  • 完善性维护
  • 适应性维护
  • 预防性维护
  • 改正性维护
相关推荐
m0_547486664 小时前
软件工程复习知识点
软件工程
m0_547486664 小时前
最新《软件工程》选择题及答案
软件工程
J老熊9 小时前
JavaFX:简介、使用场景、常见问题及对比其他框架分析
java·开发语言·后端·面试·系统架构·软件工程
The_Ticker12 小时前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
架构师Wu老七1 天前
【软考】系统架构设计师-信息系统基础
系统架构·软考·系统架构设计师·信息系统基础
程序员JerrySUN1 天前
熟悉的 Docker,陌生的 Podman
linux·docker·容器·系统架构·podman
代码欢乐豆2 天前
第12章小测
软件工程
田梓燊3 天前
湘潭大学软件工程算法设计与分析考试复习笔记(四)
笔记·算法·软件工程
shinelord明3 天前
【再谈设计模式】适配器模式 ~接口兼容的桥梁
数据结构·设计模式·软件工程
张彦峰ZYF3 天前
互联网数字化商品管理浪潮思考:从信息化到精准运营
大数据·软件工程·软件需求