软件工程分析报告07测试计划书——基于Paddle的肝脏CT影像分割

目录

测试计划书

 1. 引言

 2. 测试目标

 3. 测试方法

3.1 黑盒测试

(1)等价类划分:

(2)边界值分析:

(3)因果图:

​编辑(4)错误推测法

3.2 白盒测试

测试用例!!

 4. 测试环境

 5. 测试计划

6.测试内容

(1)单元测试

(2)集成测试

(3)确认测试

(4)系统测试


测试计划书

 1. 引言

本测试计划书旨在描述基于Paddle框架、使用Unet语义分割网络进行CT影像中肝脏和肝脏肿瘤分割的测试策略和方法。通过该测试,旨在验证模型的准确性、稳定性和性能。

 2. 测试目标

本次测试的主要目标是评估Unet网络在肝脏和肝脏肿瘤分割任务上的性能。具体包括以下方面:

· 验证Unet网络对CT影像中肝脏的分割准确性,以IOU指标进行评估。

· 验证Unet网络对CT影像中肝脏肿瘤的分割准确性,以IOU指标进行评估。

· 验证Unet网络在不同数据集上的泛化能力和稳定性。

 3. 测试方法

本次测试将采用黑盒测试和白盒测试相结合的方式进行。

3.1 黑盒测试

为了对Unet网络进行全面的黑盒测试,我们将从以下几个方面进行测试:

(1)等价类划分:

根据输入数据的特点,将其划分为不同的等价类,并从每个等价类中选择代表性的测试用例进行测试。例如,对于CT影像数据,我们可以将其划分为正常肝脏、肝脏肿瘤、肝硬化等等等价类。然后,我们可以从每个等价类中选择代表性的测试用例,以验证Unet网络在不同情况下的分割效果。

 

(2)边界值分析:

针对输入数据的边界情况,设计测试用例进行测试,以验证系统在边界值处的表现。例如,对于肝脏和肝脏肿瘤的大小、形状、位置等边界情况,设计相应的测试用例进行测试。这有助于我们评估Unet网络在处理边缘情况时的性能和稳定性。

(3)因果图:

根据系统的功能和交互关系,绘制因果图,设计相应的测试用例进行测试。例如,根据Unet网络的输入、输出和内部处理过程,设计相应的测试用例进行测试。这有助于我们评估Unet网络在不同情况下的处理过程和结果。

(4)错误推测法

1. 数据预处理错误:将3D体数据转换成2.5D切片时,可能会出现数据丢失或者切片顺序不正确等问题。

2. 模型训练错误:在训练过程中可能会出现过拟合、欠拟合等问题,导致模型性能不佳。

3. 分割预测错误:在进行肝脏和肝脏肿瘤分割时,可能会出现模型无法准确识别肝脏和肝脏肿瘤区域的问题,导致分割结果不理想。

4. 用户上传数据错误:用户可能会上传错误的CT影像数据或格式不正确的数据,导致系统无法进行分割处理。

5. 系统后处理错误:在进行后处理步骤时,可能会出现算法错误或者数据处理错误,导致临床指标计算不准确。

6. 性能评估错误:在对分割模型的性能进行评估时,可能会出现评估指标不准确或者评估方法不恰当的问题。

7. 结果展示错误:在展示分割结果和临床指标时,可能会出现数据显示错误或者界面设计不合理的问题,导致用户无法正确理解结果。

针对上述可能存在的错误和特殊情况,可以进行错误推测法分析,设计如下测试用例:

1. 数据预处理错误:

a) 生成的切片数量不正确。

b) 切片顺序不正确。

2. 模型训练错误:

a) 过拟合或者欠拟合问题。

b) 训练过程中出现异常导致模型无法训练。

3. 分割预测错误:

a) 对于某些CT影像数据无法进行准确的分割。

b) 对于某些肝脏或者肝脏肿瘤形状、位置复杂的情况,分割结果不理想。

4. 用户上传数据错误:

a) 上传格式不正确的文件。

b) 上传大小超过系统能够处理的限制。

5. 系统后处理错误:

a) 临床指标计算错误。

b) 后处理算法出现异常。

6. 性能评估错误:

a) 评估指标计算不正确。

b) 评估方法不恰当。

7. 结果展示错误:

a) 数据显示错误。

b) 界面设计不合理。

3.2 白盒测试

项目路径概述:该程序有L1(sacdfgh),L2(sacbdfgh),L3(sacdfegh),L4(sacbdfegh)

语句覆盖,使得被测程序的每个可执行语句都至少执行一次,只需执行路径L1即可

判定覆盖,每个判定框的真假分支都至少执行一次,只需执行L2,L3

条件覆盖:使得被测程序的每个判定中的每个条件的所有可能可能取值都至少执行一次。只需L4,L3

判定/条件覆盖,每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行一次,只需执行L1,L4

条件组合覆盖,使得每个判断的所有可能的条件取值组合至少执行一次,只需L1,L2,L3,L4.

路径覆盖,使得被测程序的每条可能路径都至少执行一次,只需L1,L2,L3,L4

点覆盖,执行时至少经过程序图中每个节点一次

边覆盖,使得程序执行路径的每一个边执行一次

测试用例!!

测试用例编号:T001

测试项目:正常肝脏分割测试(L1)

标题:验证系统对正常肝脏CT影像的分割准确性

重要级别:高

预置条件:已有一张正常肝脏的CT影像和标准分割结果

输入:正常肝脏的CT影像

操作步骤:

1. 选择一张正常肝脏的CT影像进行分割;

2. 比较系统生成的分割结果和标准分割结果,计算IOU值;

3. 判断分割结果是否符合需求。

预期输出:系统生成的分割结果与标准分割结果相似,IOU值达到0.9以上。

测试用例编号:T002

测试项目:检测错误CT图像模块(L2)

标题:验证系统对错误CT图像的判断

重要级别:中

预置条件:错误的CT的图像

输入:一张错误的CT图像

操作步骤

  1. 选择一张错误CT图像输入
  2. 检测到CT图像错误,让操作者从新输入
  3. 输入正确CT图像

4.比较系统生成的分割结果和标准分割结果,计算IOU值;

5. 判断分割结果是否符合需求。

6.预期输出:系统生成的分割结果与标准分割结果相似,IOU值达到0.9以上。

测试用例编号:T003

测试项目:分割CT图像模块(L3)

标题:检测分割CT图像标签的准确性

重要级别:高

预置条件:准备根据不同分割标签的图像与专家验证结果

输入:一张需要特殊分割的CT图像

操作步骤:

  1. 选择一张需要特殊分割的CT图像
  2. 在分割失败后,调整分割标签选项
  3. 再次进行分割

测试用例编号:T004

测试项目:项目整体检测错误(4)

标题:验证系统对各模块错误的判断

重要级别:高

预置条件:准备需要特殊分割和错误的CT的图像

输入:一张需要特殊分割以及错误的图像

操作步骤:

  1. 输入上述图像
  2. 判断出CT图像错误,从新输入一张没错误而且需要特殊分割的图像
  3. 分割失败,调整分割标签选项
  4. 再次进行分割

 4. 测试环境

· 操作系统:Windows 10

· 开发工具:Python 3.7, Paddle框架

· 硬件要求:具备足够的计算资源和存储空间

·测试工具:pytest、coverage

 5. 测试计划

5.1 测试准备阶段

· 确定测试目标和测试方法。

· 安装配置测试环境。

· 准备测试数据集。

6.测试内容

本次测试包括单元测试、集成测试、确认测试和系统测试四个阶段。

(1)单元测试

• 按下图配置测试环境

• 编写测试数据

• 进行多个单元的并行测试

针对Unet网络的各个组件进行单元测试,确保其功能的正确性。

单元测试将针对系统中的各个模块进行测试,主要测试项如下:

·图像读取模块是否能够正确读取CT影像数据。

·模型加载模块是否能够正确加载训练好的模型。

·分割模块是否能够正确对肝脏CT影像进行分割。

·结果输出模块是否能够正确输出分割结果。

(2)集成测试

自顶向上集成

自顶向下集成

将Unet网络与其他模块进行集成测试,验证系统整体的功能和性能。

集成测试将测试系统中各个模块之间的接口和交互是否正常,主要测试项如下:

·图像读取模块和模型加载模块之间的接口是否正常。

·模型加载模块和分割模块之间的接口是否正常。

·分割模块和结果输出模块之间的接口是否正常。

(3)确认测试

1. 功能测试:对软件所有功能进行测试,验证其是否与需求规约一致,并能够满足用户需求。具体测试内容包括:

a) 用户登录:测试用户登录功能是否正常运行,能否正确识别用户身份并授予相应权限。

b) 上传CT影像:测试系统是否能够成功接受上传的CT影像文件,并将其进行后续处理。

c) 查看分割结果:测试用户是否能够顺利查看分割后的肝脏和肝脏肿瘤图像以及临床指标,并确认其准确性。

d) CT影像分割:测试系统使用2.5D Unet网络对上传的CT影像进行分割的准确性。

e) 后处理:测试系统是否能够顺利进行必要的后处理步骤,以提取有用的临床指标。

f) 性能评估:测试系统能否对分割模型的性能进行评估,计算IOU等指标。

2. 配置复审:对程序和文档配置进行复审,确保其齐全、分类有序,并包括了软件维护所必须的细节。具体测试内容包括:

a) 程序配置复审:测试程序的配置是否齐全、分类有序,并包括了软件维护所必须的细节。

b) 文档配置复审:测试文档的配置是否齐全、分类有序,并包括了软件维护所必须的细节。

c) 两者一致性检验:测试程序和文档配置是否一致,是否能够相互匹配。

3. α测试:由一个用户在开发环境下进行测试,验证软件的功能是否符合设计要求。具体测试内容包括:

a) 代码编译测试:测试是否能够成功编译程序代码,并输出正确的结果。

b) 单元测试:测试各个模块的正确性和稳定性,发现并修正潜在的错误。

c) 集成测试:测试各个模块之间的协同工作,确保系统整体功能的完整性和稳定性。

4. β测试:由软件的多个用户在一个或多个用户的实际使用环境下进行测试,验证软件是否能够正常运行,并满足用户需求。具体测试内容包括:

a) 功能测试:测试所有功能是否正常运行,并能够满足用户需求。

b) 兼容性测试:测试软件是否与不同操作系统、硬件设备、浏览器等兼容。

c) 性能测试:测试软件的响应速度、稳定性和负载能力等性能指标。

d) 安全测试:测试软件的安全性,包括数据安全、用户隐私保护等方面。

e) 用户体验测试:测试软件的用户体验是否良好,是否符合用户习惯和期望。

(4)系统测试

1. 功能测试:验证系统是否按照预期功能进行操作。包括以下几个方面:

   - 用户登录测试:确认系统能够正确验证用户身份和授予相应的权限。

   - CT影像上传测试:验证系统能够接受并正确处理上传的CT扫描图像文件。

   - 分割结果查看测试:确保用户能够正确查看分割后的肝脏和肝脏肿瘤图像。

   - 临床指标查看测试:确认系统能够正确计算和展示肝脏及肝脏肿瘤体积、肝脏肿瘤负担等临床指标。

2. 性能测试:测试系统在正常负载下的性能表现。可以包括以下方面:

   - 分割速度测试:验证系统在给定的硬件配置下,对CT影像进行分割的速度是否满足实际需求。

   - 资源利用率测试:检查系统在运行过程中对CPU、内存等资源的占用情况,确保系统资源利用合理。

   - 并发访问测试:模拟多个用户同时访问系统,测试系统对并发请求的处理能力。

3. 强度测试:测试系统在非正常工作条件下的稳定性和可靠性。可以包括以下方面:

   - 容错能力测试:在系统运行过程中,人为制造错误并观察系统是否能够检测到错误、修正错误并继续正常运行。

   - 安全性测试:评估系统中已存在的安全措施和保密措施是否有效,确保系统没有漏洞并能够保护用户数据的安全性。

   - 异常情况测试:模拟系统异常情况,如网络中断、数据库故障等,测试系统对这些异常情况的处理能力。

4. 可用性测试:评估系统的易用性和用户体验。可以包括以下方面:

   - 用户界面测试:验证系统的用户界面设计是否符合用户习惯,操作是否简单直观。

   - 错误处理测试:测试系统对用户输入错误或异常操作的处理能力,确保系统能够给出明确的提示信息。

   - 响应时间测试:测试系统对用户请求的响应时间,确保系统能够及时响应用户操作。

 5. 测试执行和记录

根据测试计划,执行各个阶段的测试,并记录测试过程中的关键信息,包括测试用例、测试数据、测试结果等。

 6. 缺陷管理

在测试过程中,发现的缺陷将记录在缺陷管理系统中,并按照优先级进行修复和验证。

肝脏和肝脏肿瘤分割系统进行了集成测试。测试主要覆盖了图像读取模块、模型加载模块、分割模块和结果输出模块等方面。经过测试,系统的各个模块都能够正常工作,没有发现明显的问题。

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

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

相关文章

Docker - DockerFile

Docker - DockerFile DockerFile 描述 dockerfile 是用来构建docker镜像的文件!命令参数脚本! 构建步骤: 编写一个dockerfile 文件docker build 构建成为一个镜像docker run 运行脚本docker push 发布镜像(dockerhub&#xff0…

Vue3-TypeScript-Threejs:导入外部的glb格式3D模型

一、直接上代码&#xff0c;在vue3-typescript-threejs 项目 导入外部的glb格式3D模型 极简代码&#xff0c;快速理解 <template><div ref"container"></div></template><script lang"ts" setup>import { onMounted, ref …

阶段七-Day01-SpringMVC

一、Sping MVC的介绍 1. 使用Front(前端)设计模式改写代码 1.1 目前我们的写法 目前我们所写的项目&#xff0c;持久层、业务层的类都放入到Spring容器之中了。他们之间需要注入非常方便&#xff0c;只需要通过Autowired注解即可。 但是由于Servlet整个生命周期都是被Tomca…

数据结构—二叉树的模拟实现(c语言)

目录 一.前言 二.模拟实现链式结构的二叉树 2.1二叉树的底层结构 2.2通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树 2.3二叉树的销毁 2.4二叉树查找值为x的节点 2.5二叉树节点个数 2.6二叉树叶子节点个数 2.7二叉树第k层节点个数 三.二叉树的遍历 3.1…

java基础-数据类型

1、变量 变量就是申请内存来存储值。也就是说&#xff0c;当创建变量的时候&#xff0c;需要在内存中申请空间。 内存管理系统根据变量的类型为变量分配存储空间&#xff0c;分配的空间只能用来储存该类型数据。 因此&#xff0c;通过定义不同类型的变量&#xff0c;可以在内…

【C++】类与对象 I

类与对象 I &#xff1a; 前言&#xff1a;&#xff08;C&#xff09;面向过程 和&#xff08;C&#xff09;面向对象 初步认识前言&#xff1a;类的引入一、类的介绍二、类的定义&#xff08;一&#xff09;class 语法&#xff08;二&#xff09;类的两种定义方式&#xff1a;…

个人网厅——销户

目录 需求文档 公积金销户类 controller层 service层 service层实现类 1.验证 &#xff08;个人账户&#xff09; 2.提交&#xff08;添加&#xff09; controller层 service层 service层实现类 3.分页查询 controller层 service层 service层实现类 4. 详情查询…

excel中通过ROW函数返回引用的行号

例如&#xff0c;想引用B3的行号&#xff08;行号应该是3&#xff09;&#xff1a; 鼠标点在想输入函数的单元格&#xff1a; 插入-》函数&#xff1a; 选择ROW函数&#xff1a; 点击“继续”&#xff0c;然后点击红框圈出来的按钮&#xff1a; 鼠标点击B3单元格&…

数据结构----链式栈的操作

链式栈的定义其实和链表的定义是一样的&#xff0c;只不过在进行链式栈的操作时要遵循栈的规则----即“先进后出”。 1.链式栈的定义 typedef struct StackNode {SElemType data;struct StackNode *next; }StackNode,*LinkStack; 2.链式栈的初始化 Status InitStack(LinkSta…

人工智能与充电技术:携手共创智能充电新时代

人工智能与充电技术&#xff1a;携手共创智能充电新时代 摘要&#xff1a;本文探讨了人工智能与充电技术的结合及其在未来充电设施领域的应用。通过分析智能充电系统的技术原理、优势以及挑战&#xff0c;本文展望了由人工智能驱动的充电技术为未来电动交通带来的巨大变革与机…

25.4 MySQL 函数

1. 函数的介绍 1.1 函数简介 在编程中, 函数是一种组织代码的方式, 用于执行特定任务. 它是一段可以被重复使用的代码块, 通常接受一些输入(参数)然后返回一个输出. 函数可以帮助开发者将大型程序分解为更小的, 更易于管理的部分, 提高代码的可读性和可维护性.函数在编程语言…

Elasticsearch 面试题

文章目录 Elasticsearch 读取数据您能解释一下 X-Pack for Elasticsearch 的功能和重要性吗&#xff1f;Elasticsearch 中的节点&#xff08;比如共 20 个&#xff09;&#xff0c;其中的 10 个选了 一个master&#xff0c;另外 10 个选了另一个 master&#xff0c;怎么办&…

《原则》思维导图

ProcessOn 《原则》是一本投资与管理领域的经典之作&#xff0c;作者瑞达利欧以生动的语言和深入浅出的方式&#xff0c;分享了他的投资原则和管理经验。这本书不仅适合金融从业者&#xff0c;也对一般读者有很大启发。 通过阅读《原则》&#xff0c;你将了解到如何建立有效的…

Java 并发-Lock

目录 Lock 源码 lock() tryLock() tryLock(long time, TimeUnit unit) Lock与synchronized Lock Lock 是 java.util.concurrent.locks包 下的接口。 上图是 java.util.concurrent.locks包下主要常用的类与接口的关系。 源码 public interface Lock {void lock();void l…

什么是代理模式,用 Python 如何实现 Proxy(代理 或 Surrogate)对象结构型模式?

什么是代理模式&#xff1f; 代理&#xff08;Proxy&#xff09;是一种结构型设计模式&#xff0c;其目的是通过引入一个代理对象来控制对另一个对象的访问。代理对象充当目标对象的接口&#xff0c;这样客户端就可以通过代理对象间接地访问目标对象&#xff0c;从而在访问过程…

Ubuntu诞生已经19年了

导读2004 年 10 月 20 日&#xff0c;Ubuntu 4.10 正式发布&#xff0c;代号‘Warty Warthog’。 2004 年 10 月 20 日&#xff0c;Ubuntu 4.10 正式发布&#xff0c;代号‘Warty Warthog’。 ▲ Ubuntu 4.10 与最新版 Ubuntu 23.10 的对比 作为 Ubuntu 第一个版本&#xff0…

MATLAB 全景图切割及盒图显示的实现步骤

参考&#xff1a;MATLAB 全景图切割及盒图显示的实现步骤 | w3cschool笔记 在摄像领域中全景图是一种可以将周围360度景象全部收录的一种拍照技术&#xff0c;但全景图的实际观感并不是那么好&#xff08;可以看下文的全景图的样例&#xff09;。我们可以通过matlab来进行全景…

4.CentOS7安装MySQL5.7

CentOS7安装MySQL5.7 2023-11-13 小柴你能看到嘛 哔哩哔哩视频地址 https://www.bilibili.com/video/BV1jz4y1A7LS/?vd_source9ba3044ce322000939a31117d762b441 一.解压 tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz1.在/usr/local解压 tar -xvf mysql-5.7.44-…

R语言——taxize(第一部分)

ropensci 系列之 taxize &#xff08;中译手册&#xff09; taxize 包1. taxize支持的网络数据源简介目前支持的API&#xff1a;针对Catalogue of Life&#xff08;COL&#xff09; 2. 浅尝 taxize 的一些使用例子2.1. **从NCBI上获取唯一的分类标识符**2.2. **获取分类信息**2…

list复制出新的list后修改元素,也更改了旧的list?

例子 addAll() Testpublic void CopyListTest(){Student student Student.builder().id(1).name("张三").age(23).classId(1).build();Student student2 Student.builder().id(2).name("李四").age(22).classId(1).build();List<Student> student…