智能测试使用手册
页面右上方展示了用户当前所处的工作空间。点击工作空间下拉菜单,菜单中列出了当前用户具有权限的工作空间列表,点击某个工作空间进行切换。
点击左上方的项目下拉菜单,菜单中列出了当前工作空间下的项目列表,点击某个项目进行切换。
系统中的大部分列表均提供了多选及全选功能,当选中多个数据后可以点击【批量处理】按钮进行批量操作。
在所有列表信息页面,系统都会提供查询功能,查询功能一般有单一查询,或同时提供单一查询和高级查询。
列表模式下,在信息列表头上提供了其他相关功能:比如查询、列表信息显示设置等。
在列表信息页的第一列复选框头部,有个向下箭头【V】,点击向下箭头【V】可以看到对于记录的选中提供两种选择数据范围,即对当前页,或对查询到的所有记录。
在列表信息头中,如果表头信息有向下箭头【V】,则表示在当前的列表信息集中,可以根据此信息进行快速筛选查询。
在列表信息头中,如果表头信息有向上下箭头,则表示根据此字段对当前的列表信息集进行倒序和正序排列。系统一般提供多种信息的正序或倒序的排列。
系统对于部分列表信息页面,都支持用户自定义列表显示信息的设置。
在信息列表的操作列,头部有【设置】按钮,可以自定义列表显示数据的字段。
下面以测试计划页面的设置为例,点击【设置】按钮,弹出表头显示字段设置,系统默认显示所有字段。
需要显示的字段移到右边已选字段框中;不需要显示的字段移到左边待选字段框中。
点击【确定】完成设置,系统会返回信息列表页面,此时系统会自动刷新信息列表页,此时按设置的信息进行显示。
点击列表表头列中间的【|】,可左右拖动自定义调整列表的宽度。
页面主要展示【我的待办】、【我的关注】、【我创建的用例】、【我创建的缺陷】模块的统计数据。
展示不同类别的待办数据,如功能用例、测试计划、用例评审、缺陷管理、接口定义、接口用例、接口自动化、性能测试等,点击待办列表中的不同类别,会跳至相应的页面。
展示不同类别的关注,如功能用例、测试计划、用例评审、缺陷管理、接口定义、接口用例、接口自动化、性能测试等,点击关注列表中的不同类别,会跳至相应的页面。
饼图展示各类用例的数量,鼠标悬浮在各类用例上,会显示该类用例的个数。
饼图展示各类缺陷的个数,鼠标悬浮在各类缺陷上,会显示该类缺陷的个数。
可切换到任意菜单,下方列表就显示对应内容。默认【功能用例】,选择当前版本号,点击列表任一数据,会跳转到对应的页面查看详细情况。
在【接口定义】、【接口用例】、【接口自动化】Tab 下可以展示所有【待完成】的接口或者用例列表。
输入项目名称可搜索到项目,选中项目,切换到对应的菜单,下方列表也与之对应。可切换到任意菜单,下方列表就显示对应内容。默认【功能用例】,选择当前版本号,点击列表任一数据,会跳转到对应的页面查看详细情况。
输入项目名称可搜索到项目,选中项目,切换到对应的菜单,下方列表也与之对应。可切换到任意菜单,下方列表就显示对应内容。默认【功能用例】,选择当前版本号,点击列表任一数据,会跳转到对应的页面查看详细情况。
从【接口测试】菜单进入接口测试功能模块,该模块由首页、接口定义、接口自动化、测试报告四部分组成。
首页:展示当前项目的接口数量、接口用例数量、自动化场景数量、场景定时任务数量、接口覆盖度、用例覆盖度等信息,过去 7 天有更新的接口、运行中的定时任务,帮助用户快速当前项目接口测试情况。
接口定义:可用于管理接口、接口用例,并执行调试等测试工作。其中接口定义支持 HTTP、TCP、SQL、DUBBO 协议,导入支持手动录入,也支持导入企业现有的接口测试工具中的接口,如 MeterSphere 格式、Postman 格式、Swagger 格式、HAR 格式、JMeter 格式等。
接口自动化:用于场景级自动化测试工作,能够编排组合多个接口实现一个场景的测试;在场景中支持自由添加接口请求,提供变量提取、响应断言、前后置脚本、逻辑控制器等功能。
测试报告:对接口测试结果进行可视化的美观页面报告展示,支持报告分享、导出方便对测试结果进行归档留存。
接口测试【首页】用于展示现有项目的接口数量、接口用例数量、场景用例数量、场景定时任务数量、过去7天有更新接口、运行中的定时任务信息,帮助用户快速了解当前项目接口测试情况。
接口定义展示当前项目的所有接口数据,包含左侧接口模块树、API 接口列表、接口 CASE 列表、文档四个部分。
点击左上角【HTTP】下拉框,可切换接口协议,目前支持 HTTP、TCP 、SQL 和 DUBBO 四种协议。
接口数据可以分模块管理,可按照企业实际测试项目划分为多级模块进行管理,最多可分八级。
鼠标悬浮在模块上点击【+】创建一级模块。模块支持添加子模块、模糊搜索、删除、重命名操作,选中目录可进行拖拽调整。
鼠标悬浮在【+】可以完成【快速调试】【创建接口】【关闭所有页签】操作。
点击【快捷调试】进入快捷调试页面。填写完整的测试地址和基本请求参数,点击【测试】按钮即可进行接口调试。测试完成点击【另存为新用例】,填写接口用例名称可保存为一个新的接口用例。
鼠标悬浮在【+】,点击如上图【创建接口】弹出创建接口详情页面。创建接口页面填写接口基础信息、请求方式、请求参数、响应内容即可。
参数填写完成点击【确定】按钮即可完成接口定义创建,并跳转到接口展示【编辑详情】页面,可在【API】【TEST】【CASE】【MOCK】菜单下对接口做进一步调整。
在编辑接口【API】页面中可以对接口的基础信息、请求及响应定义、前后置依赖关系进行详细编辑。
点击页面右上角的【五角星图标】,可关注/取消关注该接口定义。若接口有变更会及时提醒关注者。
点击页面右上角的【变更记录】可查看此接口所有的变更记录。可查看具体的变更字段、变更前、变更后的信息。
请求头
请求头:提供请求头变量,点击即可弹出方法列表。点击参数【铅笔图标】还可添加 Mock 数据和 JMeter 方法内置函数。
QUERY参数
QUERY 参数是在接口地址栏中跟在?后面的参数,如 updateapi?id=11;可直接在下方列表输入 QUERY 参数键值对。
点击参数上面的 【设置图标】,可添加参数的其他属性如编码、最大长度、描述等。点击【批量添加】按钮,可以批量添加参数:填写参数键值对点击确定即可解析到参数列表。
REST参数
REST参数是在接口地址栏中被【/】分隔的参数,如 updateapi/{id}。使用方法同上。
请求体
请求体参数支持多种形式:form-data,x-www-form-urlencoded,json,xml,raw,binary。
请求体是 form-data 和 x-www-form-urlencoded 格式时,可以选择参数类型。不同的参数类型,系统会提供 默认属性。
请求体是 json 格式时,可以使用 Json-schema 用于验证json数据格式。
请求参数
请求参数可以在请求模板通过 ${xxx} 引用。
请求体
请求体参数支持 json、xml、raw 三种数据格式。其中在 xml 参数中点击【添加】按钮,支持以表格形式添加参数。
xml 可添加 object、string、array 三种数据类型的参数。点击【保存】按钮保存添加的 xml 参数。
其他设置
在其他设置中可设置 TCP 客户端、连接时间、响应时间等参数。TCPClient 默认提供三种连接方式。
SQL 请求支持配置多个数据源,选择运行环境、数据源,编写sql脚本(sql脚本支持传递变量${变量名}
),查询结果可以【按结果存储】【按列存储】两种方式。
按结果存储:是将返回结果所有的字段存储到一个变量中去,如果需要使用其中的某个字段则需要对变量进行解析,里面的实际数据是集合嵌套集合。每一行数据都是以 <字段名>:<字段值>( 即key :value)的格式存到map中的,而整个返回数据就是以一个大的map去存储每一行的数据的map ,最后得到一个结果集合,如果需要其中的数据,需要通过 beanshell 或 python 脚本去解析。
按列存储:直接指定返回字段的结果值,列数要和 SQL 语句中查询字段返回结果的列数相同。同时可以用逗号作为占位符代替列名,只写出 要提取的列名即可,引用时 $
Interface
点击【Get Providers List】按钮,可从【Registry Center】中获取服务列表。可在字段 Interfaces 下拉列表中选择需要测试的接口及方法,根据该方法的定义传入所需的参数。
Config Center
可在【Config Center】中填写配置超时时间、用户名、密码等相关基础信息。
Registry Center
可在【Registry Center】页面中选择协议、填写连接信息等。
Consumer & Service
可在【Consumer & Service】填写 Consumer 和 Service 信息。
Args
可在【Args】中添加请求相关参数。
Attachment Args
可在【Attachment Args】中设置其他键值对参数。
接口定义支持设置接口的前后置依赖关系。点击【添加】按钮,可以添加前置接口、后置接口依赖。
支持对接口定义的执行、编辑、删除、复制操作点击更多操作【...】可以 查看引用、查看CASE。
在【TEST】页面中可以选择运行环境调试接口,同时可以添加前后置脚本、前后置SQL、断言、提取参数等子步骤。
接口请求体为 json 格式可开启 【JSON-SCHEMA】模式,点击【生成测试数据】会生成随机参数值 ,用于快速传参测试。
如需定制生成规则可点击【设置】图标,对枚举值生成规则进行设置。
快速生成数据规则在【高级设置】页面,可以设置默认值、枚举值、最大最小长度、正则表达、描述相关信息,规则设置好后点击【生成测试数据】生效。
如有设置了默认值,则生成测试数据是默认值;如设置枚举值,生成的数据是枚举值其中一个,枚举值可以换行设置多个。
选择运行环境,点击 【测试】按钮即可调试接口。在响应内容可以看到接口的请求响应体、响应头、控制台、断言、提取、请求内容信息。
前后置脚本、前后置SQL、断言及参数提取等子步骤的详情说明请参考。
点击【测试】按钮旁边的向下箭头【V】,还提供了加载用例、另存为新用例、更新接口、另存为新接口快捷功能。
在 CASE 页面中展示当前接口下的所有接口用例列表。
支持对接口用例的 编辑 执行 复制 删除鼠标悬浮【…】可展示更多功能、查看引用、执行历史、创建性能测试操作。
选择多条接口用例,点击【…】,可对多个接口用例进行批量删除、批量编辑、批量执行、批量同步操作。
点击 【+添加】按钮,可使用当前接口定义的参数信息创建新的接口用例。
普通搜索支持通过接口用例的 ID 、名称、标签进行模糊搜索。
高级搜索支持按 ID 、名称、用例等级、标签、执行结果、更新时间、创建时间、创建人、关注人、路径搜索。
在 MOCK 页面中展示当前接口定义下的 MOCK 服务。在接口编辑页面可展示此接口的 Mock 信息,Mock 默认地址是 MeterSphere 系统地址+模块 ID + 接口地址,一个接口定义可以设置多个 Mock 服务。
MeterSphere 提供的 Mock 功能可以根据用户输入的请求参数、返回数据生成Mock接口,这些接口会自动生成模拟数据,以覆盖用户的模拟测试需求。
Mock 期望是根据设置的请求触发条件来进行过滤,然后返回期望的数据。在【MOCK】页面点击【+添加】按钮添加 Mock 服务。
设置 Mock 服务触发条件。可以在请求头、QUERY参数、REST参数、请求体设置触发条件;在响应内容中设置自定义响应头、响应体、状态码、响应延迟时间相关信息
Mock 服务触发条件设置规则匹配及逻辑判断:
请求参数设置规则匹配,可以根据参数设定的值、长度、正则表达式 Mock 出相应的请求参数,同时参数与参数之间新增了逻辑判断(AND/OR),以提升触发条件的灵活性。
TCP Mock 服务需在【项目设置-应用管理-接口测试】中开启 TCP Mock 服务。
支持对 Mock 数据进行执行、编辑、复制 、删除操作。
接口定义列表【更多操作-导入】,支持多种类型接口文档的导入,包括:MeterSphere、Postman、Swagger、HAR、JMX类型数据。
支持 Swagger Json 文件的离线导入,同时也支持使用 Swagger URL 进行在线同步,导入规则请看导入页面下方的提示。注意: 若导入的接口为新建接口且没有用例,则默认为接口创建一个用例。
接口定义列表【更多操作-导出】支持导出 MeterSphere 和 Swagger3.0 格式的接口文件导出。选择要导出的接口,点击 【更多操作-导出】选择要导出的文件格式,系统自动完成接口导出。
选择多条 API 数据点击【…】,可对多个接口进行批量操作。批量删除、批量编辑、批量移动、批量复制、复制版本数据、生成依赖关系
接口定义列表支持普通搜索接口定义的 ID、名称、标签、路径 进行模糊搜索。高级搜索支持 ID 、名称、请求类型、路径、状态、标签、更新事件、创建事件、责任人、所属模块、关注人进行搜索。
场景是接口自动化中的基本管理单元,由一组用例和接口组装而成。如用户管理场景,包含用户注册、用户登陆、用户修改、用户注销、用户销户等用例或者接口。
MeterSphere 支持导入接口通过拖拽的方式对上述场景进行用例/接口的编排设计。在接口自动化脚本中支持添加各种协议的请求、断言、自定义脚本、逻辑控制器等组件完成一个接口测试场景,并且支持定时、API调用、Jenkins调用方式触发自动化执行任务。
场景列表的快捷按钮有【执行】【编辑】【复制】【删除】点击更多可操作【查看引用】【定时任务】【创建性能测试】。
选择一个模块,点击【更多操作-创建场景】按钮,可仅填写接口基本信息,在该模块下快速创建接口。
在场景列表中点击指定场景操作列中的【编辑】按钮,进入场景详情编辑页面。
在该页面中可对场景的基础信息,场景的具体步骤等进行进一步编辑,编辑完成后点击右上角的保存按钮进行保存。
在添加场景步骤前可以添加整个场景公用的变量参数,支持多种不同类型,在场景中的步骤均可引用这些参数。
参数说明
【常量】
变量名
: 该变量的变量名,可以在场景步骤中通过 ${varName} 的形式引用该变量。描述
:针对该变量的详细说明。值
:该变量的值,可以使用 JMeter 中的内置函数。varName
,变量值为 varValue
的变量,在后续步骤中通过 ${varName}
引用得到 varValue
。【列表】
变量名
: 该变量的变量名,可以在场景步骤中通过 ${varName} 的形式引用该变量。描述
:针对该变量的详细说明。值
:以逗号 ,
分隔的值列表,可以在步骤中通过 ${varName_n} 的形式引用指定位置的值,其中 n 代表要引用的值的位置,从 1 开始。listVar
,变量值为 value1,value2,value3
的变量,在后续步骤中通过 ${listVar_1}
引用得到 value1
,通过 ${listVar_2}
引用得到 value2
。【CSV】
变量名
: CSV 文件的名称,仅起到标记作用,无法在场景步骤中通过 ${varName} 的形式引用该变量。
描述
:针对该变量的详细说明。
添加文件
:CSV 文件选择,从本地上传 CSV 文件。
Encoding
:CSV 文件的编码格式。
分隔符
:CSV 文件中的数据分隔符,默认为 ,
。
举例说明:上传 CSV 中的内容如下所示,第一列为变量名列,可以在场景的后续步骤中通过 ${name}
,${age}
分别引用第一列和第二列的值。当在循环控制器外引用变量时,变量值为第一个数据值,${name}=Andy
,${age}=20
;当在循环控制器内引用变量时,每迭代一次都会取下一行的数据值。
name,age
Andy,20
Tom,22
【计数器】
变量名
: 该变量的变量名,可以在场景步骤中通过 ${varName} 的形式引用该变量。描述
:针对该变量的详细说明。开始
:计数器变量的起始值,即最小值。结束
:计数器变量的结束值,即最大值。增量
:计数器变量每次增加的增量值,默认为 1。counter1
的计数器变量,开始值为 1
,结束值为 100
,增量为 1
。当在循环控制器外引用变量时,变量值不会递增,一直为当前值;当在循环控制器内引用变量时,每迭代一次变量值都会增加一次。【随机数】
变量名
: 该变量的变量名,可以在场景步骤中通过 ${varName} 的形式引用该变量。描述
:针对该变量的详细说明。最小值
:随机范围的最小值。最大值
:随机范围的最大值。输出格式
:随机数的输出格式,例如设定最小值 1
,最大值 100
,输出格式为 000
,则变量值为 013
,074
这样的格式。random1
,最小值 1
,最大值 100
,输出格式为 000
的变量。当在循环控制器外引用变量时,多次引用变量值不会重新随机,一直为当前值;当在循环控制器内引用变量时,每迭代一次变量值都会重新随机一次。添加一级步骤
在场景详情编辑页面,点击页面右下方的【+】按钮,可在当前场景中添加步骤。
点击步骤条目的空白处,可以展开查看步骤详情。
添加子步骤
在步骤的请求参数详情界面,可选择添加【前置操作】、【后置操作】、【断言规则】子步骤。
调整步骤顺序及层级
选中某个步骤后长按鼠标左键可以对步骤进行拖拽,拖拽支持调整步骤顺序及层级,通过拖拽可将其变为一级步骤或某个步骤的子步骤。
针对步骤的其他操作
调针对场景的其他操作
场景及场景中的步骤创建完成后,点击【调试】可实时查看场景内各个步骤执行状态及响应结果信息,只点击【调试】产生的结果仅临时存在,无法保存为测试报告供后续查看。
点击【调试】按钮下拉图标,再点击生成测试报告。弹出执行结果页面,当场景执行完成后可查看到详细的执行报告。
在场景列表中点击指定场景操作列中的【执行】按钮,弹出执行结果页面,当场景执行完成后可查看到详细的执行结果。
在场景列表中选中多个场景后点击批量操作按钮中的【批量执行】,所有用例执行完成后可进入【测试报告】页面查看执行结果。
在场景列表中选中多个场景后点击批量操作按钮中的【批量编辑】,支持批量编辑【用例等级、状态、责任人、运行环境、标签】四个属性。
在场景列表中选中多个场景后点击批量操作按钮中的【批量移动】,支持将场景到移动其他模块位置。
在场景列表中选中多个场景后点击批量操作按钮中的【批量复制】,支持复制多个场景。
在场景列表中选中多个场景后点击批量操作按钮中的【批量删除】,支持删除多个场景。
在场景列表中选中多个场景后点击批量操作按钮中的【批量添加测试计划】,支持将多个场景添加到测试计划。
场景列表页点击右侧【...】, 选择定时任务。弹出定时任务配置页面,定时任务可以配置自动生成,能看到近 5 次运行结果,支持选择运行资源池。
场景列表支持导出【MeterSphere 格式】和【JMETER 格式】 两种格式。
场景列表支持导入【MeterSphere】、【Postman】、【JMeter】、【HAR】四种格式,场景导入支持【覆盖】和【不覆盖】两种模式。
接口测试报告是接口测试用例、场景执行的结果展示。在测试报告中可以查看场景及用例执行完成的详细信息,包含接口运行环境、运行资源池、接口成功失败数据展示及控制台日志。
在测试报告列表中,支持查看用例、场景报告。点击指定测试报告操作列中的【报告详情】按钮,进入报告详情页面。在该页面中可以查看该报告的详细内容,并支持重命名、导出等操作。
在测试报告详情页面,点击右上角【分享报告】生成一个有实效的报告分享链接。点击 【导出报告】按钮将报告导出为 PDF 格式。
在测试报告列表中点击指定测试报告操作列中的【删除】按钮删除报告。
前置脚本可以添加为请求的子步骤,在请求发送前执行,可以用在修改请求内容、初始化请求需要的参数值等场景。
目前 MeterSphere 支持以下几种语言的前置脚本:
在前置脚本中可以直接引用JMeter 预定义对象,例如:
- log
:用于在脚本执行过程中打印日志
//打印 `Hello World!` 到 info 日志中
log.info("Hello World!");
- Label
:前置脚本所属请求的请求名称
- SampleResult
:当前请求请求结果 SamplerResult 的指针
//设置请求结果成功或失败
SampleResult.setSuccessful(true/false);
//设置请求返回码
SampleResult.setResponseCode("code");
//设置请求返回消息
SampleResult.setResponseMessage("message");
- sampler
:当前请求 sampler的指针
//获取当前请求名称
sampler.getName();
- vars
:JMeterVariables,用于操作变量
//获取变量 VAR1 的值
vars.get("VAR1");
//设置变量 VAR2 的值为 value
vars.put("VAR2","value");
//移除变量 VAR3
vars.remove("VAR3");
【注意】 不同脚本语言语法不同,以上示例仅针对 BeanShell 或 Groovy。
在接口 CASE 编辑页面,操作 Tab 页前置操作菜单:提供了多种不同类型和范围的标准代码模板,同时还支持用户自定义代码模板。代码模版分为:API测试、自定义变量、项目环境、自定义代码片段、异常处理。
【从API定义导入】:API定义导入可以直接导入 API / CASE 自动生成脚本。
点击【API定义导入】按钮,从接口列表 API/ CASE 选择目标数据点击【确定】会在前置脚本中默认生成 beanshell 脚本。脚本语言可切换,默认支持 beanshell 、python2 、groovy 、javascript 语言。
在【自定义变量】方法列表,选择需要的自定义变量方法可自动生成获取变量的脚本。包括获取响应头、获取响应码、获取响应等脚本,以获取接口调试结果中的响应头、响应码、响应结果等信息。
选择【项目环境】设置环境参数,自动生成设置环境变量方法填写对应方法键值对即可试用。
vars.put(${__metersphere_env_id}+"key","value");
// 将值存储为环境变量,可在【环境-通用设置】处看到值。当前环境下的所有接口使用。
vars.put("key","value")
// 将值存储为场景变量
选择【自定义代码】插入代码片段,选择在【项目管理-自定义代码片段】定义好的自定义代码片段,可实现复用脚本优化测试管理办法。
选择【异常处理】终止测试,可自动生成 终止测试线程的脚本。设置终止测试异常条件,接口或场景执行过程中匹配到终止条件则终止该进程。
后置脚本与前置脚本类似,可以添加为请求的子步骤,在请求发送后执行,可以用于处理响应结果,从中提取变量等场景。
在请求发送之前执行 SQL 脚本。前置操作下拉选择 前置SQL,配置 运行环境及 目标数据源,可直接在 SQL脚本中编写 SQL 语句,返回的接口支持存储结果、按列存储,支持在 SQL脚本中设置变量传参。
如图所示查询,用户【按列存储】查询 id
和 name
,通过${name_n}
进行引用,n为行数,${name_1}
为 name 列的第一行值。
断言的主要功能是通过验证响应报文是否满足需求规约来确认接口运行是否正确。 目前 MeterSphere 支持以下几种形式的断言规则:
.png)
文本断言即对响应对象按文本方式跟进指定判断条件进行判断。
Response Code
,Response Headers
,Response Data
。包含
,不包含
,等于
,以...开始
,以...结束
。正则断言适用于响应内容不是 JSON、XML、HTML 等这样的标准且常见的结构化文本的请求进行断言操作。
Response Code
,Response Headers
,Response Data
。示例
请求的响应体:
id="ddc86657-d402-4c10-b458-2ba2e4604cef"&name="myorg"&description="test org"
断言需求:判断响应体中包含 name="任意文本"
。
断言配置:
Response Data
name=".*?"
JSONPath 断言适用于响应内容是 JSON 格式进行断言。
XPath 断言适用于对响应内容是 XML、HTML 等格式的请求进行断言。
示例
请求的响应体:
<root xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
<employees>
<employee id="1">Johnny Dapp</employee>
<employee id="2">Al Pacino</employee>
<employee id="3">Robert De Niro</employee>
<employee id="4">Kevin Spacey</employee>
<employee id="5">Denzel Washington</employee>
</employees>
<foo:companies>
<foo:company id="6">Tata Consultancy Services</foo:company>
<foo:company id="7">Wipro</foo:company>
<foo:company id="8">Infosys</foo:company>
<foo:company id="9">Microsoft</foo:company>
<foo:company id="10">IBM</foo:company>
<foo:company id="11">Apple</foo:company>
<foo:company id="12">Oracle</foo:company>
</foo:companies>
</root>
断言需求:判断响应体中的 id 为 10 的公司名称为 IBM
断言配置:
- XPath 表达式://*[local-name()='company' and @id="10"]/text()="IBM"
响应时间断言适用于对响应时间有特定要求时的请求进行断言操作。
文档结构校验断言适用于响应结果为XML/JSON格式的请求进行断言操作。
导入文档校验: 点击【导入】可导入需断言 Json/xml 数据,自动生成文档结构校验元素表格。可以自定义设置 校验规则。
跟随 API 定义:是 API 响应体设置返回值一致,勾选【跟随API定义】可以自动生成内容校验。
当常规断言无法满足需求时,可以选择脚本断言,即选择合适的语言编写脚本来对结果进行判断。
BeanShell
、Groovy
、Python
、javascript
脚本语言。除了在之前已经介绍过的变量外,脚本断言中的脚本还额外提供了断言结果对象AssertionResult
,通过 AssertionResult.setFailure(true)
方法设置断言是否成功,通过 AssertionResult.setFailureMessage("message")
方法设置断言失败提示信息。提取参数主要用于从请求响应中提取特定返回值并存储到变量中,便于在后续的步骤中引用该返回值。
MeterSphere已支持的提取参数方式包括:
正则提取适用于请求非 JSON、XML、HTML 标准且常见的结构化文本的响应内容。
Body
,Request Headers
,Response Headers
,URL
,Response Code
,Response Message
${varName}
形式引用到,如果选择了 【匹配多个】可以通过 ${varName_matchNr}
获取到匹配的总个数,通过 ${varName_n}
依次获取到每个匹配值。请求的响应体:
id="ddc86657-d402-4c10-b458-2ba2e4604cef"&name="myorg"&description="test org"
提取需求1:响应体中 name
字段的值。
提取配置:
Body
name
name="(.*?)"
JSONPath 提取适用于响应内容是 JSON 格式的响应内容的处理,可以方便地通过 JSONPath 表达式定位到特定字段进行提取。
${varName}
形式引用到,如果选择了【匹配多个】,可以通过 ${varName_matchNr}
获取到匹配的总个数,通过 ${varName_n}
依次获取到每个匹配值。请求的响应体:
{
"success": true,
"message": null,
"data": {
"id": "ddc86657-d402-4c10-b458-2ba2e4604cef",
"name": "myorg",
"description": "form api",
"createTime": 1611154807818,
"updateTime": 1611154807818
}
}
提取需求:提取响应体 data
中的 name
字段并存储在 name
变量中。
提取配置:
XPath 提取适用于处理 XML、HTML 等格式的响应内容,可以方便地通过 XPath 表达式定位到特定字段进行提取。
${varName}
形式引用到,如果选择了【匹配多个】,可以通过 ${varName_matchNr}
获取到匹配的总个数,通过 ${varName_n}
依次获取到每个匹配值。示例
请求的响应体:
<root xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
<employees>
<employee id="1">Johnny Dapp</employee>
<employee id="2">Al Pacino</employee>
<employee id="3">Robert De Niro</employee>
<employee id="4">Kevin Spacey</employee>
<employee id="5">Denzel Washington</employee>
</employees>
<foo:companies>
<foo:company id="6">Tata Consultancy Services</foo:company>
<foo:company id="7">Wipro</foo:company>
<foo:company id="8">Infosys</foo:company>
<foo:company id="9">Microsoft</foo:company>
<foo:company id="10">IBM</foo:company>
<foo:company id="11">Apple</foo:company>
<foo:company id="12">Oracle</foo:company>
</foo:companies>
</root>
提取需求:提取响应体中的 id
为 3 的员工的姓名,即上述响应中的 Robert De Niro
,并存储在 employeeName
变量中。
提取配置:
通过接口列表导入功能,可以直接添加接口定义中已维护好的接口或用例,减少重复工作。
接口自动化场景右下角菜单【+】选择 【接口列表导入】,从接口列表可以选择 API 里面的数据,使用方式支持 【复制】模式。
【复制】方式导入的用例,当原用例发生变化时,场景中导入的用例不会改变。
接口自动化场景右下角菜单【+】选择【接口列表导入】,从接口列表可以选择 CASE 里面的数据,使用方式支持 【复制】、【引用】两种模式。
除了导入已有定义的接口或用例,还可以通过自定义请求的方式增加请求,目前支持 HTTP、TCP、DUBBO、SQL 等不同类型。
自定义脚本与前后置脚本使用方式类似,但是可以独立添加,不需要依赖于某个已有请求作为其子步骤。
用户可以维护一些基础、通用场景,通过场景导入功能,可以直接将已有的场景添加到当前场景中,减少重复工作,提高场景的复用性。
当条件控制器中配置的条件满足时,条件控制器下的子步骤才会执行,否则子步骤会被跳过。
通过使用循环控制器,可以重复执行循环控制器下的子步骤。
次数循环支持自定义设置次数、间隔等方式进行循环控制。
ForEach 循环一般配合列表变量使用,例如存在 ID_1
,ID_2
,ID_3
形式的一组变量时,可以通过 ForEach 循环使用其中每个 ID 发送特定请求。
While 循环更为灵活,当配置的条件满足时循环会一直进行。
当某个步骤执行后需要等待一段时间时,可使用等待控制器进行控制。当作为步骤添加时,与之同级的所有步骤均会等待若干时间;作为某个步骤的子步骤添加时,该步骤将等待若干时间后再执行。
事务控制器将一组请求当成一个事务进行处理,比如用户一个动作包含很多个请求,这部分请求就都可以放在一个事务控制器下,当成一个事务,常用于性能测试。
默认在【项目信息】页面,该页面分为左右两部分,左边是项目基本信息;右边是项目基本操作功能,此功能在页面顶部也有显示。
点击【项目成员】菜单,即可查看当前有项目角色的成员。
点击页面左上角【添加成员】,可根据用户 ID 和用户邮箱搜索需要添加的用户,可选择用户组,点击【确定】按钮完成项目成员添加。
添加完成后可在成员列表中查看到添加的成员,在成员的操作列中可点击【编辑】和【删除】进行成员修改和成员删除操作。
新增用户组:点击【创建用户组】,新增当前项目的用户组信息。
设置用户组权限:点击【设置权限】为用户组进行权限设置
设置用户组成员:在用户组列表信息成员处,点击信息列里的【数字】为用户组进行成员设置。
显示当前项目的所有环境信息,同时可以维护项目环境信息、导入和导出环境信息。
创建环境:点击页面列表信息左上角的【创建环境】,可新增此工作空间下任意项目的测试环境。
参数说明
【选择项目】:指定环境所属的项目,此项目是当前工作空间下,有权限的项目列表。
【环境名称】:为新创建的环境命名。
【通用配置】:此处设置的变量是环境变量,可单个添加和批量添加。IP 和域名映射关系设置以及链接超时、响应超时设置。
【HTTP配置】:此处可配置环境地址以及启用条件,也可设置请求头。
【数据库配置】:配置数据库的数据驱动以及连接信息等,目前支持 MYSQL、Oracle、SQLServer、Postgre数据库
【TCP 配置】:配置连接 TCP 请求的相关信息
【证书配置】:可在此配置相关的证书信息
【全局前置脚本】:全局前置脚本可分为【单个请求步骤前执行】和【所有场景步骤前执行】
【全局后置脚本】:全局后置脚本可分为【单个请求步骤后执行】和【所有场景步骤后执行】
【全局认证配置】:可配置认证方式和加密等信息
【全局断言】:可启用误报设置和选择多种类型方式进行断言
【导入】、【导出】、【编辑】、【复制】、【删除】可以对环境详细功能操作。
可上传测试所需的 JAR 包、脚本、相关文件,在项目级别统一管理。
模块管理:新建模块时,选择【模块】,可对模块目录进行重命名、新增、删除等操作
上传文件:可上传 JAR、CSV、TXT、JMX、XLSX 等多种格式的文件,上传的 JAR 可在接口前后置脚本中进行使用
查看文件:点击查看按钮,可查看该文件的详细信息,也可在该页面增加文件的描述
文件下载:可点击列表后面下载按钮进行文件下载,也可在文件查看页面进行文件下载
文件删除:可点击列表后面删除按钮进行文件删除,也可在文件查看页面进行文件删除
系统支持用户自定义【项目级别】的【模板字段】、【用例模板】、【缺陷模板】、【接口模板】。
在自定义模板前(用例&缺陷),需要先自定义模板中字段的基本属性。点击【项目设置】-【更多选项】-【模板管理】-【模板字段】,即可查看当前工作空间中的所有模板字段列表。
创建字段:点击页面左上角【创建字段】,设置字段的基本信息:名称、备注、使用场景、字段类型等基本信息,点击【确定】完成模板字段添加。
个别字段说明
【使用场景】:设置定义的字段使用于具体的模板中。
【字段类型】:系统提供多种字段类型可供选择,根据不同字段类型,系统自动控制字段的显示、设置和属性等。字段支持的类型有输入框、文本框、下来选择框(单选&多选)、日期时间器、数值等等类型。
维护字段:创建完成后可在模板字段列表中查看到添加的模板字段,在自定义字段信息中可点击【编辑】、【复制】和【删除】按钮进行模板字段修改、复制和删除操作。
用例模板即当前项目下都可使用的测试用例模板,并且可对用例模板添加、修改、复制及移除的操作。点击页面【项目设置】-【更多选项】-【模版管理】-【用例模版】,即可查看当前项目中的所有用例模板列表。
创建模版:点击页面左上角【创建模板】,创建新的用例模板,设置用例基本信息、模板设置明细信息等,点击【保存】完成用例模板添加。如果模板添加的字段信息不存在,可以在【项目设置】-【更多选项】-【模版管理】-【模版字段】中进行创建,然后在此引用即可。
维护模版:创建完成后可在用例模板列表中查看到添加的用例模板,在用例模板信息中可点击【编辑】、【复制】和【删除】按钮进行用例模板修改、复制和删除操作。
引用模版:创建用例模板后,需要在项目中使用创建的模板,可在【系统设置】-【项目管理】-【编辑】页面,选择要使用的用例模板
在【模版管理】-【缺陷模版】,会显示当前项目下的缺陷模版列表,支持查询、编辑、复制、删除等操作。
创建缺陷模版:点击页面左上角【创建缺陷模板】新建缺陷模板,设置用例基本信息、模板设置明细信息等,点击【保存】完成项目缺陷模板添加。如果模板添加字段信息不存在,可以在【项目设置】-【更多选项】-【模版管理】-【模版字段】中进行创建,然后在此引用即可。
维护字段:创建完成后可在缺陷模板列表中查看到添加的模板,在缺陷模板信息中可点击【编辑】、【复制】和【删除】按钮进行缺陷模板修改、复制和删除等操作。
引用模版:创建缺陷模板后,需要在项目中使用创建的模板,可在【系统设置】-【项目管理】-【编辑】页面,选择要使用的缺陷模板
接口测试支持自定义接口模板,支持查询、编辑、复制、删除等操作。
创建接口模版:点击页面左上角【创建模板】新建接口陷模板,填写基本信息、模板设置等信息,添加字段或设置自定义字段后,点击【保存】即可。
维护模版:创建完成后可在接口模板列表中查看到添加的接口模板,在接口模板信息中可对模板进行【编辑】、【复制】和【删除】等操作。
引用模版:创建接口模板后,需要在项目中使用创建的模板,可在【系统设置】-【项目管理】-【编辑】页面,选择要使用的接口模板
针对系统的每个功能都支持用户根据需要进行【项目级别】的任务通知设置。点击【项目管理】-【更多选项】-【消息设置】即可进入消息设置页面,并且系统支持接收人员按角色或指定具体人员;同时支持站内通知和站外通知多种通知方式等功能。
显示登录用户当前所处的【项目】的测试资源日志信息,并且可以使用高级查询来快速查找相关日志系统。
点击【项目设置】-【更多选项】-【应用管理】可以对 MeterSphere 的【测试跟踪】、【接口测试】、【UI测试】、【性能测试】等应用进行高级设置。
测试跟踪设置:维护【测试跟踪】下的一些高级应用配置管理,包含 【启动公共用例库】、【测试用例自定义ID】、【定时清理测试计划报告】、【报告分享链接】配置。
接口测试设置:维护【接口测试】下的一些高级应用配置管理,包含【接口定义URL可重复】、【场景自定义ID】、【TCP Mock Port】以及【定时清理接口测试报告】、【报告分享链接】以及【接口定义快捷添加按钮】等配置。
UI测试设置:维护【UI测试】下的一些高级应用配置管理,包含【定时清理UI测试报告】、【报告分享链接】配置。
性能测试设置:维护【性能测试】下的一些高级应用配置管理,包含【定时清理性能测试报告】、【报告分享链接】配置。
在接口自动化中经常需要添加前后置脚本及自定义脚本,通过新增的自定义代码片段功能,用户可以将常用的脚本保存下来,在需要使用的地方直接添加即可。
选择【项目设置】-【更多选项】-【自定义代码片段】。点击【创建代码片段】,可以把常用的脚本代码保存在这里。
点击【测试】可以校验此代码执行的情况,点击【确定】创建的代码片段保存在代码列表中。
同时系统提供相关的管理功能:【编辑】、【复制】和【删除】等,对代码片段进行管理。
代码片段维护好后,在【接口、场景测试用例】或者【环境】的【前置脚本、后置脚本】中,选择【插入自定义代码片段】可以直接引用此代码,以【接口测试用例】为例。