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

本文主要是介绍【中级软件设计师】上午题12-软件工程(2):单元测试、黑盒测试、白盒测试、软件运行与维护,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【中级软件设计师】上午题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条沟通路径

这篇关于【中级软件设计师】上午题12-软件工程(2):单元测试、黑盒测试、白盒测试、软件运行与维护的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/937062

相关文章

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

eclipse如何运行springboot项目

《eclipse如何运行springboot项目》:本文主要介绍eclipse如何运行springboot项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目js录当在eclipse启动spring boot项目时出现问题解决办法1.通过cmd命令行2.在ecl

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

Spring Boot项目打包和运行的操作方法

《SpringBoot项目打包和运行的操作方法》SpringBoot应用内嵌了Web服务器,所以基于SpringBoot开发的web应用也可以独立运行,无须部署到其他Web服务器中,下面以打包dem... 目录一、打包为JAR包并运行1.打包为可执行的 JAR 包2.运行 JAR 包二、打包为WAR包并运行

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用