【中级软件设计师】上午题12-软件工程(2):单元测试、黑盒测试、白盒测试、软件运行与维护

news2024/12/21 17:12:52

【中级软件设计师】上午题12-软件工程(2)

  • 1 系统测试
    • 1.1 单元测试
    • 1.2 集成测试
      • 1.2.1 自顶向下
      • 1.2.2 自顶向上
      • 1.2.3 回归测试
  • 2 测试方法
    • 2.1 黑盒测试
      • 2.1.1 McCabe度量法
    • 2.2 白盒测试
      • 2.2.1 语句覆盖-“每个流程”执行一次
      • 2.2.2 判定覆盖
      • 2.2.3 条件覆盖-A=True B=True C=True和A=False B=False C=False
      • 2.2.4 判定/条件覆盖
      • 2.2.5 条件组合覆盖-“菱形”中的排列组合
      • 2.2.6 路径覆盖-流程中的YN覆盖
    • 2.3 伪代码+白盒测试+McCabe度量法
  • 3 运行和维护知识
    • 3.1 可维护性评价指标
    • 3.2 软件维护
    • 3.3 软件文档
    • 3.4 软件维护内容
  • 4 软件可靠性、可用性、可维护性
  • 5 沟通路径

1 系统测试

1.意义:系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试
2.目的:测试的目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷。

根据测试的概念和目的,在进行信息系统测试时应遵循以下基本原则。
(1)应尽早并不断地进行测试。
(2)测试工作应该避免由原开发软件的人或小组承担,
(3)在设计测试方案时,不仅要确定输入数据,而且要根据系统功能确定预期输出结果。
(4)在设计测试用例时,不仅要设计有效、合理的输入条件,也要包含不合理、失效的输入条件。
(5)在测试程序时,不仅要检验程序是否做了该做的事,还要检验程序是否做了不该做的事。
(6)严格按照测试计划来进行,避免测试的随意性。
(7)妥善保存测试计划、测试用例,作为软件文档的组成部分,为维护提供方便。
(8)测试例子都是精心设计出来的,可以为重新测试或追加测试提供方便。
(9)系统测试阶段的测试目标来自于需求分析阶段。

1.3.4.5.8.9比较常考 6.7没怎么考过

1.1 单元测试

单元测试也称为模块测试,在模块编写完成且无编译错误后就可以进行。单元测试侧重于模块中的内部处理逻辑和数据结构。如果选用机器测试,一般用白盒测试法。这类测试可以对多个模块同时进行。
在这里插入图片描述

1.2 集成测试

在这里插入图片描述

1.2.1 自顶向下

不需要编写驱动模块

1.2.2 自顶向上

需要编写驱动模块,不需要编写桩模块

1.2.3 回归测试

每当加入一个新模块作为集成测试的一部分时,软件发生变更,建立了新的数据流路径,可能出现新的IO,以及调用新的控制逻辑。
这些变更可能会使原来可以正常工作的功能产生问题。
在集成测试策略的环境下,回归测试是重新执行已测试过的某些子集,以确保变更没有传播不期望的副作用。

在改正当前故障的同时可能会引入新的故障, 这时需要回归测试。

2 测试方法

在软件测试过程中,应该为定义软件测试模板,即将特定的测试方法和测试用例设计放在一系列的测试步骤中。
动态测试。动态测试是指通过运行程序发现错误。在对软件产品进行动态测试时可以采用黑盒测试法和白盒测试法。

2.1 黑盒测试

黑盒测试也称为功能测试,在完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性。进行黑盒测试主要是为了发现以下几类错误。

常见的黑盒测试技术有:等价类划分、边界值分析、错误推测和因果图。(首字母缩写:bcyd饱餐一顿)

等价类划分测试方法中,一个测试用例的不合理的输入越多就说明该用例不是一个好的测试用例。

2.1.1 McCabe度量法

McCabe 度量法是通过定义环路复杂度,建立程序复杂性的度量,它基于一个程序模块的程序图中环路的个数。计算有向图G的环路复杂性的公式为:V(G)=m-n+2,其中V(G)是有向图 G 中的环路个数,m 是 G 中的有向弧数,n是 G中的节点数。

m是边的个数/箭头数,n是节点数
V(G) = 边数-节点数+2
在这里插入图片描述
例子:在这里插入图片描述
v(g)=10-7+2=5

2.2 白盒测试

使用白盒测试方法时,应根据 程序的内部逻辑 和 指定的覆盖标准 确定测试数据。
在这里插入图片描述

2.2.1 语句覆盖-“每个流程”执行一次

语句覆盖是指选择足够的测试数据,使被测试程序中的每条语句至少执行一次。(每个“菱形或长方形”执行一次)
语句覆盖对程序执行逻辑的覆盖很低,因此一般认为它是很弱的逻辑覆盖。

因为N(否定)语句上没有执行条件,所以只需要满足YY即可将“每个菱形”执行一次。
在这里插入图片描述

2.2.2 判定覆盖

判定覆盖也叫分支覆盖
至少满足每个流程的真和假各一次,YY和NN即可

2.2.3 条件覆盖-A=True B=True C=True和A=False B=False C=False

满足每个逻辑条件各种可能的值
A=True,False
B=True,False
C=True,False

A=True B=True C=True
A=False B=False C=False
可以一次性把ABC的值都满足为真值或假值
在这里插入图片描述

2.2.4 判定/条件覆盖

判定覆盖∪条件覆盖

2.2.5 条件组合覆盖-“菱形”中的排列组合

在这里插入图片描述

2.2.6 路径覆盖-流程中的YN覆盖

YY NN YN NY
最强的覆盖

2.3 伪代码+白盒测试+McCabe度量法

在这里插入图片描述
在这里插入图片描述
选B D

3 运行和维护知识

3.1 可维护性评价指标

1.可理解性
2.可测试性
3.可修改性
在这里插入图片描述

3.2 软件维护

软件维护:在软件工程的每一个阶段都应考虑并提高软件的可维护性;
软件维护通常比软件开发投入的时间、人力、精力更大。

3.3 软件文档

编写高质量文档可以提高软件开发的质量
文档也是软件产品的一部分,没有文档的软件就不能称之为软件。
软件文档的编制在软件开发工作中占有突出的地位和相当大的工作量
高质量文档对于软件产品的效益有着重要的意义

总的来说,软件文档只好不坏,选项中说软件文档不好的大概率就是不正确的。

3.4 软件维护内容

软件维护
1.正确性维护:正确性维护是指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误。
2.适应性维护:适应性维护是指使应用软件适应信息技术变化和管理需求变化而进行的修改。
3.完善性维护:这是为了扩充功能和改善性能而进行的修改,主要是指对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。占比很多50%~60%
4.预防性维护:为了改进应用软件的可靠性和可维护性,为了适应未来的软/硬件环境的变化,应主动增加预防性的新的功能,以使应用系统适应各类变化而不被淘汰。

题目中的一些话术:
2.适应性维护 这需要对数据类型/数据格式稍微进行一些改变
3.完善性维护 修改其排序算法使其更高效;系统交付用户使用后,为了改进系统

4 软件可靠性、可用性、可维护性

可靠性、可用性和可维护性是软件的质量属性,软件工程中,用0-1之间的数来度量。
可靠性是指一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率。可以用 M T T F / ( 1 + M T T F ) MTTF/(1+MTTF) MTTF/(1+MTTF)来度量,其中 MTTF 为平均无故障时间。
可用性是在给定的时间点上,一个系统能够按照规格说明正确运作的概率。可以用 M T B F / ( 1 + M T B F ) MTBF/(1+MTBF) MTBF/(1+MTBF)来度量,其中MTBF为平均失效间隔时间。
可维护性是在给定的使用条件下,在规定的时间间隔内,使用规定的过程和资源完成维护活动的概率。可以用 1 / ( 1 + M T T R ) 1/(1+MTTR) 1/(1+MTTR)来度量,其中 MTTR为平均修复时间。

MTTF, MTBF, MTTR 的含义分别是
mean time to failure 平均无故障时间
mean time between failures 平均失效间隔时间
mean time to repair 平均修复时间
这几个都是时间单位,在国外的网站可以搜到都是拿小时什么作为单位的,不是占比。

ttf可靠,tb可用

5 沟通路径

一般情况来说n个人员的开发小组(也就是无主程序员)有n * (n – 1) 条沟通路径;
主程序员的开发小组:有 n-1条沟通路径

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

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

相关文章

LangChain入门:24.通过Baby AGI实现自动生成和执行任务

随着 ChatGPT 的崭露头角,我们迎来了一种新型的代理——Autonomous Agents(自治代理或自主代理)。 这些代理的设计初衷就是能够独立地执行任务,并持续地追求长期目标。 在 LangChain 的代理、工具和记忆这些组件的支持下,它们能够在无需外部干预的情况下自主运行,这在真…

前端框架EXT.NET Dotnet 3.5开发的实验室信息管理系统(LIMS)成品源码 B/S架构

前端框架EXT.NET Dotnet 3.5开发的实验室信息管理系统(LIMS)成品源码 B/S架构 LIMS实验室管理系统 发展历史 实验室信息管理系统(LIMS),就是指通过计算机网络技术对实验的各种信息进行管理的计算机软、硬件系统。也就是将计算机网络技术与现…

批量归一化(部分理解)

目的与疑惑 在深度学习中,每层输入数据的分布可能因为前一层参数的微小变动而有较大变化, 这种现象称为内部协变量偏移(Internal Covariate Shift)。 批量归一化通过规范化层输入来减少内部协变量偏移,使网络更稳定&a…

day05 51单片机-外部中断、定时器

1 外部中断——按键控制LED亮灭 1.1 需求描述 本案例通过检测SW3触发的外部中断实现P00对应LED的亮灭。 1.2 硬件设计 1.2.1 中断简介 单片机中断是一种重要的计算机编程概念,用于处理在程序执行过程中突然发生的事件或条件。这些事件可以是外部硬件触发的,如按下按钮、…

使用composer开发自己的扩展包

前言 日常的开发中我们经常用到composer去安装其他人封装好的扩展包,如果你有好的功能代码想分享给其他人使用,就可以使用composer打包成扩展包。其他人用composer安装后就可以使用你的扩展包了。这篇文章教你如何打包自己的composer扩展包。 1.新建仓…

OceanBase单机版安装体验

前情提要 上周OceanBase开发者大会过后,作为观察员也来体验一下OB的安装。业内有某个国产安装用了两周,这种其实有点劝退了。话说就是10年前,没搞过Oracle的人也不用两周安装一个数据库啊。今天看看OB的(一体化)安装。…

Qt样式表的基本使用

在Qt应用程序中,样式表是一种强大的工具,可以帮助您自定义和美化界面,提升用户体验。通过使用样式表,您可以轻松地调整控件的外观和布局,从而实现更加个性化和专业化的界面设计。本文将详解Qt样式表的基本使用方法、技…

【机器学习-18】特征筛选:提升模型性能的关键步骤

一、引言 在机器学习领域,特征筛选是一个至关重要的预处理步骤。随着数据集的日益庞大和复杂,特征的数量往往也随之激增。然而,并非所有的特征都对模型的性能提升有所贡献,有些特征甚至可能是冗余的、噪声较大的或者与目标变量无关…

Java openrasp记录-01

例子1 https://github.com/anbai-inc/javaweb-expression 一个hook ognl、spel、MVEL表达式注入的例子 用的是asm5进行字节码修改 采用premain进行插桩,重写transform方法 expClassList是要hook的类,这里定义在MethodHookDesc 这里判断hook点通过类名…

ClickHouse 如何实现数据一致性

文章目录 ReplacingMegreTree 引擎数据一致性实现方式1.ReplacingMegreTree 引擎2.ReplacingMegreTree 引擎 手动合并3.ReplacingMegreTree 引擎 FINAL 查询4.ReplacingMegreTree 引擎 标记 GroupBy5.允许偏差 前言:在大数据中,基本上所有组件都要求…

【Python-Spark(大规模数据)】

Python-Spark(大规模数据) ■ Spark■ PySparl编程模型■ 基础准备■ 数据输入■ RDD的map成员方法的使用■ RDD的flatMap成员方法的使用■ RDD的reduceByKey成员方法的使用■ 单词计数统计■ RDD的filter成员方法的使用■ RDD的distinct成员方法的使用■…

【分布式通信】NPKit,NCCL的Profiling工具

NPKit介绍 NPKit (Networking Profiling Kit) is a profiling framework designed for popular collective communication libraries (CCLs), including Microsoft MSCCL, NVIDIA NCCL and AMD RCCL. It enables users to insert customized profiling events into different C…

【JavaScriptThreejs】判断路径在二维平面上投影的方向顺逆时针

原理分析 可以将路径每个连续的两点向量叉乘相加,根据正负性判断路径顺逆时针性 当我们计算两个向量的叉积时,结果是一个新的向量,其方向垂直于这两个向量所在的平面,并且其大小与这两个向量构成的平行四边形的面积成正比。这个新…

Android 组件提供的状态保存(saveInstanceState)与恢复(restoreInstanceState)

在Android的组件Activity中,有这样一对方法: onSaveInstanceeState 和 onRestoreInstanceState 这两对方法,可以让我在Activiy被异常销毁时,保存状态;以及在Activity重建时,恢复状态。 比如:当我们在输入…

MATLAB 2024a软件下载安装教程

1-首先下载Matlab,以下迅雷云链接,里面有全版本的matlab,根据自己的需要下载即可,建议下载最新版的,功能会更多,当然内存也会更大。 迅雷云盘迅雷云盘https://pan.xunlei.com/s/VNgH_6VFav8Kas-tRfxAb3XOA…

Linux I2C(二) - I2C软硬件架构

1,I2C的总线拓扑 2,I2C S/W topology linux kernel I2C framework使用如下的软件拓扑抽象I2C硬件(我们可以一起领会一下其中的“设备模型”思想): 1)platform bus(/sys/bus/platform&#xff0…

Oracle导出导入dmp等文件类型的多表数据的常用方法、遇见的常见问题和解决办法(exp无效sql???)

使用PLSQL执行导出表数据的时候有两种方法 1、使用Oracle命令【imp--exp】【impdp--expdp】 但是如果你的本机没有安装有Oracle数据库,使用的instant client远程连接服务器上的Oracle数据库时候,你没有Oracle数据库带有的exp.exe、imp.exe等扩展文件&a…

如何高效跟进项目进度?试试禅道几个功能

禅道提供了一系列功能和工具,可实现项目进度的有效管理和跟进,极大提升项目管理效率。禅道中的项目进度来源于迭代进度,迭代的进度又来源于任务的消耗和剩余工时,可通过以下功能有效跟进项目进展。 一、燃尽图 在禅道里&#xf…

机器学习day1

一、人工智能三大概念 人工智能三大概念 人工智能(AI)、机器学习(ML)和深度学习(DL) 人工智能:人工智能是研究计算代理的合成和分析的领域。人工智能是使用计算机来模拟,而不是人类…

【办公类-22-14】周计划系列(5-5)“周计划-05 周计划表格内教案部分“节日”清空改成“节日“” (2024年调整版本)Win32

背景需求: 本学期19周,用了近10周的时间,终于把周计划教案部分的内容补全了(把所有教案、反思的文字都撑满一个单元格), 一、原始教案 二、新模板内的教案 三、手动添加文字后的样式(修改教案…