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

软件工程


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

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

软件测试

测试方法

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

例题

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

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

测试阶段

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

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

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

例题

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

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

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

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

面向对象的测试(了解)

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

软件调试

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

软件测试 VS 软件调试

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

系统转换计划

遗留系统演化策略

例题

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

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

新旧系统转换策略

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

数据转换与迁移

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


系统运行与软件维护

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

例题

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

  • 完善性维护
  • 适应性维护
  • 预防性维护
  • 改正性维护
相关推荐
不凉帅1 小时前
NO.7系统架构设计和软件质量
系统架构
爱思德学术2 小时前
中国计算机学会(CCF)推荐学术会议-C(软件工程/系统软件/程序设计语言):SPIN 2026
软件工程·软件开发
赫尔·普莱蒂科萨·帕塔5 小时前
智能体工程
人工智能·机器人·软件工程·agi
C澒7 小时前
前端整洁架构(Clean Architecture)实战解析:从理论到 Todo 项目落地
前端·架构·系统架构·前端框架
C澒8 小时前
前端分层架构实战:DDD 与 Clean Architecture 在大型业务系统中的落地路径与项目实践
前端·架构·系统架构·前端框架
皮卡丘不断更11 小时前
告别“金鱼记忆”:SwiftBoot v0.1.5 如何给 AI 装上“永久项目大脑”?
人工智能·系统架构·ai编程
成茂峰12 小时前
软考高级·系统架构设计师 | 四、信息技术安全知识
安全·信息安全·系统架构·架构设计师
雾江流12 小时前
BiliPai 5.0.5 | B站开源第三方应用,纯净无广流畅
软件工程
牵牛老人12 小时前
【Qt 开发后台服务避坑指南:从库存管理系统开发出现的问题来看后台开发常见问题与解决方案】
开发语言·qt·系统架构
JMchen12313 小时前
AI编程与软件工程的学科融合:构建新一代智能驱动开发方法学
驱动开发·python·软件工程·ai编程