******************************************************************************

本文主要介绍利用Jmeter进行AI图像识别接口测试

  1.测试需求关键点分析

  2.测试准备工作

  3.测试过程与测试结果统计

******************************************************************************

一、测试需求关键点分析

1)AI图片稽查算法模型优化功能需求:

 *  照片是否面部完整、五官清晰可辨,正面免冠

 *  照片是否为现场拍摄的办理人真实本人

 *  用户头像部分占比是否小于照片的三分之一(头顶至下巴高度占照片高度比例、半身照面积占整个照片面积比例,两个标准满足其一即可)

2)转化为测试需求:

 *  测试AI图片稽查接口功能是否满足功能需求

 *  测试升级版本较基础版本算法模型准确率是否得到了明显提升

 *  测试升级版本较基础版本算法模型性能是否更好了

二、测试准备工作(摘自测试计划关键步骤)

1)根据需求点准备测试数据:图片正常、非免冠、占比不合理、遮挡、非人脸

  注意:要与算法工程师讨论测试数据种类与模型评估方法,不同项目测试侧重点不同,灵活运用

2)测试工具:JMeter 或 写python脚本 或 Postman

3)测试环境:千兆网络带宽 、1个GPU 2个flask进程 、2个CPU(24核数)

4)测试方法:

 *  功能测试:传入不同种类图片数据对接口进行请求,验证返回结果是否符合功能需求

 *  模型评估:传入不同种类图片数据集对接口进行请求,对返回结果进行统计,计算模型准确率来判定模型的是否符合标准

 *  性能测试:不同并发数对接口进行性能测试,观察服务器内存、硬盘、GPU的使用情况,记录TPS与响应时间

5)JMeter脚本设计关键点:
      问题一:接口参数为图片流,如何解决几百个图片流文件的参数化?

  解决办法:

    A、Beanshell 读取图片流存放文件的目录,设置参数引用Beanshell图片流变量   --- 不可行
    B、利用CSV参数化图片流目录  --- 不可行
    C、换个思路,利用Beanshell前置处理器读取图片并进行转流后参数化   --- 解决

  问题二:Response返回值为json嵌套格式,如何取到json嵌套的data列表值并断言多个预期值?

   解决办法:

    A、利用正交法把所有返回值的用响应断言做判断  --- 没有试,比较不灵活且容易遗漏返回值
    B、利用正则表达式提取器+Beanshell断言方式,正则提取json嵌套data列表,beanshell断言遍历列表判断满足条件的值   --- 解决

三、测试过程与测试结果统计:

1)模型功能测试与模型评估测试

 *  利用JMeter工具创建测试计划,根据API文档添加测试请求,消息体数据利用Beanshell参数化


 *  利用while控制器与Beanshell前置处理器结合的方式对每一个图片进行稽查,while控制器控制图片的数量,Beanshell前置处理器负责加载图片、转码图片、以变量的方式对参数进行赋值


 *  利用正则表达式提取器与BeanShell断言的方式对返回的json结果进行分类断言,统计聚合报告的成功请求数


 *  利用excel表格统计算法模型的准确率,对比不同版本的测试结果,升级模型准确率明显提升10%左右。如图:

2)性能测试过程参考之前博客:

  Linxu下JMeter进行接口压力测试:https://www.cnblogs.com/xjx767361314/p/11322039.html

  总结:在内存、GPU、网络正常的情况下,TPS变化不大,说明已经到达处理瓶颈了,增加并发造成线程等待,所以响应时间不断增加,如图:

JMeter轻松实现大数据量AI图像识别接口测试的更多相关文章

  1. 智慧金融时代,大数据和AI如何为业务赋能

    前言:宜信技术人物专访是宜信技术学院推出的系列性专题,我们邀请软件研发行业的优秀技术人,分享自己在软件研发领域的实践经验和前瞻性观点. 第一期专访我们邀请到宜信科技中心AI中台负责人王东老师,从大数据 ...

  2. 大数据和AI怎么与现代教育相结合?

    大数据和AI怎么与现代教育相结合? 比尔·盖茨曾预言,"5年以后,你将可以在网上免费获取世界上最好的课程,而且这些课程比任何一个单独大学提供的课程都要好." 现在看来,虽然并不是每 ...

  3. MySQL数据库如何解决大数据量存储问题

    利用MySQL数据库如何解决大数据量存储问题? 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开 ...

  4. java大数据量调优

    从总体上来看,对于大型网站,比如门户网站,在面对大量用户访问.高并发请求方面,基本的解决方案集中在这样几个环节:1.首先需要解决网络带宽和Web请求的高并发,需要合理的加大服务器和带宽的投入,并且需要 ...

  5. 服务端、实时、大数据、AI计算

    服务端.实时.大数据.AI计算,各种各样的计算,计算机本质是什么,计算机的本质是 利用compute的计算速度为人提供更优的计算结果. 所以实时也好,准实时.离线.AI本质上是两个维度,实时准实时强调 ...

  6. 利用MySQL数据库如何解决大数据量存储问题?

    提问:如何设计或优化千万级别的大表?此外无其他信息,个人觉得这个话题有点范,就只好简单说下该如何做,对于一个存储设计,必须考虑业务特点,收集的信息如下:1.数据的容量:1-3年内会大概多少条数据,每条 ...

  7. MySQL数据库解决大数据量存储问题

    转载自:https://www.cnblogs.com/ryanzheng/p/8334915.html 提问:如何设计或优化千万级别的大表?此外无其他信息,个人觉得这个话题有点范,就只好简单说下该如 ...

  8. 大数据量冲击下Windows网卡异常分析定位

    背景 mqtt的服务端ActiveMQ在windows上,多台PC机客户端不停地向MQ发送消息. 现象 观察MQ自己的日志data/activemq.log里显示,TCP链接皆异常断开.此时尝试从服务 ...

  9. POI3.8解决导出大数据量excel文件时内存溢出的问题

    POI3.8的SXSSF包是XSSF的一个扩展版本,支持流处理,在生成大数据量的电子表格且堆空间有限时使用.SXSSF通过限制内存中可访问的记录行数来实现其低内存利用,当达到限定值时,新一行数据的加入 ...

随机推荐

  1. 79、tensorflow计算一个五层神经网络的正则化损失系数、防止网络过拟合、正则化的思想就是在损失函数中加入刻画模型复杂程度的指标

    ''' Created on Apr 20, 2017 @author: P0079482 ''' import tensorflow as tf #获取一层神经网络边上的权重,并将这个权重的L2正则 ...

  2. Java短路运算符和非短路运算符

    在Java中短路运算符指的是"&&"(与) 和"||"(或) ,非短路运算符指的是"&" 和"|" ...

  3. 网神SecVSS 3600漏洞扫描系统

    网神SecVSS 3600漏洞扫描系统严格按照计算机信息系统安全的国家标准.相关行业标准设计.编写.制造.网神SecVSS 3600漏洞扫描系统可以对不同操作系统下的计算机(在可扫描IP范围内)进行漏 ...

  4. 启动项目时,Mysql的连接问题

    1.com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection ...

  5. 查看mysql慢日志,进行优化

    MySQL 慢查询的相关参数解释:slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭. slow_query_log    :是否开启慢查询日志,1表示开启,0表示关闭. lo ...

  6. 2019 ACM-ICPC 南京 现场赛 H. Prince and Princess

    题意 王子想要娶公主,但是需要完成一个挑战:在一些房间中找出公主在哪. 每个房间有一个人,他们彼此知道谁在哪个房间.可以问他们三种问题: 你是谁? 在某个房间是谁? 公主在哪个房间? 有三类人,一类一 ...

  7. java 并发——CountDownLatch

    java 并发--CountDownLatch 简介 public class CountDownLatch { private final Sync sync; private static fin ...

  8. Spring Cloud配置中心高可用搭建

    本文通过config server连接git仓库来实现配置中心,除了git还可以使用svn或者系统本地目录都行. 引入依赖 <dependencies> <dependency> ...

  9. Dubbo与SpringBoot的结合

    前言 这段时间在接触分布式的内容,因为公司的技术栈是 dubbo ,所以我顺其自然地选择了 dubbo 作为我学习的框架. 看了任务清单,这篇文章应该是在6天前出来的,但是因为实习等等的一些事情耽误了 ...

  10. CSUST 集训队选拔赛题解

    选拔赛的题解,~~~ 题目链接:请点击 A题 素数筛 + 线段树(树状数组) 先用素数筛打表,然后线段树更新,遍历求出值,O(1)查询即可 AC代码: /*num数组 是把记录 数是否存在 存在即为1 ...