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

news2024/11/25 1:07:38

目录

测试计划书

 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.coloradmin.cn/o/1208695.html

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

相关文章

YOLO目标检测——苹果缺陷检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用:苹果质量检测和自动化分拣系统数据集说明:苹果缺陷检测数据集,真实场景的高质量图片数据,数据场景丰富,含有缺陷图片和没缺陷图片。标签说明:使用lableimg标注软件标注,标注框质量…

JS基础 查漏补缺

学习视频:黑马程序员 第五天——对象 方法和调用 数据行为性的信息称为方法,如跑步、唱歌等,一般是动词性的,其本质是函数。 方法是依附在对象上的函数 方法是由方法名和函数两部分构成,它们之间使用 : 分隔 方法是…

【广州华锐互动】VR居家防火逃生模拟演练增强训练的真实性

VR软件开发公司广州华锐互动在消防培训领域已开发了多款VR产品,今天为大家介绍VR居家防火逃生模拟演练系统,这是一种基于虚拟现实技术的消防教育训练设备,通过模拟真实的火灾场景,让使用者身临其境地体验火灾逃生过程,…

破解tomcat密码并上传webshell

tomcat基础认证爆破 暴力破解 进入vulnhub的tomcat8目录,启动环境 由于tomcat密码默认最大尝试错误次数为5次,需要修改server.xml,修改下面字段 failureCount"10000000000" lockOutTime"0"tomcat默认界面,…

一篇博客读懂队列——Queue

目录 一、队列的概念和结构 ​二、队列的实现 2.1队列的初始化QueueInit 2.2队列的摧毁QueueDestroy 2.3插入结点QueuePush 2.4删除结点QueuePop 2.5返回队头QueueFront 2.6返回队尾QueueBack 2.7判断队列为空QueueEmpty 2.8统计队列数目QueueSize 一、队列的概念和…

打印字符(C++)

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…

清理mac苹果电脑磁盘软件有哪些免费实用的?

苹果电脑是一款非常流行的操作系统设备,其稳定性和性能一直备受用户的喜爱。然而,随着时间的推移,我们使用电脑的过程中可能会发现磁盘上存储的数据越来越多,这不仅占用了宝贵的硬盘空间,还可能导致电脑运行变慢。因此…

Python入门教程:12个常用基础语法详解

文章目录 前言1.多个字符串组合为一个字符串2. 字符串拆分为子字符串列表3. 统计列表中元素的次数4.使用try-except-else-block模块5. 使用枚举函数得到key/value对6. 检查对象的内存使用情况7. 合并字典8. 计算执行一段代码所花费的时间9. 列表展开10. 列表采样11. 数字化12. …

开启学历新征程,电大搜题助您轻松获取知识

作为一名电大学者,有肩负着传递真实信息、宣传正面价值的使命,而今天我要向您介绍的是一款非常实用的学习工具——电大搜题微信公众号。通过该平台,您可以获得更多关于浙江开放大学和广播电视大学的学习资源,助您在学习和工作上取…

Linux操作系统使用及C高级编程-D4Linux shell命令(文件搜索、文件处理、压缩解压)

查看文件相关命令 cat cat file:将文件内容输出 cat:等待输入,在屏幕上输入什么,就输出什么 tac cat file:与cat相反,将文件内容从后往前输出 more more file:在屏幕上显示一页的文件内容&am…

C语言从文件 D://test.txt 读取字符串,将字符串中所有的大写字符改为小写字母并写回到源文件中

完整代码&#xff1a; /*从文件 D://test.txt 读取字符串&#xff0c;将字符串中所有的大写字母改为小写字母并写回 到源文件中*/ #include<stdio.h>//将字符串中所有的大写字母改为小写字母 void func(char *buff){while (*buff!\0){if (*buff>A&&*buff<…

客户下单时如何自动匹配到最近的门店

有些商家有多个门店&#xff0c;当客户下单时&#xff0c;希望能够将客户下的订单分配给最近的门店。下面就具体介绍一下在采云小程中是如何实现的。 首先&#xff0c;为了简便起见&#xff0c;请确定门店高级设置保持着默认设定。因为单独的商品管理模式以及独享的商品信息模…

使用GPT-4训练数据微调GPT-3.5 RAG管道

原文&#xff1a;使用GPT-4训练数据微调GPT-3.5 RAG管道 - 知乎 OpenAI在2023年8月22日宣布&#xff0c;现在可以对GPT-3.5 Turbo进行微调了。也就是说&#xff0c;我们可以自定义自己的模型了。然后LlamaIndex就发布了0.8.7版本&#xff0c;集成了微调OpenAI gpt-3.5 turbo的…

线程池参数该怎么配置?这可能是为数不多的好答案

前言 CPU 密集型 CPU 核数 1 IO 密集型 CPU 核数 * 2 相信这个公式可谓是线程池八股文中老生常谈的万能公式了&#xff0c;但现实却很骨感&#xff0c;我之前有个系统就是按照这个公式算出来的参数去配置的。结果效果并不好&#xff0c;甚至让下游系统直呼受不了。这个东西…

清华镜像源地址,适用于pip下载速度过慢从而导致下载失败的问题

清华地址 https://pypi.tuna.tsinghua.edu.cn/simple下载各种各样的包的指令模板 pip install XXX -i https://pypi.tuna.tsinghua.edu.cn/simple这样就行了&#xff0c;XXX代表的是你将要下载的包名称。 比如&#xff1a; pip install opencv-python -i https://pypi.tuna.…

数据结构-二叉树的前、中、后序遍历

目录 1. 二叉树的遍历 1.1 前序 1.2 中序 1.3 后序 1.4 遍历的复杂度 2.二叉树节点个数及高度的计算 2.1 二叉树节点个数 2.2 二叉树叶子节点的个数 2.3 二叉树高度 2.4 二叉树第k层节点个数 1. 二叉树的遍历 前面的章节中&#xff0c;我们学习了二叉树的顺序结构&am…

计算机毕业设计选题推荐-体育赛事微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

c语言11周(16~20)

利用函数求和 //只填写要求的函数 double fun(int n) {double s 0;int i;for (i 1; i < n; i) {s 1.0 / (i * i);}return s; } 编写char fun(char c)函数&#xff0c;将数字参数字符c按如下规则转换。 题干编写char fun(char c)函数&#xff0c;将数字参数字符c按如…

【milkv】1、光感bh1750驱动添加及测试

前言 本章介绍在milkv-duo开发板上添加光感bh1750&#xff0c;并实现应用层测试。 一、电路图查看 1.1 duo开发板i2c引脚 https://github.com/milkv-duo/duo-files 这些都是可以作为i2c使用的引脚 注意&#xff1a;电路图中的gpio0、1对应的是芯片上的gpio28、29&#…

为什么Springboot项目中有些写法继承了SpringBootServletInitializer类?Springboot的两种发布方式

文章目录 一、前言二、SpringBoot的两种发布方式2.1、内置容器运行2.2、外置容器&#xff08;Tomcat&#xff09;运行 三、扩展3.1、如何将 Spring Boot 项目打包成 war 包&#xff1f; 一、前言 在一次SpringBoot源码中看到了启动类中继承了SpringBootServletInitializer&…