系统架构设计师-软件工程(4)

news2024/10/5 23:28:13

        一、软件测试

                1、软件测试类型(动态测试 / 静态测试)

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

                        (1)白盒测试法【结构测试】:主要用于单元测试阶段。        

                                

                                a:控制流测试【逻辑覆盖测试(语句覆盖最弱,路径测试覆盖最强)】

                                b:数据流测试

                                c:程序变异测试【错误驱动测试】  

                        (2)黑盒测试法【功能测试】:主要用于集成测试、确认测试和系统测试阶段。

                                

                                a:等价类划分:不同等价类,揭示不同问题;有效等价类/无效等价类。

                                b:边界值分析:1 <= x <= 10,可取 x 的值为0、1、10、11作为测试数据。

                                c:错误预测:依靠测试人员的经验和直觉

                                d:判定表:最适合描述在多个逻辑条件取值的组合所构成的复杂情况下,分别要执行那些不同的动作。

                                e:因果图:根据输入条件与输出结果之间的因果关系来设计测试用例。

                        (3)灰盒测试法:白+黑

                        ●  静态测试【人工监测和计算机辅助分析】

                                a:桌前检查 

                                b:代码审查

                                c:代码走查

                                在静态测试中,主要是对代码进行静态分析,静态分析一般包括控制流分析、数据流分析、接口分析、表达式分析

                                (1)控制流分析:是否存在没有使用的语句 / 无法到达的语句 调用并不存在的子程序。

                                (2)数据流分析引用未定义的变量、对以前未使用的变量再次赋值。

                                (3)接口分析:模块之间的接口的一致性、子程序和函数之间的接口一致性、函数形参与实参的数量、顺序、类型的一致性。

                                (4)表达式分析括号不配对、数据引用越界、除数为零。

                2、软件测试阶段

                        

                         测试阶段:

                        (1)单元测试:依据【详细设计】,模块测试,模块功能、性能、接口等。

                        (2)集成测试:依据【概要设计】,模块间的接口。                                

 

                        (3)系统测试:依据【需求文档】,在真实环境下,验证完整的软件配置项能否和系统正确连接。

                        (4)确认测试(验收测试):依据【需求文档】,验证软件与需求的一致性。内部确认测试。

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

                3、软件系统测试

                        (1)功能测试(2)性能测试(3)健壮性测试(4)用户界面测试

                        (5)安全性测试(6)安装与反安装测试

                        性能测试:

                                (1)负载测试各种工作负载下系统的性能

                                (2)压力测试【测上限】:系统的瓶颈或不能接受的性能点。

                                (3)强度测试【测下限】:系统资源特别低的情况下运行。

                                (4)容量测试【并发测试】:同时在线的最大用户数。

                                (5)可靠性测试:MTTF(Mean Time to Failure,系统发生失效前的平均运作时间)、MTBF(Mean Time Between Failures,平均无故障工作时间)、MTTR(Mean Time to Restoration,故障后平均修复时间)之类的参数。

 

        二、遗留系统演化策略

                

                (1)高水平低价值:采用集成策略,主要针对 “信息孤岛” 。

                (2)高水平高价值:采用改造策略,改造包括功能的增强数据模型的改造两个方面

                (3)低水平高价值:采用继承策略,开发新系统时,需要完全兼容遗留系统的功能模型和数据模型

                (4)低水低价值:采用淘汰策略。 

        三、新旧系统的转换策略

                

                (1)直接转换策略:切换成本低,但风险较大

                (2)并行转换策略:两个系统齐头并进,发现问题改进系统,直到没有问题再使用新系统。缺点是代价过高,业务人员需要在新旧两套系统中同时进行操作。

                (3)分段转换策略:例:全国范围的系统,一个个地方切换试点。例:多个子系统,一个个系统切换。

 

        三、数据转换与迁移

                

         四、影响软件可维护性的原因

                (1)【可理解性】:是指通过阅读源代码和相关文档,了解软件的功能如何运行的容易程度。

                (2)【可修改性】:是指修改软件的难易程度。

                (3)【可测试性】:是指验证软件程序正确的难易程度。可测试性好的软件,通常意味着软件设计简单,复杂性低。因为软件的复杂性越大,测试的难度也就越大。

                (4)【可靠性】:一个软件的可靠性越高,需要维护的概率就会越低。

                (5)【可移植性】:是指将软件从一个环境移植到新的环境下正确运行的难易程度。软件运行环境的变化是软件维护的一种常见情形,可移植性好的软件会降低维护的概率。

         五、软件维护类型

                (1)正确性维护【修BUG】识别和纠正软件错误 / 缺陷,测试不可能发现所有错误。

                (1)适应性维护【应变】:指使应用软件适应环境的变化【外部环境、数据环境】而进行的修改。

                (1)完善性维护【新需求】扩充功能和改善性能而进行的修改。

                (1)预防性维护【针对未来】:为了适应未来的软硬件环境的变化,应主动增加预防性的新的功能,以使用系统适应各类变化而不被淘汰。经典实例:【专用】【通用】

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

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

相关文章

【数据结构与算法】栈算法题

TS 实现栈 interface IStack<T> {push(e: T): void;pop(): T | undefined;peek(): T;isEmpyt(): boolean;size(): number; }// implements: 实现接口, 一个类可以实现多个接口 class ArrayStack<T> implements IStack<T> {private data: T[] []; // private…

【已解决】词云图只显示方框,无法正确显示中文

文章目录 报错及效果图报错代码解决后效果图 解决方案 报错及效果图 报错代码 from wordcloud import WordCloud def drawing_wordcloud(jieba_split):colormaps colors.ListedColormap([#33b846, #a9be70, #e50000])# 生成词云&#xff08;自定义样式&#xff09;mywc1 Wor…

docker 挂载共享文件夹

docker 挂载共享文件夹 1. 目前不太清楚怎么在已经启动的容器中挂载1.1 也不是完全没办法&#xff0c;把当前的容器打包&#xff0c;再使用-v参数重新启动就可以了 1. 目前不太清楚怎么在已经启动的容器中挂载 1.1 也不是完全没办法&#xff0c;把当前的容器打包&#xff0c;再…

运维面试题

这里写目录标题 TCP介绍一下UDP TCP介绍一下 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的传输层协议。它在计算机网络中负责提供可靠的数据传输和流量控制。 TCP通过使用三次握手建立一个连接&#xff0c;确…

内存函数相关讲解与模拟实现

目录 memcpy 模拟实现memcpy memmove 模拟实现memmove memcmp 结尾 memcpy 由 source指向地址为起始地址的连续n个字节的数据复制到以destination指向地址为起始地址的空间内。格式如下 void * memcpy ( void * destination, const void * source, size_t num ); 说明…

C语言 — 指针进阶篇(下)

前言 指针基础篇回顾可以详见&#xff1a; 指针基础篇&#xff08;1&#xff09;指针基础篇&#xff08;2&#xff09; 指针进阶篇分为上下两篇,上篇介绍1 — 4&#xff0c;下篇介绍5 — 6 字符指针数组指针指针数组数组传参和指针传参函数指针函数指针数组指向函数指针数组的…

SpringBoot 配置文件:什么是配置文件?配置文件是干什么?

文章目录 &#x1f387;前言1.配置文件的格式2. properties配置文件说明2.1 properties基本语法2.2 读取配置文件 3. yml 配置文件说明3.1 yml 基本语法 4.properties与yml 对比 &#x1f387;前言 学习一个东西&#xff0c;我们先要知道它有什么用处。整个项目中所有重要的数…

C语言,指针易错点

1、封装函数&#xff0c;用指针实现字符串连接 #include <stdio.h> #include <string.h> void MyStrcat(char *dest,char *src) {int i;for(i0;*(desti);i);for(int j0;*(srcj);j)*(desti)*(srcj);*(desti)0; } int main(int argc, const char *argv[]) {char des…

Spring详解(学习总结)

目录 一、Spring概述 &#xff08;一&#xff09;、Spring是什么&#xff1f; &#xff08;二&#xff09;、Spring框架发展历程 &#xff08;三&#xff09;、Spring框架的优势 &#xff08;四&#xff09;、Spring的体系结构 二、程序耦合与解耦合 &#xff08;一&…

MySQL与PostgreSQL的区别

MySQL与PostgreSQL的区别 PostgreSQL的特点包括&#xff1a; 1.PostgreSQL是一个免费的对象-关系数据库服务器 (ORDBMS)&#xff0c;在灵活的BSD许可证下发行。 2.PostgreSQL的Slogan是"世界上最先进的开源关系型数据库"。 3.PostgreSQL具有极高的可靠性&#xff…

数据结构--并查集的进一步优化

数据结构–并查集的进一步优化 Find操作的优化(压缩路径) 压缩路径 − − F i n d 操作&#xff0c;先找到根节点&#xff0c;再将查找路径上所有结点都挂到根结点下 \color{red}压缩路径 -- Find操作&#xff0c;先找到根节点&#xff0c;再将查找路径上所有结点都挂到根结点…

第二十三章:存储引擎

第二十三章&#xff1a;存储引擎 ​ 为了管理方便&#xff0c;人们把连接管理、查询缓存、语法解析、查询优化这些并不设计真实数据存储的功能划分为MySQL server的功能&#xff0c;把真实存取数据的功能划分为存储引擎的功能。所以在MySQL server完成了查询优化后&#xff0c…

各种好看的css效果收集

CSS动画特效-多种方案实现CSS光束扫过&#xff0c;扫光特效&#xff0c;ae文字过光效果&#xff0c;光效移动效果 一个集合180种免费的线性渐变网站&#xff0c;可在任何网站使用您不仅可以复制渐变的原生CSS颜色代码&#xff0c;还可以查看下载每个优质的渐变图片。 链接&…

多线程——python进阶知识

多线程与多进程的区别 多线程是单个内核通过锁的手段实现同一时间运行多个程序&#xff0c;在某些情况下可以提升总体的运行效率。同时为了防止多个线程在对同一数据进行修改时导致的不可预测的后果&#xff0c;需要借助锁、队列等保证进程的同步。 多进程是多个内核执行多个…

(赠书活动第4期)编译语言的思考过程

面向对象编程&#xff08;Object-Oriented Programming&#xff0c;简称OOP&#xff09;是一种广泛应用于编程领域的编程范式&#xff0c;对于前端和后端开发都具有重要意义。在这篇说明中&#xff0c;我们将探讨面向对象编程对于前端和后端开发的重要性&#xff0c;并探讨其优…

【Linux指令集】---mv指令(超详细)

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【Linux专栏】&#x1f388; 本专栏旨在分享学习Linux的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 演示环境&#xff1…

高效工作:ADManager Plus的利器

在当今快节奏的商业环境中&#xff0c;高效的工作是成功的关键。对于IT管理员来说&#xff0c;管理和维护Active Directory&#xff08;AD&#xff09;环境是一项重要的任务。然而&#xff0c;手动处理繁琐的AD管理任务可能会占用大量的时间和精力&#xff0c;影响工作效率。为…

可使用Linux 测试IP和端口是否能访问,查看返回状态码

一、 使用wget判断 wget是linux下的下载工具&#xff0c;需要先安装. 用法: wget ip:port wget ip:port连接存在的端口 二、使用telnet判断 telnet是windows标准服务&#xff0c;可以直接用&#xff1b;如果是linux机器&#xff0c;需要安装telnet. 用法: telnet ip port…

【Elasticsearch】RestAPI

目录 4.RestAPI 4.0.导入Demo工程 4.0.1.导入数据 4.0.2.导入项目 4.0.3.mapping映射分析 4.0.4.初始化RestClient 4.1.创建索引库 4.1.1.代码解读 4.1.2.完整示例 4.2.删除索引库 4.3.判断索引库是否存在 4.4.总结 4.RestAPI ES官方提供了各种不同语言的客户端&…

基于vscode的ros开发

Part1前言 ROS&#xff08;机器人操作系统&#xff09;是一个开源的机器人软件平台&#xff0c;旨在提供一套通用的工具和库&#xff0c;帮助开发人员创建机器人应用程序。ROS提供了用于构建机器人系统的库、工具、驱动程序、通信协议和软件包管理系统。 以下是ROS的一些主要特…