6. 系统测试与维护
软件测试概念与方法
- 尽早、不断的进行测试
- 程序员避免测试自己设计的程序
- 既要选择有效、合理的数据、也要选择无效,不合理的数据
- 修改后应进行回归测试
- 尚未发现的错误数量与该程序已发现错误数成正比
- 动态测试
- 黑盒测试法
- 白盒测试法
- 灰盒测试法
- 静态测试
- 桌前检查
- 代码审查
- 代码走查
- 黑盒测试法
- 等价类划分
- 边界值分析
- 错误推测
- 因果图
- 白盒测试法
- 基本路径测试
- 循环覆盖测试
- 逻辑覆盖测试
- 语句覆盖
- 判定覆盖
- 条件覆盖
- 条件判定覆盖
- 修正的条件判断覆盖
- 条件组合覆盖
- 点覆盖
- 边覆盖
- 路径覆盖
测试阶段
不一定存在系统测试,回归测试为发生需求变化后进行
狭义性能测试分类
- 负载测试
- 确定再各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况
- 压力测试
- 通过确定一个系统的瓶颈或不能接受的性能点,来获得系统能提供的最大服务级别的测试
- 强度测试
- 再系统资源特别低的情况下考察软件系统运行情况
- 并发测试
- 并发测试也称为容量测试,主要用来确定系统可处理的同时再线的最大用户数
系统测试活动与步骤
- 制定系统测试计划
- 进行人员以及任务的确定,明确测试范围,测试方法,测试环境与辅助工具
- 设计系统测试用例
- 如:等价类划分,边界值分析等测试方法的应用
- 执行系统测试
- 执行设计好的测试用例,并记录结果
- 缺陷管理与改错
- 消除已发现的错误
面向对象的测试
- 算法层(单元测试)
- 包括等价类划分测试,组合功能测试(基于判定表的测试)、递归函数测试和多态消息测试
- 类层(模块测试)
- 包括不变式边界测试、模态类测试和非模态类测试
- 模板层/类树层(集成测试):包括多态服务测试和展平测试
- 系统层(系统测试)
测试自动化
- 提高测试的速度
- 提高运行效率
- 保证测试结果的准确性
- 连续运行测试脚本
- 模拟现实环境下受约束的情况
- 不一定能实现的
- 所有测试活动都可以自动完整
- 减少人力成本
- 可以免费获得
- 降低测试工作量
软件调试
软件调试方法
- 蛮力法
- 主要思想是“通过计算机找错”,低效,耗时
- 回溯法
- 从出错处人工沿控制流程往回追踪,指导发现出错的根源。复杂程序由于回溯路径多,难以实施
- 原因排错法
- 主要思想是演绎和归纳,用二分法实现
软件调试与测试的区别
- 测试的目的是找出存在的错误,而调试的目的是定位错误并修改程序以修正错误
- 调试是测试之后的活动测试和调试在目标,方法和思路上都有所不同
- 测试从一个已知的条件开始,使用预先定义的过程,有预知的结果;调试从一个未知的条件开始,结束的过程不可预计
- 测试过程可以事先设计,进度可以事先确定;调试不能描述过程或持续时间
软件评审
- 不应以测试代替评审
- 评审人员应关注产品而不应评论开发人员
- 评审人员应关注于实质性问题
- 评审会议不应变为问题解决方案讨论会
- 评审应被安排进入项目计划
- 评审参与者应了解整个评审过程
- 评审人员事先应对评审材料充分了解
- 应重视评审的组织工作
验证于确认
- 验证是在软件开发周期的一个给定阶段的产品是否达到在上一阶段确立的需求的过程
- 确认是指在软件开发过程结束时对软件进行评价以确定它是否和软件需求相一致的过程
- 测试是指通过执行程序来有意识地发现程序中的设计错误和编码错误的过程。测试是验证和确认的手段之一
软件过程改进-CMMI
系统测试
软件开发环境与工具
- 软件开发支持环境
- 环境机制
- 环境信息库
- 过程控制和消息服务
- 用户界面规范
- 工具集
- 系统规划工具
- 建模工具
- 分析设计工具
- 编程工具
- 测试工具
- 项目管理工具
- 环境机制
- 软件生存期支持环境
系统运行与评价
系统转换计划-遗漏系统演化策略
- 淘汰策略
- 遗留系统的技术含量较低,且具有较低的业务价值,对遗留系统的完全淘汰是企业资源的根本浪费,系统分析师应该善于“变废为宝”,通过对遗留系统功能的理解和借鉴,可以帮助新系统的设计,降低新系统开发的风险
- 继承策略
- 遗留系统的技术南梁较低,已经满足企业运作的功能或性能要求,但具有较高的商业价值,目前企业的业务尚紧密依赖该系统。对这种遗留系统的演化策略为继承。在开发新系统时,需要完全兼容遗留系统的功能模型和数据模型。为了保证业务的连续性,新老系统必须并行运行一段时间,再逐渐切换到新系统上运行
- 改造策略
- 遗留系统具有较高的业务价值,基本上能够满足企业业务运作和决策支持的需要,这种系统可能建成的时间还很短,对这种遗留系统的演化策略为改造。改造包括系统功能的增强和数据模型的改造两个方面。系统功能的增强是指再原有系统的基础上增加新的应用要求,对遗留系统本身不做改变;数据模型的改造是指将遗留系统的旧的数据模型向新的数据模型的转化
- 集成策略
- 遗留系统的技术含量较高,但其业务价值较低,可能只完成某个部门(或子公司)的业务管理。这种系统再各自的局部领域里工作良好,但对于整个企业来说,存在多个这样的系统,不同的系统基于不同的平台,不同的数据模型,形成了一个个信息孤岛,这种遗留系统的演化策略为集成
系统转换计划-新旧系统的转换策略
系统转换计划-数据转换与迁移
系统运行与维护
软件维护是生命周期的一个完整部分。可以将软件维护定义为需要提供软件支持的全部活动,这些活动包括再交付之前完成的活动,以及交付后完成的活动。交付前完成的活动包括交付后运行的计划和维护计划等;交付后的活动包括软件修改、培训、帮助资料等