系统测试与维护
创始人
2025-05-31 07:40:06

一、系统测试

  1. 测试的目标:测试是为了发现错误而执行程序的过程
  2. 测试的原则:
    1. 尽早并不断的进行测试
    2. 程序员避免测试自己自己设计的程序;测试工作应避免由原开发软件的人或小组来承担(单元测试除外)
    3. 不仅要包括合理、有效的输入条件、也要包括不合理、失效的输入条件
    4. 不仅要确定输入数据,而且要从系统的功能出发确定输出的结果
    5. 不仅要检测程序是否做了该做的事情,还要检测是否做了不该做的事情
    6. 修改后应进行回归测试
    7. 尚未发现的错误数量与该程序已发现的错误数成正比
  1. 基本测试活动:
    1. 拟定测试计划,制定系统测试的计划,在拟定测试计划时,要充分考虑整个项目的开发时间和开发进度以及一些人为因素和客观条件等,使的测试计划是可行的。测试计划的内容主要有:测试内容、进度安排、测试所需的环境和条件、测试培训安排等
    2. 编制测试大纲,测试大纲是测试的依据。其明确详尽地规定了在测试中针对系统的每一个功能或特性所必须完成的基本测试项目和测试完成的标准
    3. 设计和生成测试用例,根据测试大纲,设计和生成测试用例。在测试用例时,可综合利用前面介绍的测试用例设计技术,产生测试设计说明文档,其内容主要有:被测项目、输入数据、测试过程、预期输出结果等
    4. 执行系统测试、实施测试,测试的实施阶段是一系列的测试周期组成的。每个测试周期中,测试人员和开发人员将依据预先编制好的测试大纲和准备好的测试用例,对被测软件或设备进行完整的测试
    5. 缺陷管理与改错,生成测试报告;测试完成后要形成响应的测试报告,主要对测试进行概要说明,列出测试的结论,指出缺陷和错误
  1. 测试阶段划分:
    1. 单元测试:
      1. 概念:模块测试,是通过对每个最小的软件模块进行测试,独照模块的功能说明,检查各个程序模块是否正确地实现了规定的功能,确保其能正常工作
      2. 测试主体:单元测试由开发人员执行
      3. 测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试(模块测试、模块功能、性能、接口等)
    1. 集成测试:
      1. 概念:在单元测试的基础上,需求将所有的模块按照概要设计说明书和详细设计说明书的要求进行组装。其目的是验证组成软件系统的各模块的接口和交换作用(模块间的接口)
      2. 组装时需要考虑的问题:把各个模块连接起来的时候,穿越模块接口的数据是否会丢失
      3. 一个模块的功能是否会影响另一个模块的功能产生不利的影响;各个子功能组合起来,能否达到预期要求的父功能;全局数据结构是否有问题;单个模块的误差累计起来,是否会放大,以致于达到不能接受的程度;
      4. 模块组装的方式:
        1. 一次性组装方式:发现有错误,找不到原因,查错和改错都会遇到困难
        2. 自顶向下组装方式:在测试过程中较早地验证了主要的控制和判断点,功能可行性较早地发现得到证实,还能增强开发者和用户成功的信息。缺点:导致过度的回归测试;
        3. 自底向上的增值方式:可以把容易出问题的部分早期 发现,早期解决;缺点:对主要部分的控制直到最后才能接触到;可以实施多个模块的并行测试,提高测试效率;
        4. 混合增值方式
      1. 冒烟测试(smoke testing):源自硬件行业,对一个硬件或硬件组件进行更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试
    1. 系统测试:
      1. 概念:系统测试真实环境下,验证完整的软件配置项能否和系统正确连接。将软件与整个系统的硬件、外设、支持软件、数据和人员等结合起来,以需求规格说明为依据,在实际运行环境下运行测试。检验其是否有不符合系统说明书的地方。
      2. 系统测试过程分为计划于准备、执行、返工与回归测试三个阶段:
        1. 内容:系统测试一般要完成功能测试、性能测试、恢复测试、安全测试、强度测试以及其他限制条件的测试;
      1. 性能测试三个:
        1. 负载测试:确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况
        2. 压力测试:通过确定一个系统的瓶颈或不能接受性能点,来获得系统能提供的最大服务级别的测试
        3. 强度测试:在系统资源特别低的情况下考察软件系统运行情况
        4. 并发测试:并发测试也称为容量测试,主要用来确定系统可处理的同时在线的最大用户数
    1. 确认测试:
      1. 概念:合格性测试,用来验证软件与用户需求的一致性
      2. 确认测试包括:内部确认测试,Alpha测试、Beta测试、验收测试。
  1. 静态测试与动态测试
    1. 静态测试就是不运行软件测试的程序,而是采用人工检测、计算机分析辅助静态分析的手段来对程序进行检测。静态测试的方法主要有桌前检查、代码走查、代码审查。
    2. 动态测试分为黑盒测试、白盒测试和灰盒测试。白盒测试也称为结构性测试、黑盒测试也称为功能性测试,灰盒测试是二者的结合;
  1. 静态测试方法:
    1. 桌前检查:由程序员检查自己编写的程序。程序员在程序通过编译之后,进行单元测试设计之前,对源代码进行分析和检验,并补充相关的文档,目的就是发现程序中的错误。
    2. 代码审查:代码审查是由若干程序员和测试人员组成的一个会审小组,通过阅读、讨论和争议、对程序进行静态分析的过程。代码审查的 过程可以分为两个步骤:第一步:小组负责人提前把设计规格说明书、控制流程图、程序文本以及有关要求、规范等分发给小组成员,作为评审的依据。
    3. 代码走查:代码走查与代码审查基本相同,过程也分为两个步骤:第一步:把材料先发给走查小组每个成员,让他们认真研究程序,然后再开会。第二步:开会的程序与代码会审不同,不是简单地读程序和对照程序检查单进行检查,而是让与会者“充当”计算机。即首先由测试组成员为被测试程序准备一批有代表性的测试用例,提交给走查小组。走查小组开会,集体扮演计算机角色,让测试用例沿着程序的逻辑运行一遍,随时记录程序的踪迹,,供分析和讨论使用。
    4. 静态测试都是做的静态分析、静态分析有:
      1. 控制流分析:是否存在没有使用的语句、无法到达的语句、调用并不存在的子程序
      2. 数据流分析:引用未定义的变量、对以前未使用的变量再次赋值
      3. 接口分析:模块之间的接口一致性、子程序和函数之间的接口一致性、函数形参与实参的数量、顺序、类型的一致性
      4. 表达式分析:括号不匹配、数组引用越界、除数为0等等
  1. 动态测试方法:
    1. 白盒测试(结构测试)
      1. 概念:根据内部结构和逻辑来设计测试用例,对程序路径和过程进行测试。主要用于单元测试阶段。
      2. 语句覆盖:
      3. 判断覆盖
      4. 条件覆盖:
      5. 判断、条件覆盖:
      6. 条件组合覆盖:
      7. 路径覆盖:
      8. 基本路径测试
      9. 循环覆盖:
    1. 黑盒测试(功能测试):
      1. 概念:黑河测试基于产品规格说明书,从用户角度针对产品特定的功能和特性进行验证活动,确认每个功能是否得到完整实现,用户能否正常使用这些功能,主要是用于集成测试、确认测试和系统测试阶段。
      2. 视图发现错误:功能不正确或遗漏;界面错误;数据库访问错误;性能错误;初始化和终止错误等
      3. 方法:
        1. 等价类划分法:
        2. 边界值分析:
        3. 错误推测:
        4. 判定表:最适合描述在多个逻辑条件取值的组合所构成的复杂情况下,分别要执行那些不同的动作。
        5. 因果表:根据输入条件与输出结果之间的因果关系来设计测试用例;
  1. 面向对象的测试:
    1. 算法层(单元测试):包括等价类划分测试、组合功能测试(基于判定表的测试)、递归函数测试和多态消息测试(方法层次)
    2. 类层(模块测试):包括不变式边界测试、模态类测试和非模态类测试
    3. 模板层、类树层(集成测试):包括多态服务测试和展平测试
    4. 系统层、系统测试
  1. 测试自动化:
    1. 优点:提高测试执行的速度;提高运行效率;保证测试结果的准确性;连续运行测试脚本;模拟现实环境下受约束的情况
    2. 缺点:不能保证所有的测试活动都可以自动完成;不能保证减少人力成本;一般不可以免费获得;不能保证降低测试工具
  1. 验证与确认的区别
    1. 验证是指软件开发周期中的一个给定阶段的产品是否达到在上一个阶段确立的需求的过程
    2. 确认是指在软件开发过程结束时对软件进行评价以确定它是否和软件需求相一致的过程
    3. 测试是指通过执行程序来有意识地发现程序中的设计错误和编码错误的过程,测试是验证和确认的手段之一

二、遗留系统演化测试

  1. 改造策略(高水平、高价值):在遗留系统的基础上,新增功能或者做改进使用
  2. 集成策略(高水平、低价值):存在信息孤岛,通过集成打通信息孤岛
  3. 淘汰策略(低水平、低价值)
  4. 集成策略(低水平、高价值):完全兼容遗留系统的功能模型和数据模型的方式重新开发系统。

三、新旧系统转换测试

  1. 直接转换【风险高、成本低】
  2. 并行转换【风险低、成本高】:新旧系统并行运行一段时间
  3. 分段转换【折中方案】:分地域上新系统,分子系统分阶段上线新系统

四、系统运行 与维护

  1. 影响可维护性的因素
    1. 可理解性:是通过阅读源代码和相关文档,了解软件的功能和如何运行的容易程度
    2. 可修改性:是指修改软件的难易程度
    3. 可测试性:是指验证软件程序正确的难易程度
    4. 最后:可测试性好的软件,通常意味着软件设计简单 ,复杂性低。因为软件的复杂性越大,测试的难度也就越大。
    5. 可靠性:一个软件的可靠性越高,需要维护的概率就会越低
    6. 可移植性:是指将软件从一个环境移植到新的环境下正确运行的难易程度。软件运行环境的变化是软件维护的一种常见情形,可移植性好的软件会减低维护的概率
  1. 软件的维护分类:
    1. 改正性维护:识别和纠正软件错误(测试阶段未发现的bug)
    2. 适应性维护:外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据存储介质)可能发生的变化。为使软件适应这种变化,而去修改软件的过程就称为适应性维护
    3. 完善性维护:提升性能或增加功能
    4. 预防性维护:针对未来,对系统的可维护性和可靠性进行预先 提升。如将专用的报表功能改为通用报表生成功能,以适应将来报表格式的变化

相关内容

热门资讯

玉龙雪山前的蓝眼泪太多了,俗称... 到丽江旅游,“珍珠湖”算是个挺值得打卡的免费景区,因为正好地处玉龙雪山脚下,当明镜的湖水与之交相辉映...
五粮液:深耕酒旅融合,拓展产业... 导读:从“501中国白酒文化圣地”的活态传承,到擘画世界级酒旅IP的战略路径,五粮液正以“和合共生、...
汉中的美食有哪些? 汉中,这座位于陕西南部的城市,不仅有着秀丽的自然风光,更有着令人垂涎欲滴的美食。这里的美食融合了南北...
听我讲几个家常菜背后的感人故事... 食物,它可不是仅仅能满足生存需求的那种简单东西,而是深深装载着记忆跟情感的特别容器。每一道菜肴的背后...
一道咸鱼蒸肉饼,藏着家的记忆与... 一个故事,就是一道美食。它所承载的,远远不只是食材以及风味,更是特定的记忆、情感,还有一段生活的切片...