自动化回归Dubbo服务的测试用例

自动化回归功能基于服务契约信息快速编排被测服务、管理自动化测试用例,帮助您高效管理、回归业务测试场景,完成业务快速验证和交付。本文介绍如何创建执行Dubbo测试用例。

创建Dubbo测试用例

  1. 登录EDAS控制台

  2. 在左侧导航栏,选择流量管理 > 微服务治理 > Dubbo

  3. Dubbo左侧导航栏,单击自动化回归(用例管理)
  4. 自动化回归(用例管理)页面顶部菜单栏选择地域,在页面中选择微服务空间,然后单击创建用例
  5. 创建用例页面,单击下拉箭头图标,设置相关参数信息。
    创建Dubbo测试用例
    配置项描述
    用例名称自定义测试用例名称。
    应用选择需要测试的应用。
    框架类型选择Dubbo框架。
    服务选择应用的服务。
    方法选择服务的方法
    基本信息支持JSON格式的参数输入方式。其中默认入参为[]。

    关于Dubbo服务的方法参数类型及配置方式,请参见Dubbo参考示例

    断言(选填)输入检查对象检查内容,选择检查条件
    出参提取(选填)输入出参名出参提取表达式
  6. 单击右侧的访问一次,在单步骤调试结果面板,查看此次请求入参和请求出参。
  7. 单击出参提取助手,在出参提取助手对话框,单击需要提取的出参名,复制该参数。
  8. 断言(选填)下方的检查对象中粘贴所复制的参数,选择检查条件,输入检查内容
  9. 出参提取(选填)下方的出参提取表达式中粘贴所复制的参数,并自定义出参名。设置完成后,单击右上方的保存配置
    您可在用例列表中查看创建的测试用例。

创建多步骤串联的测试用例

  1. 登录EDAS控制台

  2. 在左侧导航栏,选择流量管理 > 微服务治理 > Dubbo

  3. Dubbo左侧导航栏,单击自动化回归(用例管理)
  4. 用例详情页面,单击右侧的访问一次,在单步骤调试结果面板,查看此次请求入参和出参。
  5. 单击出参提取助手,在出参提取助手对话框,复制选择需要提取的出参参数。
  6. 出参提取(选填)下方的出参提取表达式中粘贴所选择的出参表达式,并自定义出参名
  7. 单击+添加测试步骤增加多个测试步骤。
  8. 在该测试步骤的基本信息区域下方的JSON格式化中输入引用变量名${XXX}
    说明 XXX为前序步骤的出参提取(选填)中设置的出参名,需要用${ }格式引用。
  9. 单击右上方的保存配置,然后单击立即执行

创建包含子用例的多步骤串联的测试用例

一个测试用例可以包含多个测试步骤,假设某个用例作为子用例,需要被其他用例引用时,可以通过多步骤串联的方式引入同一个用例集中的其他测试用例,后续步骤可以使用前序步骤中的出参提取变量,做到更好的用例复用。

  1. 登录MSE治理中心控制台,并在顶部菜单栏选择地域。

  2. 在左侧导航栏,选择治理中心 > 开发测试治理 > 自动化回归(用例管理)

  3. 在顶部菜单栏选择地域,单击目标用例右侧操作列的详情

  4. 用例详情页面单击添加测试步骤右侧的下拉箭头,然后单击添加子用例

  5. 步骤配置列表中单击测试步骤右侧的下拉箭头,在选择子用例下拉框中选择对应的子用例。

    说明
    • 如果选择子用例无可选项,需要先在用例详情页面的高级设置区域中将此用例加入用例集。所选择的子用例为同一用例集下的其他用例。

    • 如果无用例集或者加入用例集后仍无可选子用例,请先检查用例集中是否有测试用例。

  6. 单击右上方的保存配置,然后单击变量列表

    变量列表面板中会出现子用例变量,后续测试步骤可直接引用子用例的出参提取变量。

  7. 继续添加其他的测试步骤,单击右上方的保存配置,然后单击立即执行

    您可以在执行历史页签中查看引用子用例变量的后续步骤中,参数被合适的替换执行。

执行测试用例

  1. 登录EDAS控制台

  2. 在左侧导航栏,选择流量管理 > 微服务治理 > Dubbo

  3. Dubbo左侧导航栏,单击自动化回归(用例管理)
  4. 在顶部菜单栏选择地域
  5. 您可选择以下两种方式执行测试用例。
    • 用例列表(用例管理)页面,单击目标用例右侧操作列的执行
    • 用例列表(用例管理)页面,单击目标用例右侧操作列的详情,在用例详情页面,单击立即执行执行测试用例
    您可在执行历史页签查看详细执行结果。

相关操作

您还可以执行以下操作管理测试用例。

  • 复制测试用例:在自动化回归(用例管理)列表页面,单击操作列的复制,可生成一条新的测试用例。
  • 删除测试用例:在自动化回归(用例管理)列表页面,单击操作列的删除,可删除该测试用例。

Dubbo参考示例

方法参数类型填写方式参数填写方式
String sayHello(String name);["java.lang.String"]["hello, dubbo"]
String helloBean(HelloBean helloBean);["com.alibaba.dubbo.api.DemoService"][{"booleanValue":true,"helloSubValue":{"booleanValue":false,"intValue":2,"stringValue":"subbean"},"intValue":1,"stringValue":"bean"}]
String helloBean(HelloBean helloBean1, HelloBean helloBean2);["com.alibaba.dubbo.api.DemoService","com.alibaba.pts.dubbo.api.DemoService"][{"booleanValue":true,"helloSubValue":{"booleanValue":false,"intValue":2,"stringValue":"subbean"},"intValue":1,"stringValue":"bean"},{"booleanValue":true,"helloSubValue":{"booleanValue":false,"intValue":2,"stringValue":"subbean"},"intValue":1,"stringValue":"bean"}]
String helloMap(Map helloMap);["java.util.Map"][{"booleanValue":true,"helloSubValue":{"booleanValue":false,"intValue":2,"stringValue":"subbean"},"intValue":1,"stringValue":"bean"}]
String helloMap(Map helloMap1, Map helloMap2);["java.util.Map", "java.util.Map"][{"booleanValue":true,"helloSubValue":{"booleanValue":false,"intValue":2,"stringValue":"subbean"},"intValue":1,"stringValue":"bean"},{"booleanValue":true,"helloSubValue":{"booleanValue":false,"intValue":2,"stringValue":"subbean"},"intValue":1,"stringValue":"bean"}]
String helloList(List helloList);["java.util.List"][[1]]
String helloList(List helloList1, List helloList2);["java.util.List","java.util.List"][[1],[1,2]]
String helloString(String helloString);["java.lang.String"][[1],[1,2],[1,3]]
String helloString(String helloString1, String helloString2);["java.lang.String","java.lang.String"]["hello, dubbo", "hello, dubbo"]
String helloInt(int helloInt);["int"]["hello, dubbo", "hello, dubbo"]
String helloInt(int helloInt1, int helloInt2);["int","int"]["1","2"]
String helloBoolean(boolean helloBoolean);["boolean"]["true"]
String helloBoolean(boolean helloBoolean1, boolean helloBoolean2);["boolean","boolean"]["true","false"]
String helloVoid();[][]