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

news2025/5/25 3:17:07

一、传统软件的测试策略

有效的软件测试实际上分为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.coloradmin.cn/o/1593371.html

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

相关文章

Paddle实现人脸对比(二)

我之前发过一篇基于孪生网络的人脸对比的文章,这篇文章也到了百度的推荐位置: 但是,效果并不是很好。经过大量的搜索,我发现了一种新的方法,可以非常好的实现人脸对比。 原理分析 我们先训练一个普通的人脸分类模型&…

【汇编】存储器

存储器 计算机存储器可分为内部存储器(又称内存或主存)和外部存储器,其中内存是CPU能直接寻址的储存空间,由半导体器件制成 存储单元的地址和内容 计算机存储信息的基本单位是一个二进制位,一位可存储一个二进制数&…

spring boot 集成 flyway依赖 做数据库迁移,让部署没烦恼

flyway 是一个敏捷工具&#xff0c;用于数据库的移植。采用 Java 开发&#xff0c;支持所有兼容 JDBC 的数据库。 主要用于在你的应用版本不断升级的同时&#xff0c;升级你的数据库结构和里面的数据。 还是直接上代码 第一步&#xff1a; <!-- Flyway 数据库迁移 依赖 他…

FJSP:鲸鱼优化算法WOA求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题&#xff08;Flexible Job Shop Scheduling Problem&#xff0c;FJSP&#xff09;&#xff0c;是一种经典的组合优化问题。在FJSP问题中&#xff0c;有多个作业需要在多个机器上进行加工&#xff0c;每个作业由一系列工序组成&a…

【Kafka】Kafka 架构深入

Kafka 工作流程及文件存储机制 Kafka 中消息是以 topic 进行分类的&#xff0c;生产者生产消息&#xff0c;消费者消费消息&#xff0c;都是面向 topic 的。 topic 是逻辑上的概念&#xff0c;而 partition 是物理上的概念&#xff0c;每个 partition 对应于一个 log 文件&am…

大模型(Large Models):探索人工智能领域的新边界

&#x1f31f;文章目录 &#x1f31f;大模型的定义与特点&#x1f31f;模型架构&#x1f31f;大模型的训练策略&#x1f31f;大模型的优化方法&#x1f31f;大模型的应用案例 随着人工智能技术的飞速发展&#xff0c;大模型&#xff08;Large Models&#xff09;成为了引领深度…

CSS盒模型(详讲)

目录 概述&#xff1a; 内容区&#xff08;content&#xff09;&#xff1a; 内边距&#xff08;paddingj&#xff09;&#xff1a; 前言&#xff1a; 设置内边距&#xff1a; 边框&#xff08;border&#xff09;&#xff1a; 前言&#xff1a; 示例&#xff1a; 外边…

ACID模型是什么

ACID模型是什么 ACID模型是数据库管理系统中保证事务处理安全性的一组特性。ACID是原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isolation&#xff09;和持久性&#xff08;Durability&#xff09;四个英文单词的…

WebApi+Python PyQ5实现大文件下载,Ui增加进度条和下载速率+已验证uos和Windows环境

Web Api接品代码&#xff1a; using Microsoft.AspNetCore.Mvc; using System.Collections.Concurrent; using System.Net;namespace LargeFileHandling.Controllers {[ApiController][Route("[controller]")]public class TestProgramFileManagerController : Cont…

【鸿蒙开发】第二十章 Camera相机服务

1 简介 开发者通过调用Camera Kit(相机服务)提供的接口可以开发相机应用&#xff0c;应用通过访问和操作相机硬件&#xff0c;实现基础操作&#xff0c;如预览、拍照和录像&#xff1b;还可以通过接口组合完成更多操作&#xff0c;如控制闪光灯和曝光时间、对焦或调焦等。 2 …

js canvas实现裁剪图片并下载

简历上给自己挖的坑&#xff0c;面试被拷打&#xff0c;早就该填了T.T 参考&#xff1a;【js canvas实现图片裁剪】 https://www.bilibili.com/video/BV1QK411d7n1/?share_sourcecopy_web&vd_sourcebf743b20b76eab11028ba2fb05f056b4 效果 思路 组成&#xff1a; 上传文…

8. Spring Boot 配置文件

源码地址&#xff1a;SpringBoot_demo 本篇文章内容源码位于上述地址的com/chenshu/springboot_demo/config包下 1. 配置文件是什么 上节说到&#xff0c;Spring Boot的项目分为三个部分&#xff1a;源代码目录、资源目录、单元测试目录。 而配置文件的位置就位于资源目录res…

【竞技宝jjb.lol】LOL:T1成功击败HLE晋级MSI!

北京时间2024年4月13日,英雄联盟LCK2024春季季后赛继续进行,昨天迎来败者组决赛HLE对阵T1。本场比赛HLE率先拿下一局之后,T1连续两局在后期决策上碾压HLE拿到赛点,第四局zeus祭出上单VN在中期杀穿HLE后排,最终T1以3-1的比分击败HLE晋级春季决赛,同时也拿到了MSI的参赛资格。以下…

CSS3 常用样式

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 ✍CSS3 常用样式&#x1f48e;1 CSS3 新增选择器&#x1f339;1.1 属性选择器…

Python匿名函数4不要

当你需要完成一件小工作时&#xff0c;在本地环境中使用这个函数&#xff0c;可以让工作如此得心应手&#xff0c;它就是Lambda 函数。 Lambda 函数是 Python 中的匿名函数。有些人将它们简称为lambdas&#xff0c;它们的语法如下&#xff1a; lambda arguments: expressionl…

拥有了这24个Python接单平台,你就拥有了“钞能力”

学Python能兼职挣米吗&#xff1f;怎么挣&#xff1f; 一、Python兼职种类&#xff1a; 接私活刚学会python那会&#xff0c;就有认识的朋友介绍做一个网站的私活&#xff0c;当时接单赚了4K&#xff0c;后又自己接过开发网站后台接口、做数据处理等事情&#xff0c;都赚了一…

Python实现外观模式、桥接模式、组合模式和享元模式

今天介绍四种结构型设计模式&#xff1a;外观模式、桥接模式、组合模式和享元模式 外观模式 外观模式&#xff08;Facade Pattern&#xff09;&#xff0c;它为子系统提供一个统一的接口&#xff0c;使得子系统更加容易使用。 在Python中&#xff0c;我们可以通过定义一个外…

记录-若依前端集成markdown文档,自动生成文档目录

使用版本: vue 2.6.12 html-loader 1.3.2 markdown-loader 6.0.0 github-markdown-css ^5.5.1 highlight.js 9.18.5 webpack 4.47.x 一.引入loder插件&#xff0c;html-loader和markdown-loader //安装 pnpm install html-loader --save ; pnpm install markdown-loader --sa…

Zynq学习笔记--AXI 总线概述

目录 1. AXI总线概述 1.1 主要特点 1.2 通道功能 1.3 信号概览 2. AXI Interconnect 2.1 信号说明 2.2 内部结构 3. PS-PL AXI Interface 3.1 AXI FPD/LFP/ACP 3.2 Address Editor 3.3 地址空间 3.4 AXI-DDR 4. 通过ILA观察AXI信号 4.1 AXI 读通道 1. AXI总线概述…

头歌-机器学习 第15次实验 朴素贝叶斯分类器

第1关:条件概率 任务描述 本关任务:根据本节课所学知识完成本关所设置的选择题。 相关知识 为了完成本关任务,你需要掌握条件概率。 条件概率 朴素贝叶斯分类算法是基于贝叶斯定理与特征条件独立假设的分类方法,因此想要了解朴素贝叶斯分类算法背后的算法原理,就不得…