• 0
  • 0
分享
  • AI测试技能卷起来!模型工程服务测试的流程和方法总结!——软件测试圈
  • 饼干 2024-08-21 13:42:50 字数 3361 阅读 361 收藏 0

  1、引言

  在上一篇中,我们聊到了《AI测试技能卷起来!目标检测算法测试流程与方法总结》,反响还不错。但是,也有测试同学给我留言:“能不能讲一讲模型工程的测试流程和方法”。这当然没问题了, 因为在整个工程中,算法模型只是其中的一个环节,我们模型测试完成后,需要部署到系统中,这样才能让模型真正的应用于业务中。 

  为了更好的让你们理解模型在系统中的流程,我以我的工作为例(当然,处于职业操守,部分内容进行脱敏),以流程图的形式给大家展示。

1-1.png

  通过上图,大家可以了解到模型的整体架构。

  这里说两点:

  1)数据流:即数据解析,保证数据的质量;

  2)特征库:即数据处理,提取数据特征进行模型训练。

  说到架构,其实模型服务工程的测试和传统测试也有很多相似之处,如:单元测试、集成测试、系统测试、A/B测试等,当然,差异的也有,否则,就没必要说模型工程服务测试了。 

  至于差异点有哪些,别着急,我们进入今天的这篇《模型服务工程测试》。在这里,你会学习到:

  ·模型工程服务测试涉及到的测试流程与方法;

  ·模型工程服务测试与传统测试的异同点;

  2、单元测试

  关于白盒测试,针对大部分的测试同学来说,多多少少都有了解。

  为了让不太了解的测试同学也加深印象,我也唠叨一句:白色测试也叫结构测试或逻辑驱动测试,通过审核代码逻辑设计,按照代码流程测试内部结构,确保代码中的每个分支都能按照预期工作,并返回正确结果。

  在这里(单元测试),模型工程服务测试与传统软件测试基本相同,也需要对代码的内容结构进行测试,主要包含测试点如下:

  1)项目规范检查:在项目中,项目规范检查范围包含:项目架构设计、数据库设计、接口设计、开发规范(代码缩进、注释、变量命名规范、请求方式等),测试同学需要按照技术规范,验证项目(项目代码、接口文档、数据库设计等)是否符合规范。 

  2)静态代码检查:根据业务需求、架构设计等对代码进行检查,提前发现一些隐藏的BUG,如配置错误、设计缺陷、无用代码及分支等。

  3)代码逻辑覆盖检查:在代码检查时要覆盖到每个分支节点,确保代码分支没有风险。

  4)算法高效性分析:由于模型工程服务涉及到大量的数学计算,对性能的要求比传统软件的要求更高,所以,对模型工程来说,需要关注每个算法的高效性,如:缓存、循环优化等。

  5)服务异常处理:对每个节点能触发到的异常进行相应处理,如:断言,抛出异常,返回错误信息,日志记录等,这也就对代码的理解能力要求的更高。

  3、集成测试

  集成测试,在软件测试中必不可少的一个环节,这说的集成测试,更趋近于灰盒测试,而并非有些企业所说的 “集成测试”,因为有些企业把联调测试也称呼为集成测试。

  所以,在这里,我也要强调一下。

  关于联调测试,是在系统测试之后,进行的是整个系统的测试,因为一些大企业一个系统会涉及到多个测试项目组,所以,在部署UAT/灰度环境前,需要进行联调测试,保证整个系统的流是通的,尤其是开发一个新业务,涉及到整个业务系统。

  言归正传, 在集成测试阶段,模型工程服务测试与传统测试基本相同,但是,也有一些差异,具体如下:

  · 接口工程测试:使用接口测试工具,不限于postman、Apifox、SoapUI等,或编写接口测试脚本进行测试,验证实际请求结果与预期是否符合。

  · 接口diff测试:在不同版本或环境下,对比相同接口的返回结果,换句话说,接口diff测试也是对功能接口测试的补充。

  · 数据校验:在数据校验环境,模型工程服务测试与传统测试就有区别了,上面我对数据流和特征库进行了解析,这也是模型工程服务测试中数据校验的重点,这也是既要保证他们之间的调用的正确性和稳定性,同时也要保证数据的质与量。

  4、系统测试

  系统测试,也就是俗称的业务测试、功能测试,即:黑盒测试。这个环节不再需要过多的关注代码逻辑,而更侧重于业务功能的实现,性能和稳定性的表现等方面。

  1)业务功能实现:业务的实现对需求最终表现。在传统测试中,主要体现在用户界面的操作过程,而模型工程服务中,主要模型对外输出结果,如:目标检测模型,主要是对图片/视频中目标人物/物体的识别准确率的体现。

  2)性能表现:说到性能,传统测试考察的维度如:响应时间、并发用户数、吞吐量、吞吐率、资源占用等情况(如果对传统性能测试不太了解,在51Testing中有专门的性能测试学习课堂哦),但是,模型工程服务测试中,由于涉及到特征计算、特征入模等过程,所以整个流程相对来说就稍长一些,而且涉及到的时间也不相同(差异也较大)。如:我企的目标检测模型:模型对图片的识别只需要0.3s~0.5s,但是识别后上传到系统(存储到数据库),时间大约要1s~1.5s中。

  3)稳定性表现:稳定性测试在大企业中都要且必要的一个测试环节,尤其是新上线一个服务,必须要进行稳定性测试,常见如:蓝绿部署、滚动发布等。这在模型工程服务中依然适用。

  ·蓝绿部署:新上线一个服务后,不对旧版本服务进行操作,而是在另一个相同环境进行部署,然后启动新版本服务后,先切流量,待稳定后再停掉旧版本服务。

  · 滚动发布:先在额外一台机器上部署新版本服务,然后停掉一台老版本服务,并在该机器上部署新版本服务,以此类推,直达所有机器上全都部署了新版本。

  5、A/B测试

  关于A/B测试,我想,不管是测试同学,还是开发同学,多多少少都有些了解。

  可能有些企的业务局限性,导致有些测试同学没有参与过或者很少参与过A/B测试。

  为了能让大家对A/B测试有一些了解,以及我们模型工程在A/B测试中应用。

  A/B测试(A/B Testing),又称为分割测试或对比测试,是一种统计学上的假设检验方法,用于在两个或多个版本之间比较哪个版本更优秀,以达到优化网站、应用、电子邮件或其他数字产品的目的。通过同时向不同的用户群组展示略有不同的版本(A版本和B版本),并收集和分析这些用户的行为数据(如点击率、转化率、停留时间等),来确定哪个版本更能吸引用户、提高用户体验或增加业务目标(如销售额、注册量等)的完成率。

  为了更好的便于理解,我这里画一个流程图:

1-2.png

  结合上面这个图,是不是就更好理解A/B测试的流程了。

  那么,上面的A/B测试,是否能应用于模型工程服务测试呢?

  答案当然是可以的。

  因为模型训练完成后,需要嵌入到系统中才能应用。

  所以,如果以系统为载体,A/B测试流程与传统测试是差不多的。

  但是, 也有差异点,如:由于模型在部署后,随着时间的推移,其性能是逐渐衰减的。

  为了保证模型服务的稳定性,就需要进行频繁的版本迭代(这里的版本迭代非业务需求变更和版本缺陷导致)。而此时,A/B测试的必要性就体现出来了。 

  若当前服务使用的是A模型,当根据需求要进行版本迭代,此时模型B会在离线环境训练,然后部署到线上环境,进行A/B测试。

  这里说一下: 在模型B部署到生产环境后,都会进行逐步引流,如:

  北京市场→华北市场→全国市场;

  当然,至于企业是否需要进行A/B测试,还需要根据实际情况来进行。

  只有选择最适合企业的方式,才是最有效的方式。

  6、总结

  在这篇,我详细介绍了模型服务工程测试流程的方法,并探讨了其与传统测试的差异。

  模型服务工程测试包含的测试环节,如:单元测试、集成测试、系统测试和A/B测试。

  而与传统测试相比,模型工程服务测试流程在以下几个方面有所不同:

  1)数据依赖性: 更加依赖数据和数据处理过程,测试过程中需要大量模拟和真实数据。

  2)算法验证: 需要验证和比较不同算法、模型的效果和性能。

  3)动态调整: 更加注重动态测试和持续改进,例如通过A/B测试等在线评估方法进行优化。

  最后,再唠叨一句:

  随之AI的深入各个领域,作为一名测试技人,不仅需要具备传统测试技能, 对模型测试也需要具备一定的能力,这也是当前对测试人的挑战。

  只要不断的学习,我相信,每个人都会掌握模型测试的技能。


作者:Carl_奕然    

来源:http://www.51testing.com/?action-viewnews-itemid-7802158

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1.3 如何转存Swagger的内容上一个小节,我们学习到了如何通过Swagger提供的接口,获取文档中所有的数据信息。我们拿到了所有的数据信息,发现是一个很大的Json报文,里面的结构在上个小节中也基本梳理清楚了。下一步我们就要把核心的,也就是接口测试用例中要用到的数据,转存到一个Excel文件中。一直跟随我学习的童鞋们,会记得我们开发过一批类似的接口测试工具,都是使用Excel来编写测试用例,直接运行生成测试报告。如果我们能把Swagger中的接口信息,自动化的导出成接口工具对应格式的Excel,那么开发人员变更了服务端代码,Swagger文档自动更新,接口测试用例也会自动同步。 ...
            0 0 1463
            分享
          • 据报道,Twitter CEO埃隆·马斯克(Elon Musk)周二表示,得益于激进的成本削减措施,该公司的现金流“有机会”在下一季度转正。  马斯克是在摩根士丹利投资者大会上发表这一言论的。他表示,Twitter在利用其消息服务变现方面的表现之差“令人震惊”。  马斯克表示,该公司已经将2023年的非债务支出从预期的45亿美元削减到15亿美元,主要得益于云服务支出减少了40%并关闭了一个数据中心。此外,Twitter之前还曾裁员数千人。  马斯克还兼任电动汽车公司特斯拉的CEO,他于去年10月斥资440亿美元收购Twitter。他表示,由于在私有化交易中背负债务,该公司还要承担每年约15亿美...
            0 0 928
            分享
          •  前言日常测试过程中,常常需要多种工具来接力完成自己的接口测试任务。 比如说, 使用swagger查看接口文档, 使用mock编造接口数据对前端页面做测试 使用postman测试后端接口, 用Jmeter来做接口自动化测试/性能测试。 那有没有一款软件可以完美集成以上所有的功能? 笔者发现一款叫Apifox的软件,一款完成能完成以上几乎所有软件的功能。官方给出Apifox(www.apifox.cn )的介绍是:接口管理,开发,测试全流程集成工具,软件的定位是Swagger+Mock+Jmeter+Postman。它能通过一套系统,一份数据,一站式完成接口测试全流程,同时能对api文...
            0 0 1358
            分享
          • ChatGPT Plugin 介绍最近,OpenAI 宣布了一个重大的更新: ChatGPT 支持 Plugin 能力。用户在与 ChatGPT 自然语言交互时,可以选择使用插件。通过插件扩展,可以实现让 ChatGPT 实现以下能力:检索实时信息,例如:体育比分、股票价格、最新消息等。检索知识库信息,例如:公司文档、个人笔记等。代表用户执行操作,例如:订机票、订餐等。举具体例子,用户想要使用 ChatGPT 来查询某个城市的酒店信息,只需要安装并允许使用一个酒店搜索的插件,然后就可以通过简单的对话来获取酒店的名称、价格、评分、位置等信息;如果用户想要使用 ChatGPT 来学习某个编程语言,...
            0 0 1440
            分享
          •   正交试验法  正交试验设计法,是从大量的试验点中挑选出适量的、有代表性的点,应用依据迦罗瓦理论导出的“正交表”,合理安排试验的一种科学的试验设计方法。  因子/因素:所有影响试验指标的条件。  水平/状态:而影响试验因子的,叫做因子的状态。  正交表的构成  行数(Runs):正交表中的行的个数,即试验的次数。  因素数(Factors):正交表中列的个数。  水平数(Levels):任何单个因素能够取得的值的最大个数。正交表中的包含的值为从0到数“水平数-1”或从1到“水平数”。  正交表的表示形式  L行数(水平数因素数):  正交表的特点  完成试验要求所需的实验次数少  数据点的分...
            0 0 2364
            分享
      • 51testing软件测试圈微信