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

news/2024/9/24 22:35:16/

【中级软件设计师】上午题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 运行和维护知识
  • 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.ppmy.cn/news/1437589.html

相关文章

stack,queue的模拟实现以及优先级队列

这篇博客用来记录stack&#xff0c;queue的学习。 stack的模拟实现 stack的模拟实现比较简单&#xff0c;先上代码 #pragma once #include<vector> #include<list> #include<deque> #include<iostream> using std::deque; using namespace std;name…

天软特色因子看板 (2024.4 第7期)

该因子看板跟踪天软特色因子A05005(近一月单笔流出金额占比(%)&#xff0c;该因子为近一月单笔流出金额占比(% 均值因子&#xff0c;用以刻画下跌时的 单成交中可能存在的抄底现象 今日为该因子跟踪第7期&#xff0c;跟踪其在SW801050 (申万有色金属) 中的表现&#xff0c;要点…

【QT进阶】Qt http编程之nlohmann json库使用的简单介绍

往期回顾 【QT进阶】Qt http编程之http相关类的简单介绍-CSDN博客 【QT进阶】Qt http编程之用户登录注册功能实现-CSDN博客 【QT进阶】Qt http编程之json解析的简单介绍-CSDN博客 【QT进阶】Qt http编程之nlohmann json库使用的简单介绍 一、nlohman json库 1、C常用Json库 J…

.Net使用Elastic.Clients.Elasticsearch在Elasticsearch8中实现向量存储和相似度检索

文章目录 一、测试环境二、代码1、创建包含DenseVector的索引2、索引文档3、对向量字段进行近似knn检索 三、参考 一、测试环境 Elastic.Clients.Elasticsearch版本&#xff1a;8.13.0 Elasticsearch版本&#xff1a;8.13.0 二、代码 1、创建包含DenseVector的索引 public …

protobuf的优缺点

优点 高效性&#xff1a;protobuf使用二进制进行数据编码&#xff0c;体积更小&#xff0c;传输速度更快&#xff0c;解析速度也更快 跨平台&#xff1a;使用二进制编码进行传输&#xff0c;不同平台的编解码都可用&#xff0c;但如果是json这种直接以文本文件进行传输&#x…

代码随想录第51天 | 309.最佳买卖股票时机含冷冻期 、 714.买卖股票的最佳时机含手续费

一、前言 参考文献&#xff1a;代码随想录&#xff1b; 今天还是买卖股票&#xff0c;只是又多了一些条件。一个是含有冷冻期&#xff0c;在冷冻期期间不可出售股票&#xff1b; 我们直接开始做题吧&#xff01; 二、最佳买卖股票时机含冷冻期 1、思路&#xff1a; 其实这…

Oracle Analytics BIEE 操作方法(六)数据格式1:百分比

问题&#xff1a; 有如下公式&#xff0c;将数据显示为按行的百分比。此时数据显示只会有一位小数。想显示两位 解决方案 在分析中找到“高级”标签&#xff0c;将“分析XML”中内容复制出来 替换 将&#xff1a;minDigits“1” maxDigits“1” 替换为&#xff1a;minDigits…

平衡二叉树、红黑树、B树、B+树

Tree 1、前言2、平衡二叉树和红黑树3、B树和B树3.1、B树的构建3.2、B树和B树的区别3.3、数据的存储方式 1、前言 本文侧重在理论方面对平衡二叉树、红黑树、B树和B树的各方面性能进行比较。不涉及编程方面的实现。而关于于平衡二叉树在C中的实现&#xff0c;我的上一篇文章平衡…