C0726K11-图像识别模块测试实施方案
第二版概述:2025-8-24
1. 概述
1.1 测试目标
本测试方案旨在验证基于Dreamreflex公司提供的第三方图像识别模型的功能性、性能和稳定性,确保相似度查询功能能够满足系统需求。
1.2 测试范围
- Dreamreflex第三方图像识别模型API接口测试
- 图像相似度查询功能测试
- 系统集成测试
- 性能和稳定性测试
1.3 测试环境
- 测试平台:自行搭建的Web应用测试平台
- 第三方服务:Dreamreflex图像识别API
- 测试数据:实地拍摄的图像样本
2. 测试策略
2.1 测试分类
- 功能测试:验证图像识别和相似度查询的基本功能,例如图像上传功能,即图像上传至对象存储系统中,由对象存储系统返回Key值作为图像本身的唯一标识,也需要测试图像识别的图像上传功能,这里特指的是图像识别系统模型将图片向量化处理的功能。诸如此类的功能分为两大类,一类是与模型无关的接口层功能,如对象存储管理和Meta管理。另一类是模型有关功能,如向量化、相似度测试等。
- 接口测试:验证与Dreamreflex API的集成,Dreamreflex API以SDK形式提供,SDK内部分为Meta装载、必要信息实例化和请求发起等多个功能,需要将其封装为RESTFul接口,以供后续或上一层使用,此时的分层结构中,图像信息将会从对象存储中下载至缓存区,以原始字节流或二进制数据流的形式加载到中间件中,让中间件触发SDK操作。此时中间件携带有绑定自身管理所需的Meta,作为中间件层的PCI,这些PCI将会把系统身份的图像和模型身份的图像进行状态绑定,方便接口测试时召回图像指针。
- 性能测试:验证响应时间和并发处理能力。该部分分为中间件层的性能测试和SDK的性能测试,对于中间件来说,所有的性能指标都是可预测的,因为我们可以独立控制所有属于CVCore的组件,例如HTTP解析,异步同步网关,请求发起前处理和后处理,因此无需测试。但对于SDK来说,SDK底层组件发起网络请求后所有的后端操作均不可预测,对于这样的黑箱系统需要测试其各部分的执行时间。由于系统还引入了对象存储,在使用默认远程对象存储时,由于对象存储本身也是黑箱,因此也需要测试,但本地对象存储无需测试,一方面本地延迟可以忽略不计,另一方面本地所有组件均可控,可通过计算得出所需指标。
- 兼容性测试:验证不同图像格式的支持,该部分由API的上一层负责,例如控制MIME信息和Content-Type信息。对于对象存储功能来说,对象本身的格式是不做限制的。因此只需要确定对象存储或其接口能够接受图像格式文件即可。
- 准确率测试:验证对某个穿舱件的识别准确率,这是SDK的重点,需要利用多个测试图像来获取数据。需要划分训练测试比,对于标注的训练测试比来说,8:2是较为科学的比例,但由于测试的渐进性和缺少数据集,本次测试均为1:1或者2:1,例如同一个工件的3张图片,2张作为训练数据加入到模型中,来测试模型对于第三张图片的打分,此时训练测试比为2:1,测试数据为33.3%,训练数据为66.7%。通过这种方式,测试出模型对于现有图片的测试准确率,及格率分为两档,一种是60%的及格档,即图片识别准确率达到60%以上,另一档是可用档,即图片识别准确率达到40%以上,但由于可用档的低准确率,还需要模型提供准确率排名,保障可选图片按升序排列,且正确图像具有40%的正确率并在前几位。
- 异常测试:验证错误处理和异常情况,异常分为SDK异常和CVCore系统内的异常,目前MVP还没建立异常体系,请测试人员暂缓相关测试。
方案概述:
CVCore模块作为DreamReflex的API集成,为系统和图像API建立了异构的中间件,由于DreamReflex的API形式只有SDK,因此测试方案需要模拟SDK调用并封装成RESTFul接口。
为实现这一点,我们将所有的SDK调用封装到CVCore中,并且由CVCore的函数调用去调用SDK提供的各类接口,并且将返回值进行包装,包装完成之后的数据便可进行后续的处理。例如发起HTTP请求来执行SDK动作。 此时HTTP仅作为SDK的触发器,RESTFulAPI在调用时对于调用者来说SDK操作是透明的,调用者不需要知道SDK的存在,也不需要知道SDK的调用方式,只需要知道调用RESTFulAPI即可。
由于CVCore由CVCore的自动化OpenAPI范式编辑器生成文档,利用Swagger和Redoc生成接口文档,利用Web提供的简易Shell执行各个单元用例。
此时测试的主要方向分为两种,第一种是测试CVCore本身作为中间件的功能,例如HTTP请求处理,HTTP解析,内部调用方式和中间件两端的功能,这部分统称为系统测试。 第二种则是CVCore所代表的SDK的功能测试,即图像识别能力本身,这也是测试的重点部分。
对于系统测试,需要使用Swagger或Redoc提供的GUI或者Shell来手动发起测试。需要测试的项目详见测试用例。 对于功能测试,主要的目的是获取图像识别功能的可用性和具体性能,例如图像的识别速度和准确率。
3. 测试用例设计
3.1 图像上传功能测试
测试用例TC001:正常图像上传
- 测试目的:验证系统能够正常上传和存储图像
- 前置条件:Web应用正常运行
- 测试步骤:
- 访问图像管理页面
- 选择标准格式图像文件(JPG/PNG/GIF)
- 点击上传按钮
- 验证上传结果
- 预期结果:图像成功上传并显示在管理列表中
- 测试数据:标准JPG、PNG、GIF格式图像
测试用例TC002:异常格式图像上传
- 测试目的:验证系统对不支持格式的处理
- 测试步骤:
- 尝试上传非图像格式文件(TXT、DOC等)
- 尝试上传损坏的图像文件
- 验证系统响应
- 预期结果:系统提示格式不支持或文件损坏错误
测试用例TC003:大文件上传测试
- 测试目的:验证系统对大尺寸图像的处理能力
- 测试步骤:
- 上传不同尺寸的图像文件(1MB、5MB、10MB等)
- 监控上传时间和系统响应
- 预期结果:系统能够处理合理范围内的大文件
3.2 图像识别功能测试
测试用例TC004:基础图像识别
- 测试目的:验证Dreamreflex API的基本识别功能
- 测试步骤:
- 上传测试图像
- 调用图像识别接口
- 验证识别结果
- 预期结果:返回图像特征向量或识别标签
测试用例TC005:混淆图片识别
- 测试目的:测试模型是否能够识别图像主体
- 测试步骤:
- 上传一张完全空白或纯色的图片
- 验证完全空白的图片或无意义图片是否在合理范围内
- 预期结果:应该保持非常低的相似度
3.3 相似度查询功能测试
测试用例TC006:精确相似度查询
- 测试目的:验证相同图像的相似度查询
- 测试步骤:
- 上传一张图像作为基准
- 使用相同图像进行相似度查询
- 验证相似度得分
- 预期结果:相似度得分接近100%或1.0
测试用例TC007:近似相似度查询
- 测试目的:验证相似图像的识别能力
- 测试步骤:
- 准备一组相似图像(同一物体不同角度、光线等)
- 进行相似度查询
- 验证相似度排序
- 预期结果:相似图像获得较高相似度得分并正确排序
测试用例TC008:不相似图像查询
- 测试目的:验证系统能够正确识别不相似的图像
- 测试步骤:
- 使用完全不同类型的图像进行查询
- 验证相似度得分
- 预期结果:不相似图像获得较低相似度得分
测试用例TC009:相似度阈值测试
- 测试目的:验证相似度阈值设置的有效性
- 测试步骤:
- 设置不同的相似度阈值
- 执行查询操作
- 验证结果过滤效果
- 预期结果:只返回超过阈值的相似图像
3.4 API接口测试
测试用例TC010:API连接测试
- 测试目的:验证与Dreamreflex API的连接稳定性
- 测试步骤:
- 发送API连接请求
- 验证响应状态
- 检查认证和授权
- 预期结果:成功建立连接并获得有效响应
测试用例TC011:API错误处理
- 测试目的:验证API异常情况的处理
- 测试步骤:
- 发送无效请求参数
- 模拟网络中断
- 测试API限流情况
- 预期结果:系统能够正确处理各种异常情况
3.5 性能测试
测试用例TC012:响应时间测试
- 测试目的:验证系统响应时间满足要求
- 测试步骤:
- 记录单次图像识别的响应时间
- 记录相似度查询的响应时间
- 分析不同图像大小对响应时间的影响
- 预期结果:响应时间在可接受范围内(建议小于5秒)
4. 测试数据准备
4.1 图像样本分类
- 标准测试图像:清晰、标准格式的图像
- 边界测试图像:极大、极小尺寸的图像
- 异常测试图像:模糊、损坏、特殊格式的图像
- 相似度测试集:包含相似和不相似图像的测试集
4.2 测试数据规模
- 基础功能测试:50-100张图像
- 相似度测试:200-500张分类图像
- 性能测试:1000+张图像
- 压力测试:根据系统容量确定
5. 测试说明
测试全程录音录像,且与测试系统同步
用例库代码:SSMQ
文档版本:v1.0
创建日期:2025年1月
最后更新:2025年1月
负责人:测试团队