云服务器内容精选

  • 背景信息 关键字驱动测试是一种测试自动化的技术,通过提供一组称为关键字的“构建块”创建自动化测试用例。关键字驱动测试可用于组件测试、系统测试等不同的测试级别,其优势体现在易用性、可理解性、可维护性、测试信息的重用、支持测试自动化、节约潜在的成本和进度等方面。 在设计测试用例时,经常会遇到有一些相同的前置步骤或者测试逻辑。如果每一个测试用例中都编写这些步骤,重复工作量很大,并且难以维护。测试关键字可以帮助复用这些测试步骤。 关键字库将接口关键字、组合关键字、系统关键字、自定义关键字进行统一管理,打造一站式关键字管理能力,在用例脚本设计时用户体验保持一致。 接口关键字中定义单个接口的请求,可以通过导入Swagger文件、保存自定义URL请求等方式生成。 组合关键字用于将多个步骤封装常用测试逻辑,可以被测试用例调用实现逻辑复用。 系统关键字涵盖认证、协议、中间件、数据库四大类别,覆盖身份认证、复杂协议、数据处理、数据预置、数据验证、接口集成等丰富场景。 自定义关键字具备高度的扩展性,用户可以在本地编写代码完成自定义关键字的开发,满足高阶用户的复杂场景测试诉求。
  • 导读 接口自动化测试将常见的一些操作封装成关键字供用户使用,用于提升编写接口测试用例的效率,请参考表1。 系统关键字高阶特性为您提供65天试用期,后续需要开通测试计划专业版套餐或CodeArts专业版以上套餐来延续您的高阶体验。 表1 系统关键字一览表 分类 关键字集 认证类 认证类—GetIAMToken 认证类—OAuth2ForOneAccess 数据库操作类 数据库类—MySQLQuery 数据库类—MySQLUpdate 数据库类—MySQLInsert 数据库类—MySQLDelete 数据库类—OpenGaussQuery 数据库类—OpenGaussUpdate 数据库类—OpenGaussInsert 数据库类—OpenGaussDelete 数据库类—PostgreSQLQuery 数据库类—PostgreSQLUpdate 数据库类—PostgreSQLInsert 数据库类—PostgreSQLDelete 数据库类—MongoDBQuery 数据库类—MongoDBInsert 数据库类—MongoDBUpdate 数据库类—MongoDBDelete 中间件类 中间件类—RedisGet 中间件类—RedisSet 中间件类—OBSWrite 中间件类—OBSDelete 中间件类—OBSQuery 中间件类—KafkaProducer 中间件类—KafkaConsumer 协议类 协议类—TCP 协议类—UDP 协议类—WSConnect 协议类—WSRequest 协议类—WSWriteOnly 协议类—WSReadOnly 协议类—WSDisConnect 协议类—MQTTConnect 协议类—MQTTDisconnect 协议类—MQTTPublish 协议类—MQTTSubscribe 协议类—DubboClient 父主题: 接口自动化用例系统关键字
  • 检查点说明 测试检查点又名断言,通过检查接口响应是否符合预期,判定系统是否满足预期。 在接口自动化用例详情中,测试步骤的“检查点”页签中可以定义测试检查点。 检查点内容包括属性、比较符和目标值定义。 字段 说明 重试次数 如果检查点失败,重新执行该测试步骤的次数,重试次数范围:0~5的正整数。 重试间隔 如果检查点失败,每次重试的间隔时长,单位为ms,重试间隔范围:0~10,000的正整数。 来源 被检测字段的来源,如响应体(JSON)、响应头、响应码、变量。 属性 在属性中,支持输入$调用全局变量、局部变量、内置函数。 若来源是响应码,属性可为空。详细介绍请参见响应码检查。 若来源是响应头,属性为响应头中字段的名称。详细介绍请参见响应头检查。 若来源是响应体(JSON),属性有两种填写方法: 普通提取表达式(非“$”开头),例如“item.name”。 取字段中的值,支持嵌套取值。详细介绍请参见响应体(JSON)检查。 从响应体中提取数组时,下标可以是数字,也可以是“key:value”表达式,详细介绍请参见示例:根据给定的key:value从响应体中获取字符串。 JsonPath表达式(“$.”或“$[”开头),例如“$.store.book[0].title”。 详细介绍请参见示例:根据JsonPath从响应体中获取数据。 若来源是变量,属性为全局变量,局部变量,响应提取后的变量。详细介绍请参见变量检查。 高级提取类型 可选项,使用高级提取类型,辅助提取检查点信息,若选择不涉及,则视为不使用额外的方式匹配。 目前有两种方式: 字符串提取,也就是字符串的截取。 正则表达式,即使用正则方式对来源字符串进行过滤。 高级提取类型优先使用字符串提取功能,若不能满足需求可考虑使用正则表达式。 类型值 高级提取类型中所需的参数。 比较符 支持数字、字符串、JSON对象比较、类型比较等多种比较符,详细介绍请参见比较符说明。 目标值 检查点期望值。目标值支持使用内置参数,请参考内置参数了解如何使用内置参数。
  • 响应体(JSON)检查 检查响应体(JSON)中对象字段的值。例如: 响应体结构如下: 检查响应体对象中字段名为“status”的值,检查点配置如下: 检查响应体(JSON)中某个数组的对象的字段值(数组条件采用下标确定对象,下标从0开始)。例如: 响应体结构如下: 检查响应体“result”数组的第1个元素对象字段名为“userId”的值,检查点配置如下: 检查响应体(JSON)中某个数组的对象的字段值(数组条件采用模糊匹配功能确定对象)。例如: 响应体结构如下: 检查响应体“result”数组下“name”是“啤酒”的所有对象取第1个之后获取id的值,检查点配置如下: 当获取的数组下的对象只有一个,“[0]”可以省略,示例中的表达式可以写为“result[name==啤酒].id”。 检查响应体“result”数组下“name”是“啤酒”的并且“obj”对象下属性“a”的值是“2”的对象的id值,检查点配置如下:
  • 比较符说明 测试计划服务支持以下比较类型: 比较类型 比较符 是否需要填入值 举例 数字比较 等于(数字) 不等于(数字) 大于等于(数字) 小于等于(数字) 大于(数字) 小于(数字) 是 响应码 等于 200 响应码 不等于 200 响应码 大于等于 200 响应码 小于等于 200 响应码 大于 200 响应码 小于 200 字符串比较 等于(字符串、区分大小写) 不等于(字符串、区分大小写) 等于(字符串、不区分大小写) 包含(字符串) 不包含(字符串) 是 响应体中的属性param1 等于 test 响应体中的属性param2 不等于 test 响应体中的属性param3 等于 TEST 响应体中的属性param4包含 tri 响应体中的属性param5不包含 tri 正则比较 正则表达式 是 响应体中的属性param1 正则表达式 ^[A-Za-z0-9]{1,32}$ 通用比较 是空(该字段是否为空,即是否没有该字段) 不是空(该字段是否不为空,即是否有该字段) 否 响应体中的属性param1 是空 响应体中的属性param2 不是空 Json数组比较 JSON数组为空数组(json数组是否为空数组) JSON数组为非空数组(json数组是否为非空数组) 否 响应体中的属性param1 JSON数组为空数组 响应体中的属性param2 JSON数组为非空数组 JSON数组的大小(json数组的大小是否为...) 是 响应体中的属性param1 JSON数组的大小 类型比较 是JSON类型(是否是json对象类型) 是JSON数组类型(是否是json数组类型) 否 响应体中的属性param1 是JSON类型 响应体中的属性param2 是JSON数组类型 Json对象比较 JSON等于(json等于) 是 响应体中的属性param1 JSON等于 {"name":"zhangsan"}
  • 示例 请求url路径 如下图所示,请求url路径中参数“test”的值为生成当前时间戳函数。 请求头 如下图所示,请求头中参数“time”的值为生成当前时间戳函数。 请求体 如下图所示,请求体中应用了生成当前时间戳函数。 检查点属性 如下图所示,检查点属性“result”的目标值为生成当前时间戳函数。 if判断 如下图所示,if判断的目标值为生成当前时间戳函数。 for循环中断条件 如下图所示,for循环中断条件的目标值为生成当前时间戳函数。
  • 动态变量说明 测试套件中的多个用例间可能存在上下文关系,后执行的用例依赖先执行用例中接口的返回结果。例如所有的接口都需要鉴权信息,且鉴权信息有时效性,如果在每个用例里都去获取鉴权信息,用例的测试步骤会显得冗余,不易维护。 使用动态全局变量即可避免上述问题,在第一个执行的用例中获取鉴权信息后赋值给动态全局变量,后面执行的用例直接使用动态全局变量即可,无需重复获取鉴权信息。 设置动态变量。 在“接口自动化测试用例列表”页面,单击页面右侧“更多”,选择“环境参数”。 选中动态变量列的复选框,单击“保存”,将全局参数设置为动态参数。 赋值动态变量。 在接口自动化用例中,选择URL请求的“响应提取”标签下,单击匹配列的“添加”按钮。 在“赋值给环境动态参数”下拉列表中希望赋值的全局动态参数。 使用动态变量。 在测试用例中使用动态变量。 在需要使用全局动态变量的用例中,引用动态全局变量,引用方式请参见环境参数引用形式。 在测试套件中使用动态全局变量。 将2和3中的用例按顺序添加到测试套件中,选择“串行执行”,即可让使用动态变量的用例执行时使用到动态全局变量被赋值的最新值。 并行执行时动态变量的赋值和使用顺序不能保证,因此不推荐在并行执行时使用动态全局变量。
  • 环境参数引用形式 环境参数的引用形式为“$${参数名}”。例如:参数名为“hostname”,则可以使用“$${hostname}”来引用该参数。 根据需要可以对环境参数进行分组配置管理,例如:参数hostname在类生产环境中的值为“stage.example.com”,在生产环境中的值为“prod.example.com”,测试脚本使用“$${hostname}”引用该参数,执行测试时选择不同环境执行,实现一套接口自动化用例在所有环境复用。
  • 环境参数设置方法 进入接口自动化用例编辑的“脚本”页签,单击图标。 单击“新建变量”,输入参数信息,单击“确定”。 配置项 说明 参数名 参数的名称。 类型 参数的类型。支持文本、随机字符串、随机整数、时间戳等多种类型。 值 参数的值。 描述 对参数的描述。 敏感参数 勾选为敏感数据后,对参数值加密存储,在测试结果日志中使用星号覆盖处理。敏感数据类型适用并不限于个人信息、鉴权信息,例如姓名、地址、用户名等。 动态参数 动态参数设置,动态参数的值可以在用例执行过程中被赋值。动态参数初始值可为空,被赋值之后,此处显示的是最新值。 在用例测试步骤“响应提取”的“赋值给环境动态参数”列中设置后,在测试执行时,响应提取的内容将被赋值给动态参数。详细介绍请参见动态变量说明。 页面中会有一个默认环境。 如果需要设置其它环境为默认环境,单击该环境卡片右上角图标,在下拉列表中选择“设为默认环境”。
  • OpenGaussQuery响应示例 [ { "name": "张三", "id": "efdb403066474ab08836b9eeaaa23bca", "age": 18 }, { "name": "李四", "id": "g582b0d966611486f918bedb9c711b14", "age": 20 } ]
  • 正则表达式示例 以下面响应体为例: 若检查点验证响应体中“result”数组的第一个元素的“remoteUrl”,使用正则匹配得到IP值和目标值比较,则配置如下。其中,正则表达式类型值设置为“((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)”。 若响应提取响应体中“result”数组的第一个元素的“remoteUrl”,使用正则匹配得到IP值赋值给变量“remoteIp”,则配置如下。其中,正则表达式类型值设置为“((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)”。
  • MySQLQuery响应示例 [ { "name": "张三", "id": "efdb403066474ab08836b9eeaaa23bca", "age": 18 }, { "name": "李四", "id": "g582b0d966611486f918bedb9c711b14", "age": 20 }]
  • 示例 请求url路径 如下图所示,请求url路径中参数“test”的值为字符串切割运算函数,函数中的参数A为环境参数“$${user}”, 参数B为整数2,参数C为整数4。 请求头 如下图所示,请求头中参数“name”的值为字符串切割运算函数,函数中的参数A为环境参数“$${user}”, 参数B为整数2,参数C为整数4。 请求体 如下图所示,请求体中应用了字符串切割运算函数,函数中的参数A为环境参数“$${user}”, 参数B为整数2,参数C为整数4。 检查点属性 如下图所示,检查点属性“result”的目标值为字符串切割运算函数,函数中的参数A为环境参数“$${info}”, 参数B为整数2,参数C为整数5。 if判断 如下图所示,if判断的目标值为字符串切割运算函数,函数中的参数A为“abcdef”, 参数B为整数2,参数C为整数4。 for循环中断条件 如下图所示,for循环中断条件的目标值为字符串切割运算函数,函数中的参数A为环境参数“$${test}”, 参数B为整数2,参数C为整数4。