软考125-上午题-【软件工程】-传统软件的测试策略

一、传统软件的测试策略

有效的软件测试实际上分为4步进行,即:单元测试、集成测试、确认测试、系统测试。

1-1、单元测试(模块测试)

单元测试也称为模块测试,在模块编写完成且无编译错误后就可以进行。

单元测试侧重于模块中的内部处理逻辑和数据结构。如果选用机器测试,般用白盒测试法。这类测试可以对多个模块同时进行。

1)单元测试的测试内容

单元测试的主要检测模块的以下5个特征:

1、模块的接口

模块的接口保证了测试模块的数据流可以正确地流入、流出

在测试中应检查以下要点:

①、测试模块的输入参数和形式参数在个数、属性、单位上是否一致。

②、调用其他模块时,所给出的实际参数和被调用模块的形式参数在个数、属性、单位上是否一致。

③、调用标准函数时,所用的参数在属性、数目和顺序上是否正确

④、全局变量在各模块中的定义和用法是否一致。

⑤、输入是否仅改变了形式参数。

⑥、开/关的语句是否正确。

⑦、规定的 IO 格式是否与输入/输出语句一致。

⑧、在使用文件之前是否已经打开文件或使用文件之后是否已经关闭文件。

2、局部数据结构

在单元测试中,局部数据结构出错是比较常见的错误,在测试时应重点考虑以下因素。

①、变量的说明是否合适

②、是否使用了尚未赋值或尚未初始化的变量。

③、变量的初始值或默认值是否正确。

④、变量名是否有错(例如拼写错)

3、重要的执行路径

4、出错处理

5、边界条件

1-2、单元测试的过程

由于模块不是独立运行的程序,各模块之间存在调用与被调用的关系。在对每个模块进行测试时,需要开发两种模块。单元测试环境如图所示。

1、驱动模块

相当于一个主程序,接收测试例子的数据,将这些数据送到测试模块,输出测试结果。

2、桩模块(也称为存根模块)

桩模块用来代替测试模块中所调用的子模块,其内部可进行少量的数据处理,目的是为了检验入口,输出调用和返回的信息。

提高模块的内聚度可以简化单元测试。如果每个模块只完成一种功能,对于具体模块来讲。所需的测试方案数据会显著减少,而且更容易发现和预测模块中的错误。

高内聚、低耦合

1-3、真题

真题1:

真题2:

1-4、集成测试

集成测试就是把模块按系统设计说明书的要求组合起来进行测试。

即使所有的模块都通过了测试,在集成之后,仍然可能出现问题。

通常,集成测试有两种方法:

1、非增量集成

2、增量集成。

 

非增量集成:

分别测试各个模块,再把这些模块组合起来进行整体测试。

非增量式集成可以对模块进行并行测试,能充分利用人力,并加快工程进度。但这种方法容易混乱,出现错误不容易查找和定位。

 

增量集成:

即以小增量的方式逐步进行构造和测试。

增量式测试的范围一步步扩大,错误容易定位,更易于对接口进行彻底测试,并且可以运用系统化的测试方法。下面讨论一些增量集成策略。

1)、自顶向下集成测试

自顶向下集成测试是一种构造软件体系结构的增量方法。模块的集成顺序为从主控模块(主程序)开始,沿着控制层次逐步向下,以深度优先或广度优先的方式将从属于(或间接从属于)主控模块的模块集成到结构中。

如图 5-10 所示,深度优先集成是首先集成位于程序结构中主控路径上的所有构件,也可以根据特定应用系统的特征进行选择。

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

集成过程可以通过下列5个步骤完成:

(1)主控模块用作测试驱动模块,用这些从属于主控模块的所有模块代替桩模块。

(2)依靠所选择的集成方法(深度优先、广度优先),每次用实际模块替换一个从属桩模块。

(3)在集成每个模块后都进行测试。

(4)在完成每个测试集之后,用实际模块替换另一个桩模块。

(5)可以执行回归测试,以确保没有引入新的错误。

 

2)、自底向上集成测试

自底向上集成测试就是从原子模块(程序结构的最底层构件,桩模块)开始进行构造和测试。由于构件是自底向上集成的,在处理时所需要的从属于给定层次的模块总是存在的,因此,没有必要使用桩模块。

自底向上集成策略可以利用以下步骤来实现:

(1)连接低层构件以构成完成特定子功能的簇。

(2)编写驱动模块(测试的控制程序)以协调测试用例的输入和输出。

(3)测试簇。

(4)去掉驱动程序,沿着程序结构向上逐步连接簇。遵循这种模式的集成如图 5-11 所示。

连接相应的构件形成簇 1、簇2和簇 3,利用驱动模块(图中的虚线框)对每个进行测试。簇1和簇2中的构件从属于模块 Ma,去掉驱动模块D1,和 D2,将这两个簇直接与 M1相连。与之相类似,在簇3与 Mb,连接之前去掉驱动模块 D3,最后将 Ma和Mb与构件 Mc连接在一起。

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

3)、回归测试

每当加入一个新模块作为集成测试的一部分时,软件发生变更,建立了新的数据流路径,可能出现新的IO,以及调用新的控制逻辑。这些变更可能会使原来可以正常工作的功能产生问题。

在集成测试策略的环境下,回归测试是重新执行已测试过的某些子集,以确保变更没有传播不期望的副作用。

回归测试有助于保证变更不引入无意识行为或额外的错误。回归测试可以手工进行,方法是重新执行所有测试用例的子集,或者利用捕捉/回放工具自动执行。捕捉/回放工具使软件工程师能够为后续的回放与比较捕捉测试用例和测试结果。

回归测试要执行的测试子集包含以下3 种测试用例:

  • 能够测试软件所有功能的具有代表性的测试样本。
  • 额外测试,侧重于可能会受变更影响的软件功能。
  • 侧重于已发生变更的软件构件测试。

随着集成测试的进行,回归测试的数量可能变得相当庞大,因此,应将回归测试用例设计成只包括设计每个主要程序功能的一个或多个错误类的测试。一旦发生变更,对每个软件功能重新执行所有的测试是不切实际的,而且效率很低。

4)、冒烟测试

当开发软件产品时,冒烟测试是一种常用的集成测试方法,是时间关键项目的决定性机制,它让软件团队频繁地对项目进行评估。

1-5、真题

真题1:

真题2:

 真题3:

真题4:

编写驱动模块编写桩模块
自顶向下
自底向上

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

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

相关文章

温故知新之-TCP Keepalive机制及长短连接

[学习记录] 前言 TCP连接一旦建立,只要连接双方不主动 close ,连接就会一直保持。但建立连接的双方并不是一直都存在数据交互,所以在实际使用中会存在两种情况:一种是每次使用完,主动close,即短连接&…

JVM虚拟机(五)强引用、软引用、弱引用、虚引用

目录 一、强引用二、软引用三、弱引用四、虚引用五、总结 引文: 在 Java 中一共存在 4 种引用:强、软、弱、虚。它们主要指的是,在进行垃圾回收的时候,对于不同的引用垃圾回收的情况是不一样的。下面我们就一起来看一下这 4 种引用…

51单片机实验03-单片机定时/计数器实验

目录 一、实验目的 二、实验说明 1、51单片机有两个16位内部计数器/定时器(C/T, Counter/Timer)。 2、模式寄存器TMOD 1) M1M0工作模式控制位; 2) C/T定时器或计数器选择位: 3)GATE定时器/计数器运行…

软考系规第2章思维导图,软硬件网络和次新技术大杂烩

虽然目前系统规划与管理师的教程是否改版存在不确定性,但是不影响咱们先概要了解当前的教程,使用思维导图的方式粗读教程。 为了帮助你更好的学习系规教程,降低系规教程阅读门槛,指尖疯特发起了教程伴读活动,通过伴读脑…

关于GDAL计算图像坐标的几个问题

关于GDAL计算图像坐标的几个问题_gdal读取菱形四角点坐标-CSDN博客 这篇文章写的很好,讲清楚了图像行列号与图像点坐标(x,y)对应关系,以及图像行列号如何转为地理坐标的,转载一下做个备份。 1.关于GDAL计算图像坐标的…

部署Kafka集群图文详细步骤

1 集群规划 共三台虚拟机同处overlay网段,每台虚拟机部署一套kafka和zookeeper,kafka_manager安装其中一台虚拟机上即可。 HostnameIP addrPortListenerzk1docker-swarm分配2183:2181zk2docker-swarm分配2184:2181zk3docker-swarm分配2185:2181k1docke…

python-使用bottle时间简易服务器

python-使用bottle时间简易服务器 背景调试读取文本所有内容字段解释json字符串解析追加写入文件 整理后整理后写入文件方法将目录下所有文本的内容批量追加到一个文本搜索字符串方法实现简易服务器通过浏览器访问 背景 202310.txt内容是一段json字符串,目的是通过…

C++进阶技巧:如何在同一对象中存储左值或右值

如何在同一对象中存储左值或右值 一、背景二、跟踪值2.1、存储引用2.2、存储值 三、存储variant四、通用存储类4.1、定义const访问4.2、定义非const访问 五、创建存储六、总结 一、背景 C 代码似乎经常出现一个问题:如果该值可以来自左值或右值,则对象如…

Arrow, 一个六边形的 Python 时间库

文章目录 Arrow, 一个六边形的 Python 时间库第一部分:背景介绍第二部分:库是什么?第三部分:如何安装这个库?第四部分:库函数使用方法第五部分:场景应用第六部分:常见Bug及解决方案第…

代码学习记录42---动态规划

随想录日记part42 t i m e : time: time: 2024.04.14 主要内容:今天开始要学习动态规划的相关知识了,今天的内容主要涉及:最长递增子序列 ;最长连续递增序列 ;最长重复子数组 ;最长公…

关于部署ELK和EFLK的相关知识

文章目录 一、ELK日志分析系统1、ELK简介1.2 ElasticSearch1.3 Logstash1.4 Kibana(展示数据可视化界面)1.5 Filebeat 2、使用ELK的原因3、完整日志系统的基本特征4、ELK的工作原理 二、部署ELK日志分析系统1、服务器配置2、关闭防火墙3、ELK ElasticSea…

最优算法100例之48-链表中倒数第k个结点

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 链表中倒数第k个结点 题解报告 ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {if(pListHead == NULL)ret…

Go语言入门|包、关键字和标识符

目录 Go语言 包文件 规则 关键字 规则 标识符 规则 预定义标识符 Go语言 Go语言是一种静态类型、编译型和并发型的编程语言,由Google开发。Go的源代码文件以.go为扩展名,文件名通常与包名保持一致。一个Go文件可以包含多个顶级声明,…

访问者模式类图与代码

某图书管理系统中管理着两种类型的文献:图书和论文。现在要求统计所有馆藏文献的总页码(假设图书馆中有一本540页的图书和两篇各25页的论文,那么馆藏文献的总页码就是590页)。采用Visitor(访问者)模式实现该要求,得到如图7.16所示的类图。 访…

Project Euler_Problem 193_Few Repeated Digits_欧拉筛+容斥公式

解题思路&#xff1a;暴力搜索 代码&#xff1a; void solve() {ll i, j,k,x,y,z,p,q,u,v,l,l1;N 999966663333, NN 1024;//N 1000;double a, b, c,d;M.NT.get_prime_Euler(1000000);l M.NT.pcnt;for (i 1; i < l; i) {u M.NT.prime[i];v M.NT.prime[i 1];x u * …

认证、授权、凭证、保密、传输、验证

系统如何正确分辨操作用户的真实身份&#xff1f; 认证&#xff08;Authertication) :系统如何正确分辨出操作用户的真实身份&#xff1f; 授权&#xff08;AUthorization&#xff09;**&#xff1a;系统如何控制一个用户该看到哪些数据、能操作哪些功能&#xff1f; 凭证&…

Redis报错:CROSSSLOT Keys in request don‘t hash to the same slot的解决方案

最近&#xff0c;项目上线的时候&#xff0c;出现了一个Redis的报错&#xff1a;CROSSSLOT Keys in request dont hash to the same slot&#xff0c;这个在内网环境下无法复现&#xff0c;因为正式环境的Redis是cluster集群模式&#xff0c;而我们内网环境是单机模式。(后面我…

ELK(Elasticsearch+Logstash+Kibana)日志分析系统

目录 前言 一、ELK日志分析系统概述 1、三大组件工具介绍 1.1 Elasticsearch 1.1.1 Elasticsearch概念 1.1.2 关系型数据库和ElasticSearch中的对应关系 1.1.3 Elasticsearch提供的操作命令 1.2 Logstash 1.2.1 Logstash概念 1.2.2 Logstash的主要组件 1.2.3 Logsta…

TCM(Tightly Coupled Memory)紧密耦合存储器简介

在ARM Cortex处理器中&#xff0c;TCM通常指的是紧密耦合存储器&#xff08;Tightly Coupled Memory&#xff09;。TCM是一种位于处理器核心旁边的高速存储器&#xff0c;它的设计目的是为了提供低延迟和高带宽的内存访问性能。 TCM的特点是它与处理器内核紧密耦合&#xff0c;…

【鸿蒙开发】第二十一章 Media媒体服务(一)

1 简介 Media Kit&#xff08;媒体服务&#xff09;提供了AVPlayer和AVRecorder用于播放、录制音视频。 在Media Kit的开发指导中&#xff0c;将介绍各种涉及音频、视频播放或录制功能场景的开发方式&#xff0c;指导开发者如何使用系统提供的音视频API实现对应功能。比如使用…