【实际开发18】- 静态 3

news2024/9/21 16:22:33

目录

1. 调试与评估

2. 单元测试的管理

1. 单元测试的文档

3. 系统集成的模式与方法

1. 集成测试前的准备

2. 集成测试的模式

3. 大棒集成方法 ( Big-bang Integration)

4. 自顶向下和自底向上集成方法

1. 自顶向下法 ( Top-down Integration )

2. 自底向上法 ( Bottom-up Integration )

3. 混合策略 ( Modified Top-down Integration )

4. 三明治集成方法 ( Sandwich Integration )

5. 持续集成

6. 集成测试流程


1. 调试与评估

调试与测试的对象及采用的方法有很大程度上的相似,调试还用到断点控制等排错方法,但其目的却完全不同。测试是为了找出软件中存在的缺陷,而调试是为了解决存在的缺陷。

  • 软件单元功能与设计需求一致。

  • 软件单元接口与设计需求一致。

  • 能够正确处理输入和运行中的错误。

  • 在单元测试中发现的错误已经得到修改并且通过了测试。

  • 达到了相关的覆盖率的要求。

  • 完成软件单元测试报告


2. 单元测试的管理

过程:

  • 在详细设计阶段完成单元测试计划。

  • 建立单元测试环境,完成测试设计和开发。

  • 执行单元测试用例,并且详细记录测试结果。

  • 判定测试用例是否通过。

  • 提交《单元测试报告》。


1. 单元测试的文档

单元测试的文档

1、《软件需求规格说明书》、《软件详细设计说明书》 -----> 《单元测试计划》

2、《单元测试计划》、《软件详细设计说明书》-----> 《单元测试用例》

3、《单元测试用例》文档及《软件需求规格说明书》、《软件详细设计说明书》-----> 《缺陷跟踪报告》/《缺陷检查表》

4、《单元测试用例》、《缺陷跟踪报告》、《缺陷检查表》-----> 《单元测试检查表》

5、评估 -----> 单元测试报告》


3. 系统集成的模式与方法

集成测试定义

定义

集成测试又称“组装测试”、“联合测试”。集成测试遵循特定的策略和步骤将已经通过单元测试的各个软件单元(或模块)逐步组合在一起进行测试,以期望通过测试发现各软件单元接口之间存在的问题。

集成测试对象

理论上凡是两个单元(如函数单元)的组合测试都可以叫做集成测试。实际操作中,通常集成测试的对象为模块级的集成和子系统间的集成,其中子系统集成测试称为组件测试。

集成测试目的与意义

考虑以下问题:

  • 在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;

  • 各个子功能组合起来,能否达到预期要求的总体功能;

  • 一个模块的功能是否会对另一个模块的功能产生不利的影响;

  • 全局数据结构是否有问题 单个模块的误差积累起来,是否会放大,从而达到不可接受的程度。

  • 共享资源访问的测试 ( 要想发现并排除在模块连接中可能发生的上述问题,就需要进行 集成测试。)

集成测试有以下不可替代的特点:

  • 单元测试具有不彻底性,对于模块间接口信息内容的正确性、相互调用关系是否符合设计无能为力。只能靠集成测试来进行保障。

  • 同系统测试相比,由于集成测试用例是从程序结构出发的,目的性、针对性更强,测试项发现问题的效率更高,定位问题的效率也较高;

  • 定位问题较快,发现问题后比较容易定位,所以能够有效地加快进度,减少隐患。

集成测试(when)

  • 在开始体系结构设计的时候开始制定测试方案;

  • 在进入详细设计之前完成集成测试方案;

  • 在进入系统测试之前结束集成测试。

集成测试(who)

  • 集成测试可以在开发部进行,也可以由独立的测试部执行。

  • 开发部尽量进行集成测试,测试部有选择地进行集成测试。

集成测试原则

  • 集成测试是产品研发中的重要工作,需要为其分配足够的资源和时间。

  • 集成测试需要经过严密的计划,并严格按计划执行。

  • 应采取增量式的分步集成方式,逐步进行软件部件的集成和测试。

  • 应重视测试自动化技术的引入与应用,不断提高集成测试效率。

  • 应该注意测试用例的积累和管理,方便进行回归并进行测试用例补充。

集成测试内容

  • 集成功能测试

  • 接口测试

  • 全局数据结构测试

  • 资源测试

  • 任务优先级冲突测试

  • 性能和稳定性测试

集成测试、单元测试与系统测试的差别

测试类型对象目的测试依据测试方法
单元测试模块内部的程序错误消除局部模块的逻辑和功能上的错误和缺陷模块逻辑设计,模块外部说明大量采用白盒测试方法
集成测试模块间的集成和调用关系找出与软件设计相关的程序结构,模块调用关系,模块间接口方面的问题程序结构设计结合使用白盒与黑和测试方法,采用较多黑盒方法构造测试用例
系统测试整个系统,包括系统中的硬件等对整个系统进行一系列的整体、有效性测试系统结构设计,目标说明书,需求说明书等黑盒测试

由以上可以看出,整个软件系统的测试过程是:先对各个软件模块进行单元测试,然后把经过单元测试的各个模块组装起来进行集成测试,最后把经过集成测试的子系统合成软件版本,对照需求规格,在实际环境下,进行系统功能验证。


1. 集成测试前的准备

人员安排 、测试计划、测试内容 、集成模式、测试方法


2. 集成测试的模式

渐增式测试模式与非渐增式测试模式:

  • 非渐增式测试模式:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,如大棒模式。

  • 渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。

各自的优缺点:

  • 非渐增式测试模式优缺点:工作量较小;发现模块间接口错误较晚;发现错误较难诊断,可以并行测试。

  • 渐增式测试模式优缺点:要编写的软件较多,工作量较大;发现模块间接口错误较早;测试执行更彻底;需要较多的机器时间。


3. 大棒集成方法 ( Big-bang Integration)

采用大棒集成方法,先是对每一个子模块进行测试(单元测试阶段),然后将所有模块一次性的全部集成起来进行集成测试 。

因为所有的模块一次集成的,所以很难确定出错的真正位置、所在的模块、错误的原因。这种方法并不推荐在任何系统中使用,适合在规模较小的应用系统中使用。

非增量式集成测试实例

评述:模块d1、d2、d3、d4、d5是对各个模块做单元测试时建立的驱动模块,s1、s2、s3、s4、s5是为单元测试而建立的桩模块。这种一次性集成方式将所测模块连接起来进行测试,但是一次试运行成功地可能性并不大。其结果发现有错误,但茫然找不到原因,差错和改错都会遇到困难。

适应于一个维护型或被测试系统较小的项目。

非增量式策略——优缺点:

  • 优点: ①方法简单 ②允许多测试人员同时并行工作,人力物力资源利用率较高

  • 缺点: ①必须为每个模块准备相应的驱动模块和桩模块,测试成本较高 ②一旦集成后包含多种错误,难以纠正。


4. 自顶向下和自底向上集成方法

驱动程序/驱动模块(driver),用以模拟被测模块的上级模块。驱动模块在集成测试中接受测试数据,把相关的数据传送给被测模块,启动被测模块,并打印出相应的结果。

桩程序/桩模块(stub),也有人称为存根程序,用以模拟被测模块工作过程中所调用的模块。桩模块由被测模块调用,它们一般只进行很少的数据处理,例如打印入口和返回,以便于检验被测模块与其下级模块的接口。


1. 自顶向下法 ( Top-down Integration )

自顶向下法,从主控模块(主程序)开始,沿着软件的控制层次向下移动,逐渐把各个模块结合起来。

组装过程可以采用深度优先策略和宽度优先策略

  • 深度优先:从最顶层单元开始,持续向下到下一层,选择一个分支,自顶而下一个一个的集成这条分支上的所有单元,直到最底层,然后转向另一个分支,重复这样的集成操作直到所有的单元都集成进来。

  • 广度优先:从最顶层单元开始,持续向下到下一层, 一个个完成下一层上所有单元集成后,再转向下面一层,重复这样的集成操作直到所有的单元都集成进来。


1. 自顶向下增量测试

自顶向下集成测试的整个过程由3个步骤完成:

  1. 主控模块作为测试驱动器。

  2. 根据集成的方式(深度或广度),下层的桩模块一次一次地被替换为真正的模块。

  3. 在每个模块被集成时,都必须进行单元测试。 重复第2步,直到整个系统被测试完成。

自顶向下法——优缺点

优点:

不需要测试驱动程序;

能够在测试阶段的早期实现并验证系统的主要功能;

能在早期发现上层模块中的接口错误。

缺点:

需要桩程序,要使桩模块能够模拟实际子模块的功能十分困难;

底层验证被推迟; 同时涉及复杂算法,真正输入/输出的模块一般在底层,

他们是最容易出问题的模块,到测试和集成的后期才遇到这些模块,一旦发现问题导致过多的回归测试。

自顶向下增量式集成适用范围:

  • 产品控制结构比较清晰和稳定;

  • 高层接口变化较小;

  • 底层接口未定义或经常可能被修改;

  • 产口控制组件具有较大的技术风险,需要尽早被验证;

  • 希望尽早能看到产品的系统功能行为。


2. 自底向上法 ( Bottom-up Integration )

自底向上法,测试从原子模块(软件结构最底层的模块)开始集成以进行测试。自底向上进行集成和测试时,需要为所测模块或子系统编制相应的驱动模块。

自底向上增量式集成测试步骤:

  1. 起始于模块依赖关系树的底层叶子模块,也可以把两个或多个叶子模块合并到一起进行测试

  2. 使用驱动模块对步骤1选定的模块(或模块组)进行测试

  3. 用实际模块代替驱动模块,与它已测试的直属子模块组装成一个更大的模块进行测试

  4. 重复上面的行为,直到系统最顶层模块被加入到已测系统中

自底向上法——优缺点

与自顶向下法刚好相反。

优点:

  • 不需要桩程序;

  • 同时由于涉及到复杂算法和真正输入/输出的模块最先得到集成和测试,可以把最容易出问题的部分在早期解决;

  • 自底向上增值的方式可以实施多个模块的并行测试,提高测试效率。

缺点:

  • “程序一直未能作为一个实体存在,直到最后一个模块加上去后才形成一个实体”。也就是说,在自底向上集成和测试的过程中,对主要的控制直到最后才接触到。

  • 驱动的开发工作量大;

自底向上增量式集成适用范围:

适用范围:

  • 适应于底层接口比较稳定;

  • 高层接口变化比较频繁;

  • 底层组件较早被完成。


3. 混合策略 ( Modified Top-down Integration )

混合法:对软件结构中较上层,使用的是“自顶向下”法;对软件结构中较下层,使用的是“自底向上”法,两者相结合。


4. 三明治集成方法 ( Sandwich Integration )

  • 混合式集成

  • 把系统划分成三层,中间一层为目标层,目标层之上采用自顶向下集成,之下采用自底向上集成

集成步骤

  • 首先对目标层之上一层使用自顶向下集成,因此测试A,使用桩代替B,C,D

  • 其次对目标层之下一层使用自底向上集成,因此测试E,F,使用驱动代替B,D

  • 其三,把目标层下面一层与目标层集成,因此测试(B,E),(D,F),使用驱动代替A

  • 最后,把三层集成到一起,因此测试(A,B,C,D,E,F)

优缺点分析

优点: 集合了自顶向下和自底向上两种策略的优点

缺点: 中间层测试不充分,在真正集成之前每一个独立的模块没有完全测试过。

适用范围: 适应于大部分软件开发项目


5. 持续集成

  • 通常系统集成都会采用持续集成的策略,软件开发中各个模块不是同时完成,根据进度将完成的模块尽可能早的进行集成,有助于尽早发现Bug,避免集成中大量Bug涌现。

  • 而且容易定位Bug、修正Bug,最终提高软件开发的质量与效率。


6. 集成测试流程

集成测试主要由系统部的系统设计人员、软件评测部完成,开发人员也参与集成测试。集成测试相对来说是挺复杂的,而且对于不同的技术、平台和应用差异也比较大,更多是和开发环境融合在一起。集成测试所确定的测试的内容,主要来源于设计模型。

集成测试流程


1. 集成测试计划

输入 :需求规格说明书、概要设计文档、 产品开发计划路标

输出:集成测试计划

活动步骤

  • 确定被测试对象和测试范围

  • 评估集成测试被测试对象的数量及难度,即工作量

  • 确定角色分工和划分工作任务

  • 标识出测试各阶段的时间、任务、约束等条件

  • 考虑一定的风险分析及应急计划

  • 考虑和准备集成测试需要的测试工具、测试仪器、环境等资源

  • 考虑外部技术支援的力度和深度,以及相关培训安排

  • 定义测试完成标准


2. 集成测试分析和设计

集成测试分析和设计

集成测试分析和设计的主要目的是制定测试大纲(测试方案)。集成测试大纲规定了今后的集成测试内容、测试方法以及可测性接口,以后所有集成测试均在该大纲的框架下进行,所以,制定一份完善的集成测试大纲非常重要。

输入:需求规格说明书 概要设计 集成测试计划

输出:集成测试设计方案

活动步骤

  • 被测对象结构分析

  • 集成测试模块分析

  • 集成测试接口分析

  • 集成测试策略分析

  • 集成测试工具分析

  • 集成测试环境分析

  • 集成测试工作量估计和安排


3. 实施阶段

输入:需求规格说明书 概要设计 集成测试计划 集成测试设计

输出:集成测试用例 集成测试规程 集成测试代码、集成测试脚本、集成测试工具(如果有)

活动步骤

  • 集成测试用例设计

  • 集成测试规程设计

  • 集成测试代码设计(如果需要)

  • 集成测试脚本(如果需要)

  • 集成测试工具(如果需要)


4. 执行阶段

输入

  • 需求规格说明书

  • 概要设计

  • 集成测试计划

  • 集成测试设计

  • 集成测试用例

  • 集成测试规程

  • 集成测试代码(如果有)

  • 集成测试脚本(如果有)

  • 集成测试工具(如果有)

  • 详细设计

  • 代码

  • 单元测试报告

输出

  • 集成测试报告

活动步骤

  • 执行集成测试用例

  • 回归集成测试用例

  • 撰写集成测试报告

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

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

相关文章

linux如何查看编译器支持的C++版本(支持C++11、支持C++14、支持C++17、支持C++20)(编译时不指定g++版本,默认使用老版本编译)

文章目录C各个版本C11C14C17C20查看自己的编译器支持C哪个版本注意:编译时不指定g版本,默认使用老版本编译(存疑)C各个版本 C11 C11是一个重要的C标准版本,于2011年发布。C11带来了许多重要的改进,包括&a…

vue3封装数值动态递增组件

vue3封装数值动态递增组件前言源码举个例子:前言 1)使用技术: vue3.2 Ts 2)组件接收参数: 参数类型意义是否可选valuenumber数值大小必填durationnumber递增动画持续时间(单位:s)…

PyTorch学习笔记

PyTorch学习笔记(一):PyTorch环境安装 往期学习资料推荐: 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 安装参考: 1.视频教程:3分钟深度学习【环境搭建】CUDA Anacon…

javascript测试二

一、 选择题(共10题,每题2分)1、在JavaScript中,想要一次跳出方法的多层循环结构需要用(C ) A) breakB) continueC) returnD) false2、 下列关于嵌套循环以下说法正确的一项是(A )。A) 每一种循环结构内部也…

Elipse报错:Failed to load the JNI shared library jvm.dll解决方法

情景 导入Elipse的项目中有jar包和64位版本的JDK不兼容。 于是我安装了32位版本的JDK。 配置好系统环境后,重启Eclipse却遇到了这个问题。 原因 搜索后了解到,是因为Eclipse版本与JDK版本不匹配。 我的Eclipse是64位的,但JDK配置是32位的…

科技云报道:2023年,可观测性迎来哪些新趋势?

科技云报道原创。 可观测性不是一个新鲜的名词,但是近年来随着云原生技术的发展,在带来效率、可用性提升的同时也增加了复杂度,而可观测性成为降低这种复杂度的唯一手段,因此被推到了前所未有的重要地位。 Gartner将应用可观测…

前端面试常考 | 浅拷贝与深拷贝

文章目录一. 前言1. 概述2. 数据类型3. 存储区别二. 深浅拷贝1.深浅拷贝的定义2. 基本数据类型的拷贝3. 引用类型的拷贝4. 实现 “浅” 拷贝1. Object.assign()2. slice()3. concat()方法4. es6展开运算符5. 实现 “深” 拷贝1. JSON.parse(JSON.stringify(obj))2. lodash3. 递…

ASEMI代理FGH60N60,安森美FGH60N60车规级IGBT

编辑-Z 安森美FGH60N60车规级IGBT参数: 型号:FGH60N60 集电极到发射极电压(VCES):600V 栅极到发射极电压(VGES):20V 收集器电流(IC):120A 二…

2023年1月国产数据库大事记-墨天轮

本文为墨天轮社区整理的2023年1月国产数据库大事件和重要产品发布消息。 目录 1月国产数据库大事记(时间线)产品/版本发布兼容认证排行榜新增数据库厂商活动相关资料 1月国产数据库大事记(时间线) 1月6日消息,近日…

将小程序代码转成uni-app代码

最近因为公司项目原因需要将小程序的项目转换成uni—app的项目,所以总结了以下几点: 首先你可以先到uni-app的官网简单看一下对它的介绍,本次文章的介绍是针对简单的微信小程序来进行的转化。 在这之前我们来看一下目录对比 下面就来介绍一下…

Python绝对路径和相对路径详解

在介绍绝对路径和相对路径之前,先要了解一下什么是当前工作目录。什么是当前工作目录每个运行在计算机上的程序,都有一个“当前工作目录”(或 cwd)。所有没有从根文件夹开始的文件名或路径,都假定在当前工作目录下。注…

怎么编写PCIe设备驱动程序

怎么编写PCIe设备驱动程序 文章目录怎么编写PCIe设备驱动程序参考内核文件:一、 PCI总线设备驱动模型二、 获得PCIe设备的资源2.1 获得内存/IO空间2.2 获得中断号2.2.1 获得INTx中断号2.2.2 获得MSI-X/MSI中断号三、 使能设备致谢参考内核文件: Documen…

智慧税务+数据可视化:企业财务管理告别难题

一、引言在发展社会主义市场经济的过程中,税收承担着组织财政收入、调控经济、调节社会分配的职能。中国每年财政收入的90%以上来自税收,其地位和作用越来越重要,可称之为国家经济的“晴雨表”,有效进行税务管理、充分挖掘税务大数…

秒杀项目之商品秒杀接口测压及优化

目录一、生成测试用户二、jmeter压测2.1 测试三、秒杀接口优化3.1 优化第一步:解决超卖3.2 优化第二步:Redis重复抢购3.3 优化第三步:Redis预减库存3.3.1 商品初始化3.3.2 预减库存一、生成测试用户 将UserUtils工具类导入到zmall-user模块中…

【自然语言处理】【大模型】用于大型Transformer的8-bit矩阵乘法介绍

用于大型Transformer的8-bit矩阵乘法介绍原文地址:A Gentle Introduction to 8-bit Matrix Multiplication for transformers at scale using transformers, accelerate and bitsandbytes 相关博客 【自然语言处理】【大模型】用于大型Transformer的8-bit矩阵乘法介…

产品经理必看的高效产品文档撰写指南

对于企业来说,如何推广自己的产品是一个非常重要的话题,而其中必要的就是创建企业产品宣传册,这对于产品宣传非常重要,尤其是一些大公司,非常重视这种产品展示方式。因为它可以更完整地展现产品,撰写一份合…

uart 子系统

串口硬件储备知识: uart 在Linux 应用层的体现及使用 uart 就是串口,它也是属于字符设备中的一种,众所周知 字符设备都会在/dev/ 目录下创建节点,串口所创建的节点名都是以tty* 为开头,例如下面这些节点&#xff1a…

GeekChallenge

2.GeekChallenge 1.web 1.朋友的学妹 url:http://49.234.224.119:7413/ 右键点击查看源码,找到flagU1lDe0YxQF80c19oNExwZnVsbGxsbGx9 然后base64解码得到SYC{F1_4s_h4Lpfullllll} 2.EZwww url:http://47.100.46.169:3901/ 根据网站提示…

备战蓝桥杯【高精度乘法和高精度除法】

🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…

一步一步动手实现CANoe例程

最近在学习CANoe,记录下学习路程,方便后续查看。参考《CANoe开发从入门到精通》和CANoe软件内附带的Easy例程,一步步去实现这个例程,稍加优化。 一、创建仿真工程 打开CANoe 16 SP4进入主界面,单击File→New可以看到…