系统分析师16:系统测试与维护

news2024/10/6 23:49:06

1 内容概要

在这里插入图片描述

2 软件测试类型

2.1 测试类型

  • 动态测试【计算机运行】

    • 白盒测试法:关注内部结构与逻辑
    • 灰盒测试法:介于两者之间
    • 黑盒测试法:关注输入输出及功能
  • 静态测试【人工监测和计算机辅助分析】

    • 桌前检查
    • 代码审查
    • 代码走查
    • 以上三个都是做的【静态分析】
      • 控制流分析:是否存在没有使用的语句/无法达到的语句/调用并不存在的子程序
      • 数据流分析:引用未定义的变量、对以前未使用的变量再次赋值。
      • 接口分析:模块之间接口的一致性、子程序和函数之间的接口一致性、函数形参与实参的数量、顺序、类型的一致性。
      • 表达式分析:括号不配对、数组引用越界、除数为零

2.1.1 白盒测试

  • 白盒测试【结构测试】:主要用于单元测试阶段。
    • 控制流测试【逻辑覆盖测试(语句覆盖最弱,路径测试覆盖最强)
    • 数据流测试
    • 程序变异测试【错误驱动测试】
      在这里插入图片描述

2.1.2 黑盒测试

  • 黑盒测试【功能测试】∶主要用于集成测试、确认测试和系统测试阶段
    • 等价类划分:不同等价类,揭示不同问题;有效等价类/无效等价类。
    • 边界值分析:1<=x<=10,可取x的值为0、1、10和11作为测试数据
    • 错误推测:依靠测试人员的经验和直觉
    • 判定表:最适合描述在多个逻辑条件取值的组合所构成的复杂情况下,分别要执行哪些不同的动作
    • 因果图:根据输入条件与输出结果之间的因果关系来设计测试用例

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

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

解析
软件测试一般分为两个大类:动态测试和静态测试。
动态测试是通过运行程序来发现错误的方法。它包括以下几种方法:

  • 边界值分析:测试输入域的边界值,因为错误往往发生在边界附近。
  • 逻辑覆盖:通过测试用例覆盖程序的逻辑路径,确保每条路径都被测试到。
  • 基本路径:通过分析程序的控制流图,设计测试用例以覆盖所有基本路径。

静态测试是采用人工和计算机辅助静态分析的手段对程序进行检测的方法。它包括以下几种方法:

  • 桌面检查:人工检查代码,查找错误。
  • 代码审查:通过团队评审代码,查找错误和改进建议。
  • 代码走查:通过模拟程序的执行过程,人工检查代码的逻辑和结构。

答案:A、C。

例2
用边界值分析法,假定10≤X≤30,那么X在测试中应取的边界值是( )。
A:X=11,X=29
B:X=9,X=10,X=30,X=31
C:X=10,X=30
D:X=9,X=31
在这里插入图片描述

解析

  • 边界值分析法要求测试边界值及其附近的值;
  • 对于范围10≤X≤30,边界值及其附近的值包括:
    • 下边界:10
    • 下边界减1:9
    • 上边界:30
    • 上边界加1:31
    • 因此,X在测试中应取的边界值是9、10、30、31。

答案:B。

2.2 测试方法

  • AB测试
    多版本同时使用,利于收集各版本的用户反馈,评估出最好版本。故也算是一种 【网页优化方法】

  • Web测试
    web系统测试与其他系统 测试测试内容基本相同只是测试重点不同
    Web代码测试包括:源代码规则分析、链接测试、框架测试、表格测试、图形测试等方面

  • 链接测试
    链接测试可分为3个方面:

    • 测试所有链接是否按指示的那样 确实链接到了该链接的页面
    • 测试所链接的 页面是否存在
    • 保证Web应用系统上 没有孤立的页面

3 测试阶段

  • 回归测试:测试软件变更之后,变更部分的正确性和对变更需求的符合性

  • 测试阶段

    • 单元测试:依据 【详细设计】,模块测试,模块功能、性能、接口等
    • 集成测试:依据 【概要设计】,模块间的接口
    • 系统测试:依据 【需求文档】,在真实环境下,验证完整的软件配置项能否和系统正确连接
    • 确认测试:依据 【需求文档】,验证软件与需求的一致性。内部确认测试、Alpha测试、Beta测试、验收测试
      在这里插入图片描述
  • 集成测试策略

    • 一次性组装【风险高】
    • 增量式组装【测试全面】
      • 自顶向下【需要桩模块】
      • 自底向上【需要驱动模块】
      • 混合式【都需要】

在这里插入图片描述
例3
在单元测试中,( ) 。
A:驱动模块用来调用被测模块,自顶向下的单元测试中不需要另外编写驱动模块
B:桩模块用来模拟被测模块所调用的子模块,自顶向下的单元测试中不需要另外编写桩模块
C:驱动模块用来模拟被测模块所调用的子模块,自底向上的单元测试中不需要另外编写驱动模块
D:桩模块用来调用被测模块,自底向上的单元测试中不需要另外编写桩模块

解析
在单元测试中,驱动模块和桩模块的作用如下:

  • 驱动模块
    驱动模块(Driver Module)是用来调用被测模块的代码。它通常用于自底向上的单元测试中,因为自底向上的测试是从最底层的模块开始测试,逐步向上测试更高层次的模块。在这种情况下,需要编写驱动模块来调用被测模块。
  • 桩模块
    桩模块(Stub Module)是用来模拟被测模块所调用的子模块的代码。它通常用于自顶向下的单元测试中,因为自顶向下的测试是从最高层次的模块开始测试,逐步向下测试更低层次的模块。在这种情况下,需要编写桩模块来模拟被测模块调用的子模块。
  • 选项分析
    A: 驱动模块用来调用被测模块,自顶向下的单元测试中不需要另外编写驱动模块。这个选项是正确的,因为在自顶向下的单元测试中,通常需要编写桩模块而不是驱动模块
    B: 桩模块用来模拟被测模块所调用的子模块,自顶向下的单元测试中不需要另外编写桩模块。这个选项是错误的,因为在自顶向下的单元测试中,通常需要编写桩模块来模拟被测模块调用的子模块
    C: 驱动模块用来模拟被测模块所调用的子模块,自底向上的单元测试中不需要另外编写驱动模块。这个选项是错误的,因为在自底向上的单元测试中,通常需要编写驱动模块来调用被测模块
    D: 桩模块用来调用被测模块,自底向上的单元测试中不需要另外编写桩模块。这个选项是错误的,因为桩模块来模拟被测模块调用的子模块,而不是用来调用被测模块,在自底向上的单元测试中,通常不需要编写桩模块,而是需要编写驱动模块

答案: A。

3.1 系统测试

3.1.1 系统测试分类

  • 功能测试

  • 性能测试

    • 负载测试:各种工作负载下系统的性能
    • 压力测试【测上限】:系统的瓶颈或不能接受的性能点强度测试【测下限】:系统资源特别低的情况下运行
    • 容量测试【并发测试】:同时在线的最大用户数
    • 可靠性测试:MTTF之类的参数
  • 健壮性测试

  • 用户界面测试

  • 安全性测试

  • 安装与反安装测试

例4
软件性能测试有多种不同类型的测试方法,其中,()用于测试在限定的系统下考查软件系统极限运行的情况,()可用于测试系统同时处理的在线最大用户数量。
A:强度测试
B:负载测试
C:压力测试
D:容量测试

A:强度测试
B:负载测试
C:压力测试
D:容量测试

解析

  • 强度测试(Stress Testing)
    强度测试用于测试在限定的系统下考查软件系统极限运行的情况。它通过模拟极端条件下的负载,测试系统在超出正常工作负载时的表现,以确定系统的极限和稳定性。
  • 负载测试(Load Testing)
    负载测试用于测试系统在正常和预期峰值负载条件下的性能。它通过逐渐增加负载,测试系统在不同负载水平下的响应时间和资源使用情况。
  • 压力测试(Stress Testing)
    压力测试与强度测试类似,也是用于测试系统在极端条件下的表现。它通过超出系统正常工作负载的负载,测试系统的极限和稳定性。
  • 容量测试(Volume Testing):同时在线的最大用户数。
    根据题目描述:
  1. 用于测试在限定的系统下考查软件系统极限运行的情况的测试方法是强度测试。
  2. 可用于测试系统同时处理的在线最大用户数量的测试方法是容量测试。

答案:A、D。

3.1.2 系统测试步骤

  • 制定系统测试计划
    进行人员以及任务的确定,明确测试范围、测试方法、测试环境与辅助工具

  • 设计系统测试用例
    如:等价类划分、边界值分析等测试方法的应用

  • 执行系统测试
    执行设计好的测试用例,并记录结果

  • 缺陷管理与改错
    消除已发现的错误

3.2 面向对象测试

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

4 软件调试

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

      • 目的是找出存在的错误
      • 从一个已知的条件开始,使用预先定义的过程,有预知的结果
      • 测试过程可以事先设计,进度可以事先确定
    • 软件调试

      • 目的是定位错误并修改程序以修正错误
      • 从一个未知的条件开始,结束的过程不可预计
      • 调试不能描述过程或持续时间

5 系统转换计划

5.1 遗留系统演化策略

  • 开发新系统时,需要完全兼容遗留系统的功能模型和数据模型

  • 低水平、高价值:继承

  • 低水平、低价值:淘汰

  • 高水平、高价值:改造

    • 改造包括系统功能的增强和数据模型的改造两个方面
  • 高水平、低价值:集成

    • 针对“信息孤岛

在这里插入图片描述

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

解析

  • 低水平、高价值:继承
  • 低水平、低价值:淘汰
  • 高水平、高价值:改造
  • 高水平、低价值:集成

答案:D。

5.2 新旧系统的转换策略

在系统转换过程中,选择合适的转换策略至关重要,因为它直接影响到转换的顺利进行和系统的稳定性。以下是三种常见的系统转换策略:
在这里插入图片描述

5.2.1 直接转换策略(Big Bang Approach)

定义: 直接转换策略是指在某个特定的时间点,旧系统被完全停止,新系统立即接管所有功能。

优点:

  • 快速: 转换过程迅速,可以在短时间内完成。
  • 成本低: 不需要同时维护两个系统,节省了资源和成本。

缺点:

  • 风险高: 如果新系统出现问题,可能会导致业务中断,影响正常运营。
  • 缺乏过渡期: 没有时间进行逐步适应和调整,可能会导致用户不适应。

适用场景:

  • 适用于小型系统或对业务影响较小的系统。
  • 适用于新系统已经过充分测试,确保其稳定性和可靠性。

5.2.2 并行转换策略(Parallel Approach)

定义: 并行转换策略是指在一段时间内,新旧系统同时运行,并比较两者的输出结果,直到确认新系统稳定可靠后,再完全切换到新系统。

优点:

  • 风险低: 即使新系统出现问题,旧系统仍然可以继续运行,确保业务连续性。
  • 可靠性高: 通过并行运行,可以验证新系统的准确性和稳定性。

缺点:

  • 成本高: 需要同时维护两个系统,增加了资源和成本。
  • 复杂性高: 需要确保两个系统之间的数据同步和一致性。

适用场景:

  • 适用于关键业务系统,确保转换过程中的业务连续性。
  • 适用于新系统尚未完全验证,需要通过并行运行来逐步确认其可靠性。

5.2.3 分段转换策略(Phased Approach)

定义: 分段转换策略是指将系统转换过程分为多个阶段,逐步将新系统的各个模块或功能替换旧系统,最终完成整个系统的转换。

优点:

  • 风险可控: 通过分阶段进行,可以逐步验证新系统的各个模块,降低整体风险。
  • 灵活性高: 可以根据实际情况调整每个阶段的转换计划。

缺点:

  • 时间长: 转换过程较长,可能需要数月甚至更长时间。
  • 复杂性高: 需要详细规划每个阶段的转换步骤和时间表。

适用场景:

  • 适用于大型复杂系统,逐步验证和部署新系统。
  • 适用于需要逐步适应新系统的用户和业务流程。

在这里插入图片描述

5.3 数据转换与迁移

在这里插入图片描述

6 系统运行与维护

  • 影响可维护性的因素

    • 【可理解性】是指通过阅读源代码和相关文档,了解软件的功能和如何运行的容易程度
    • 【可修改性】是指修改软件的难易程度
    • 【可测试性】是指验证软件程序正确的难易程度
      可测试性好的软件,通常意味着软件设计简单,复杂性低。因为软件的复杂性越大,测试的难度也就越大
    • 【可靠性】一个软件的可靠性越高,需要维护的概率就会越低
    • 【可移植性】是指将软件从一个环境移植到新的的环境下正确运行的难易程度
      软件运行环境的变化是软件维护的一种常见情形,可移植性好的软件会降低维护的概率
  • 维护类型

    • 正确性维护【修BUG】︰识别和纠正软件错误/缺陷,测试不可能发现所有错误
    • 适应性维护【应变】∶指使应用软件适应环境变化【外部环境、数据环境】而进行的修改
    • 完善性维护【新需求】︰扩充功能和改善性能而进行的修改。
    • 预防性维护【针对未来】∶为了适应未来的软硬件环境的变化,应主动增加预防性的新的功能,以使用系统适应各类变化而不被淘汰。经典实例:【专用】改【通用】

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

A:完善性维护
B:适应性维护
C:预防性维护
D:改正性维护

A:完善性维护
B:适应性维护
C:预防性维护
D:改正性维护

A:完善性维护
B:适应性维护
C:预防性维护
D:改正性维护

解析
根据题目描述,我们可以将软件维护的不同类型与各个描述进行匹配:

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

答案:A、D、C。

7 附录 思维导图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2193203.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++11】新特性

前言&#xff1a; C11 是C编程语言的一个重要版本&#xff0c;于2011年发布。它带来了数量可观的变化&#xff0c;包含约 140 个新特性&#xff0c;以及对 C03 标准中约600个缺陷的修正&#xff0c;更像是从 C98/03 中孕育出的新语言 列表初始化 C11 中的列表初始化&#xff0…

社群团购中的用户黏性价值:以开源小程序多商户AI智能名片商城源码为例

摘要&#xff1a;本文探讨社群团购中的用户黏性价值&#xff0c;分析其与传统团购网站的区别&#xff0c;并阐述开源小程序多商户AI智能名片商城源码在增强社群团购用户黏性方面可能发挥的作用。 一、引言 在当今的商业环境中&#xff0c;社群团购逐渐成为一种重要的营销模式。…

新个性化时尚解决方案!Prompt2Fashion:自动生成多风格、类型时尚图像数据集。

今天给大家介绍一种自动化生成时尚图像数据的方法Prompt2Fashion。 首先创建了一组描述&#xff0c;比如“适合婚礼的休闲风格服装”&#xff0c;然后用这些描述来指导计算机生成图像。具体来说&#xff0c;他们使用了大型语言模型来写出这些服装的描述&#xff0c;接着将这些描…

毕业设计 大数据电影数据分析与可视化系统

文章目录 0 简介1 课题背景2 效果实现3 爬虫及实现4 Flask框架5 Ajax技术6 Echarts7 最后 0 简介 今天学长向大家介绍一个机器视觉的毕设项目 &#x1f6a9;基于大数据的电影数据分析与可视化系统 项目运行效果(视频)&#xff1a; 毕业设计 大数据电影评论情感分析 &#x1…

运动传感器

运动传感器 当你走近一些自动开关门、自动开关灯泡或自动启动自动扶梯的地方时&#xff0c;你是否会产生这样的疑问&#xff1a;**"它是怎么做到的&#xff1f; **它是怎么做到的&#xff1f; 如果有&#xff0c;本教程不仅会回答&#xff0c;还会告诉你如何制作。 让我们…

【Redis】Hash类型的常用命令

背景&#xff1a;redis中存储数据采取key-value键值对的形式&#xff0c;而hash内部也是键值对&#xff0c;为了区别这两个东西&#xff0c;hash内部的键值对称为&#xff1a;field-value&#xff0c;而redis的为key-value&#xff0c;这里的value包括&#xff1a;field-value。…

基于pytorch的手写数字识别

import pandas as pd import numpy as np import torch import matplotlib import matplotlib.pyplot as plt from torch.utils.data import TensorDataset, DataLoadermatplotlib.use(tkAgg)# 设置图形配置 config {"font.family": serif,"mathtext.fontset&q…

如何在华为云服务器查看IP地址,及修改服务器登录密码!!!

1.在华为云服务器查看IP地址 (1).第一步&#xff1a; 先找到控制台 (2).第二步&#xff1a; 点击华为云Flexus云服务 (3)第三步&#xff1a; 找到公网IP&#xff0c;就找到华为云服务器IP地址啦。 注意&#xff1a;在操作以上步骤的前提是要已注册华为云账号及购买云服务器…

PPPoE协议个人理解+报文示例+典型配置-RFC2516

个人认为&#xff0c;理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息&#xff0c;更加便于理解协议。 因此本文将在PPPoE协议报文的基础上进行介绍。 PPPoE协议发展 关于PPPoE基本原理&#xff0c;可参考1999年发布的《RFC2516-A Method fo…

class 031 位运算的骚操作

这篇文章是看了“左程云”老师在b站上的讲解之后写的, 自己感觉已经能理解了, 所以就将整个过程写下来了。 这个是“左程云”老师个人空间的b站的链接, 数据结构与算法讲的很好很好, 希望大家可以多多支持左程云老师, 真心推荐. 左程云的个人空间-左程云个人主页-哔哩哔哩视频…

8649 图的广度遍历

### 思路 1. **图的邻接表存储结构**&#xff1a;使用邻接表存储图的顶点和边信息。 2. **基本操作函数**&#xff1a;包括创建图、查找顶点、获取顶点值、获取第一个邻接顶点、获取下一个邻接顶点等。 3. **广度优先遍历&#xff08;BFS&#xff09;**&#xff1a;从某个顶点出…

LPDDR6 来之未远

很多朋友可能还没用上DDR5,但不好意思的是,DDR6 可能马上就要出现了。 三星和海力士较早开始DDR6 的设计,预计2025年商业化。 DDR6 速度 来源: 半导体观察 DDR6的速度将是主流的DDR4的四倍,将是现有DDR5的两倍,DDR6传输速度可达12800 Mbps。 LPDDR6 来源:快科技 L…

OpenAI董事会主席Bret Taylor的Agent公司Sierra:专注于赋能下一代企业用户体验

本文由readlecture.cn转录总结。ReadLecture专注于音、视频转录与总结&#xff0c;2小时视频&#xff0c;5分钟阅读&#xff0c;加速内容学习与传播。 视频来源 youtube: https://www.youtube.com/watch?vriWB5nPNZEM&t47s 大纲 介绍 欢迎与介绍 介绍Bret Taylor&#x…

功耗电流图的对比技巧

电流波形对比 使用系统画图工具的反色和透明设置项目&#xff0c;就可以将2张图合在一块看 方法【系统画图工具】 例如在相同的测试用例&#xff0c;可以对比电流和耗电量的差异

3.使用条件语句编写存储过程(3/10)

引言 在现代数据库管理系统中&#xff0c;存储过程扮演着至关重要的角色。它们是一组为了执行特定任务而编写的SQL语句&#xff0c;这些语句被保存在数据库中&#xff0c;可以被重复调用。存储过程不仅可以提高数据库操作的效率&#xff0c;还可以增强数据的安全性和一致性。此…

Python3 爬虫 中间人爬虫

中间人&#xff08;Man-in-the-Middle&#xff0c;MITM&#xff09;攻击是指攻击者与通信的两端分别创建独立的联系&#xff0c;并交换其所收到的数据&#xff0c;使通信的两端认为其正在通过一个私密的连接与对方直接对话&#xff0c;但事实上整个会话都被攻击者完全控制。在中…

LCD屏入门(基于ESP-IDF、SPI屏)

主要参考资料&#xff1a; ESP32-S3 开发 SPI 屏【DIY 智能手表】: https://www.bilibili.com/video/BV1Yc411y7bb/?spm_id_from333.337.search-card.all.click&vd_sourcedd284033cd0c4d1f3f59a2cd40ae4ef9 使用 SPI 屏和 I2C 触屏运行 SquareLine Studio 提供的手表 UI 示…

突触可塑性与STDP:神经网络中的自我调整机制

突触可塑性与STDP&#xff1a;神经网络中的自我调整机制 在神经网络的学习过程中&#xff0c;突触可塑性&#xff08;Synaptic Plasticity&#xff09;是指神经元之间的连接强度&#xff08;突触权重&#xff09;随着时间的推移而动态变化的能力。这种调整机制使神经网络能够通…

链动 2+1 模式 S2B2C 商城小程序:交易转化的创新引擎

摘要 在数字化商业时代&#xff0c;电商行业竞争激烈&#xff0c;交易转化成为核心问题。链动 21 模式 S2B2C 商城小程序源码作为创新电商模式&#xff0c;通过独特的推荐与分享机制、丰富奖励机制、AI 智能名片及 S2B2C 商城的个性化定制与供应链协同等&#xff0c;在交易转化…

redis+mysql数据一致性+缓存穿透解决方案

在分布式事务中我们知道有cap定理&#xff0c;即 我们保证高可用的情况下&#xff0c;必然要牺牲一些一致性&#xff0c;在保证强一致性的情况下&#xff0c;必然会牺牲一些可用性。而我们redismysql数据一致性的使用策略就是在我们保证可用性的情况下尽量保证数据的一致性。想…