软件测试案例 | 气象探测库存管理系统的集成测试计划
将经过单元测试的模块按照设计要求连接起来,组成规定的软件系统的过程被称为“集成”。集成测试也被称为组装测试、联合测试、子系统测试或部件测试等,其主要用于检查各个软件单元之间的接口是否正确。集成测试同时也是单元测试的逻辑扩展,即在单元测试基础之上将所有模块按照概要设计的要求组装成为子系统或系统,然后进行测试。但是,不同的集成策略会导致集成测试方法的选择不同。在实际工作中,时常有这样的情况发生: 每个模块都能单独工作,但是这些模块集成在一起后就不能正常工作。其主要原因是模块间相互调用时会引入许多新的问题: 数据经过接口可能丢失; 一个模块对另一个模块可能造成不应有的影响; 单个模块可以接受的误差在组装后不断累积,达到了不可接受的程度等。所以,单元测试后必须进行集成测试,发现并排除这些单元在集成后可能发生的问题,最终构成符合要求的软件系统。
集成测试主要关注的问题: 应该测试哪些构件和接口?以什么样的次序进行集成?有哪些集成测试策略?
本节将利用一个实际的集成测试案例———“气象探测库存管理系统”的集成测试计划的制订来介绍集成测试相关内容。
01、测试前的准备
1. 目的
气象探测库存管理系统经过编码、单元测试后已形成待集成单元,本集成测试计划主要描述如何进行集成测试活动、如何控制集成测试活动、集成测试活动的流程以及集成测试活动的工作安排等。最终确保程序连接起来也能正常工作,确保程序的完整运行。
2. 范围
本次测试计划主要是针对软件的集成测试,不含硬件、系统测试以及单元测试(需要已经完成单元测试)。
主要的任务如下。
(1) 测试在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失。
(2) 测试各个子功能组合起来后能否达到父功能的预期要求。
(3) 测试某个模块的功能是否会对另一个模块的功能产生不利的影响。
(4) 测试全局数据结构是否有问题。
(5) 测试单个模块的误差积累起来,是否会放大,从而达到不可接受的程度。
主要测试方法是使用黑盒测试方法测试集成的功能,并且迭代地对之前的集成进行回归测试。
3. 术语
入库: 气象装备入库是仓储管理业务的第一阶段,是指采购的气象设备进入仓库储存时进行的设备接收、检验检测、搬运、清点数量、检查质量和办理入库手续等一系列活动的总称。气象装备入库管理包括装备接运、装备检验检测、开具合格证和建立装备档案等4方面,其基本要求: 保证入库气象装备数量准确、质量符合要求、包装完整无损、手续完备清楚,入库迅速。
出库: 气象装备出库业务是仓库根据相关业务部门或装备保障部门开出的气象装备出库凭证(提货单、调拨单),按其所列气象装备编号、名称、规格、型号、数量等项目,组织气象装备出库的一系列工作的总称。出库发放的主要任务: 所发放的气象装备必须准确、及时、保质保量地发给收货单位,包装必须完整、牢固、标记正确清楚,核对必须仔细。
盘存: 盘存就是定期或不定期地对在库气象装备进行全部或部分清点,以确实掌握该所属周期内的气象装备应用情况,并对此加以改善,加强管理。掌控气象装备的“进(进货)、销(领货)、存(存货)”,可避免囤积太多气象装备或缺失气象装备的情况发生,其所得数据对计算成本及损失将是不可或缺的。
软件测试: 软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例运行软件,以发现软件错误的过程。
测试计划: 测试计划是指对软件测试的对象、目标、要求、活动、资源及日程进行整体规划,以确保软件系统的测试能够顺利进行的计划性文档。
测试用例: 测试用例指对一项特定的软件产品进行测试任务的描述,体现具体测试方案、方法、技术和策略的文档。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等。
测试对象: 测试对象是指特定环境下运行的软件系统和相关的文档。作为测试对象的软件系统可以是整个业务系统,也可以是业务系统的一个子系统或一个完整的部件。
测试环境: 测试环境指对软件系统进行各类测试所基于的软、硬件设备和配置。一般包括硬件环境、网络环境、操作系统环境、应用服务器平台环境、数据库环境以及各种支撑环境等。
02、测试策划
本系统的集成测试采用自底向上的集成方式。自底向上的集成方式将从程序模块结构中最底层的模块开始组装和测试。因为模块是自底向上进行组装的,对于一个给定层次的模块,由于它的子模块(包括子模块的所有下属模块)事前已经完成组装并经过测试,所以不再需要编制桩模块(一种能模拟真实模块,给待测模块提供调用接口或数据的测试用软件模块)。选择这种集成方式是因为管理方便,且测试人员能较好地锁定软件故障所在位置。
软件集成顺序采用自底向上的集成方式,先子系统,再顶系统。
子系统集成顺序上,功能集成采用先查找,后增加、删除、修改的顺序。
模块集成采用先入库出库模块,后盘点和管理员界面的顺序。
集成测试的主要步骤如表1所示,主要有以下几步。
(1) 制订集成测试计划。
(2) 设计集成测试。
(3) 实施集成测试。
(4) 执行集成测试。
(5) 评估集成测试。
■ 表1 集成测试的主要步骤
其中,集成元素包括子系统集成、功能集成、数据集成、函数集成等。
1. 子系统集成
(1) 入库模块。气象装备入库是仓储管理的第一阶段,其包括装备接运、装备检验检测、开具合格证和建立装备档案等4方面。
(2) 出库模块。气象装备出库业务是仓库根据相关业务部门或装备保障部门开出的气象装备出库凭证(提货单、调拨单),按其所列气象装备编号、名称、规格、型号、数量等项目,组织气象装备出库的一系列工作总称。
(3) 盘存模块。盘存就是定期或不定期地对在库气象装备进行全部或部分清点。
2. 功能集成
有关增加、删除、修改、查询各个数据的操作。
3. 数据集成
数据传递是否正确,传入值的控制范围是否一致等。
4. 函数集成
函数是否调用正常。
03、测试设计与执行
在本项目中,集成测试主要涉及以下几个过程。
1. 设计集成测试用例
(1) 采用自底向上集成测试的步骤,按照概要设计规格的说明,明确有哪些被测模块。在熟悉被测模块性质的基础上对被测模块进行分层,在同一层次上的测试可以并行进行,然后排出测试活动的先后关系,制订测试进度计划。
(2) 在步骤(1)的基础上,按时间线序关系将软件单元集成为模块,并测试在集成过程中出现的问题。这个步骤可能需要测试人员开发一些驱动模块来驱动集成活动中形成的被测模块。对于比较大的模块而言,可以先将其中的某几个软件单元集成为子模块,然后再集成为一个较大的模块。
(3) 将各软件模块集成为子系统(或分系统)。检测各子系统是否能正常工作。同样,可能需要测试人员开发少量的驱动模块来驱动被测子系统。
(4) 将各子系统集成为最终用户系统,测试各分系统能否在最终用户系统中正常工作。
2. 实施测试
(1) 测试人员按照测试用例逐项进行测试活动,并且将测试结果填写在测试报告(测试报告必须覆盖所有测试用例)上。
(2) 测试过程中发现Bug,将Bug填写在使用的管理平台上(Bug状态为NEW)发给集成部门经理。
(3) 对应责任人接到管理平台发过来的Bug(Bug状态为ASSIGNED)。
(4) 对明显的并且可以立刻解决的Bug,将其发给开发人员; 对不是Bug的提交,集成部经理通知测试设计人员和测试人员,对相应文档进行修改(Bug状态为RESOLVED,决定设置为INVALID); 对目前无法修改的,将其放到下一轮次进行修改(Bug状态为RESOLVED,决定设置为REMIND)。
3. 问题反馈与跟踪
(1) 开发人员接到发过来的Bug后应立刻修改(Bug状态为RESOLVED,决定设置为FIXED)。
(2) 测试人员接到管理平台发过来的错误更改信息后应该逐项复测,填写新的测试报告(测试报告必须覆盖上一次测试中所有REOPENED的测试用例)。
4. 回归测试
(1) 重新测试修复Bug后的系统。重复步骤3,直到本步骤回归测试结果达到系统验收标准。
(2) 如果测试有问题则返回步骤2(Bug状态为REOPENED),否则关闭这项Bug(Bug状态为CLOSED)。
5. 测试总结报告
完成以上4步后,综合相关资料生成测试报告。
整个集成过程如图1所示。
■ 图1 气象探测库存管理系统
04、集成测试的验收标准
1. 模块验收标准
接口: 接口提供的功能或者数据正确。
功能点: 验证程序与产品描述、用户文档中的全部功能点相对应。
流程处理: 验证程序与产品描述、用户文档中的全部流程相对应。
外部接口: 验证程序与产品描述、用户文档中的全部外部接口相对应。
2. 集成测试验收标准
集成测试设计用例中所设计的功能测试用例必须全部通过,性能及其他类型测试用例通过90%以上。在未通过的测试用例中,不能含有“系统崩溃”和“严重错误”之类的错误,“一般错误”应小于5%。
达到以上条件后可申请本轮集成测试结束,提交集成部测试经理,集成部测试经理召集本组人员开会讨论,决定下一轮测试工作。
当且仅当某次回归测试后测试结果符合软件质量的要求后,方可结束集成测试。
05、测试总结
记录问题: 利用Bug管理平台记录Bug,并指定到相关责任人。把Bug管理平台和需求设计文档、开发文档、测试文档、测试用例等联系起来,做成一个软件研发工具套件,之后即可通过一个Bug找到对应的文档、代码、测试用例等。
解决问题: 小组会议以及开发人员协调负责人,协调测试开发之间的工作。
测试结束后,形成测试报告。
相关文章:

软件测试案例 | 气象探测库存管理系统的集成测试计划
将经过单元测试的模块按照设计要求连接起来,组成规定的软件系统的过程被称为“集成”。集成测试也被称为组装测试、联合测试、子系统测试或部件测试等,其主要用于检查各个软件单元之间的接口是否正确。集成测试同时也是单元测试的逻辑扩展,即…...
vue点击按钮重新加载页面(vue第一次加载页面点击按钮出现页面刷新问题之后一切正常)
问题描述 所开发的vue项目每次跑起来之后就会出现点击按钮后重新加载整个页面的问题,但是只会在第一次点击的时候出现,后面就不会在出现加载整个页面的情况。 原因 在form表单中使用button按钮导致form表单进行了页面刷新。button默认的“type‘submi…...
软件工程(十一) 系统设计分类
我们知道需求规格说明书(SRS)落地之后, 就要开始着手系统设计了,看一下这个系统该如何来设计,并且如何实现。学习系统设计之前,需要先了解系统设计有哪些分类。 系统设计的分类如下 界面设计结构化设计面向对象设计(最重要)1、界面设计 界面设计也叫做人机界面设计,属于…...
数字转中文大写金额
有时候,我们需要显示中文大写金额,比如打印银行付款申请单等。 新建一个工程,加入一个标准模块在模块中加入如下代码,窗口中调用 AmountInChineseWords 函数即可。最大解析到百万亿,小数最多解析两位到分。 模块代码…...
Java——HashMap和HashTable的区别
Java——HashMap和HashTable的区别 Java HashMap和HashTable的区别1. 继承的父类2. 线程安全性3. null值问题4. 初始容量及扩容方式5. 遍历方式6. 计算hash值方式 Java HashMap和HashTable的区别 1. 继承的父类 都实现了Map、Cloneable(可复制)、Seria…...

Docker去除sudo权限
Docker去除sudo权限 使用docker命令时,每次都要sudo提权,否则就会报错提示无权限。 1.查看docker用户组及成员 sudo cat /etc/group | grep docker2.添加docker用户组 sudo groupadd docker3.添加用户到docker组 sudo gpasswd -a ${USER} docker4.增…...
【ROS系统】Ubuntu22.04系统中安装ROS2系统_ubuntu 安装ros2_GoesM
【ROS系统】Ubuntu22.04系统中安装ROS2系统_ubuntu 安装ros2_GoesM Excerpt ROS仿真、专为自动驾驶研发提供的系统平台_ubuntu 安装ros2 参考博客:ROS 安装详细教程 —— Ubuntu22.0.4 LTS 安装 Part 0. 准备 首先,我们需要一个Ubuntu系统。 Part 1. …...

MySQL8.0.22安装过程记录(个人笔记)
1.点击下载MySQL 2.解压到本地磁盘(注意路径中不要有中文) 3.在解压目录创建my.ini文件 文件内容为 [mysql] # 设置mysql客户端默认字符集 default-character-setutf8[mysqld] # 设置端口 port 3306 # 设计mysql的安装路径 basedirE:\01.app\05.Tool…...
Python中pip和conda的爱恨情仇
在使用pip和conda时,是否也有过以下的疑惑??? 目前只总结了以下常见的几种混淆,如有学者还有其它疑惑,欢迎留言讨论,我会解答更新,帮助自己理清的同时,也帮助其他同样困…...

HTTPS协议原理
目录 前言 1.理解加密和解密 2.为什么要加密 3.常见的加密方式 3.1对称加密 3.2非对称加密 4.数据摘要和数据指纹 5. 数字签名 6.HTTPS的加密策略 6.1只使用对称加密 6.2使用非对称加密 6.2.1服务端使用非对称加密 6.2.2双方都使用非对称加密 6.3对称加密非对称加…...

C语言每日一练------Day(6)
本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字:整数转换 异或 💓博主csdn个人主页:小小unicorn…...

springboot中使用ElasticSearch
引入依赖 修改我们的pom.xml,加入spring-boot-starter-data-elasticsearch <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>编写配…...

十二、集合(2)
本章概要 添加元素组集合的打印列表 List 添加元素组 在 java.util 包中的 Arrays 和 Collections 类中都有很多实用的方法,可以在一个 Collection 中添加一组元素。 Arrays.asList() 方法接受一个数组或是逗号分隔的元素列表(使用可变参数ÿ…...

【网络设备】交换机的概念、工作原理、功能以及以太网帧格式
个人主页:insist--个人主页 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、认识交换机 二、交换机的主要功能 1、数…...

研磨设计模式day11观察者模式
目录 场景 代码示例 定义 观察者模式的优缺点 本质 何时选用 简单变型-区别对待观察者 场景 我是一家报社,每当我发布一个新的报纸时,所有订阅我家报社的读者都可以接收到 代码示例 报纸对象 package day11观察者模式;import java.util.Observ…...

第八周第二天学习总结 | MySQL入门及练习学习第四天
实操练习: 1.建立一个员工表和与之对应的部门表 2.建立外键约束 3.使用多表查询,直接查询部门表和员工表 发现:有很多多余的因笛卡尔乘积而带来的多余输出内容 我想要的到简单明了的数据结果,要消除多于因笛卡尔乘积带来的输出…...
WPF数据转换
在基本绑定中,信息从源到目标的传递过程中没有任何变化。这看起来是符合逻辑的,但我们并不总是希望出现这种行为。通常,数据源使用的是低级表达方式,我们可能不希望直接在用户界面使用这种低级表达方式。WPF提供了两个工具&#x…...

《Go 语言第一课》课程学习笔记(十三)
方法 认识 Go 方法 Go 语言从设计伊始,就不支持经典的面向对象语法元素,比如类、对象、继承,等等,但 Go 语言仍保留了名为“方法(method)”的语法元素。当然,Go 语言中的方法和面向对象中的方…...

基于RUM高效治理网站用户体验入门-价值篇
用户体验 用户体验基本包含访问网站的性能、可用性和正确性。通俗的讲,就是一把通过用户访问测量【设计者】意图的尺子。 本文目的 网站如何传递出设计者的意图,可能页面加载时间太长、或者页面在用户的浏览器中渲染时间太慢,或者第三方设备…...
Unity之Photon PUN2开发多人游戏如何实现组队功能
前言 Photon Unity Networking 2 (PUN2) 是一款基于Photon Cloud的Unity多人游戏开发框架。它提供了一系列易于使用的API和工具,使开发者可以快速构建多人戏,并轻松处理多人游戏中的网络同步、房间管理、玩家匹配等问题。 我们在查看Pun2的Demo时,会发现Demo中自带了一个简…...

学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...

小智AI+MCP
什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined.
这个警告表明您在使用Vue的esm-bundler构建版本时,未明确定义编译时特性标志。以下是详细解释和解决方案: 问题原因: 该标志是Vue 3.4引入的编译时特性标志,用于控制生产环境下SSR水合不匹配错误的详细报告1使用esm-bundler…...

JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/锁消除
目录 一 基础 1 概念 2 卖票问题 3 转账问题 二 锁机制与优化策略 0 Monitor 1 轻量级锁 2 锁膨胀 3 自旋 4 偏向锁 5 锁消除 6 wait /notify 7 sleep与wait的对比 8 join原理 一 基础 1 概念 临界区 一段代码块内如果存在对共享资源的多线程读写操作…...

深入理解 C++ 左值右值、std::move 与函数重载中的参数传递
在 C 编程中,左值和右值的概念以及std::move的使用,常常让开发者感到困惑。特别是在函数重载场景下,如何合理利用这些特性来优化代码性能、确保语义正确,更是一个值得深入探讨的话题。 在开始之前,先提出几个问题&…...