# AI自定义测试

AI自定义测试,是利用大模型能力,可以让用户使用自然语言描述用例,底层使用Minium驱动用例自动执行。它的主要优势如下:

  • 用户无需写代码,用自然语言描述执行步骤即可,使用门槛较低
  • 任务执行成功后,会自动生成本次任务执行过程的Minium脚本。用户可以将该脚本作为用例上传为Minium用例,后续可以快速执行本用例

使用前请仔细阅读使用须知:

  1. 目前AI自定义测试处于内测中,请在帮助页面,扫码加入云测官方企微群,联系群主评估需求,开通权限才能体验。如遇到问题,可以先查看最下方的常见问题,如仍有问题,请联系群主反馈,逐个排期查看
  2. 目前AI操作目前支持点击、简单输入、滑动,function_call,大模型断言等能力。如有其他需求,请联系群主评估

# 快速开始

在获得体验权限后,可以按照以下步骤开始AI自定义测试任务

# 一、 新建AI测试用例

在“AI用例”页面,新建测试用例,在弹出的窗口中,填写用例名称、优先级和用例描述。

其中,用例描述即本次AI探索过程的自然语言描述,尽量准确详细描述用例执行的过程。

# 填写用例描述Tips:

填写用例描述时,可以从人类视觉的角度去描述(会把当前屏幕截图给到大模型),以四川航空小程序为例,参考描述如下:

打开小程序后,执行以下步骤:
1. 在首页中,点击出发地下面的“成都”,进入更换出发地页面。
2. 在更换出发地页面中,在导航栏搜索“XIC”,在搜索结果中,选择第一个“西昌”,并返回购票页面
3. 在购票页面中,点击目的地下面的“北京”,进入更换目的地页面
4. 在更换目的地页面中,在导航栏搜索“NKG”,在搜索结果中,选择第一个“南京”,并返回购票页面
5. 在购票页面中,点击“搜索机票”,进入选择机票页面。途中如果遇到公告弹窗,要关闭这个弹窗
6. 能成功进入选择机票页面,任务成功。如果无法进入选择机票页面,任务失败

此外以下是一些有用的小Tips:

  • 在描述滑动时,需要描述清楚是上下滑动还是左右滑动,这样大模型才好做成正确的判断
  • 如果需要滑动到页面底部,可以直接描述说滑动到页面底部,加快执行流程

# 特殊操作

此外,AI自定义测支持以下特殊操作:

# 1. minium_func_call

minium_func_call 支持用户在大模型描述中,调用自己的函数,类似大模型function_call能力。

使用function_call能力的特别须知:

  • 调用的函数,必需要上传到云测
  • 函数的第一个参数,需要传入mini,详情可以参考下方示例。mini会把minitest.MiniTest实例传入到函数,方便用户使用minium的能力。注意即使函数不需要使用mini的能力,也需要将第一个参数设置为mini

使用示例如下:

用户已经将test_config.py和config/test_config.py已经上传到云测的Minium用例中。这两文件内容相同,这里只是为了演示在不同目录下,要如何调用。

test_config.py内容也很简单,有一个示例函数和示例类(再次提醒第一个参数要传入mini)。各种不同情况的调用方式描述如下:

  • 调用 test_config.py 中的 get_config 函数:从minium_func_call("test_config.get_config")中读取 [出发地] 和 [目的地] 信息
  • 调用 test_config.py 中的 TestConfig 类中的 get_config 函数:从minium_func_call("test_config.TestConfig.get_config")中读取 [出发地] 和 [目的地] 信息
  • 调用 config/test_config.py 中的 get_config 函数:从minium_func_call("config.test_config.get_config")中读取 [出发地] 和 [目的地] 信息
  • 调用 config/test_config.py 中的 TestConfig 类中的get_config函数:从minium_func_call("config.test_config.TestConfig.get_config")中读取 [出发地] 和 [目的地] 信息

调用的函数名、文件名、文件路径,请尽量使用英文,不要带有特殊符号,避免import失败

# 2. llm_assert

在描述中,如果要用assert能力,可以使用llm_assert。注意如果llm_assert失败,将终止当前Case测试

例如,用户可以描述如下:

1、从minium_func_call("test_config.get_config")中读取 [出发地] 和 [目的地] 信息
2. 将出发地换成第一步中读取的 [出发地]
3. 将目的地换成[目的地]
4. llm_assert("出发地成功切换为[出发地],目的地切换为[目的地]")

在上述的描述中,大模型可以自己识别结果的[出发地] 和 [目的地] ,换成北京和上海,生成的llm_assert代码:

self.op_llm_assert('''出发地成功切换为北京,目的地切换为上海''')

# 二、 新建AI测试计划

AI测试用例新建完成后,点击“测试计划”页面,新建AI测试计划。填写计划名称,勾选需要执行的AI用例。

和Minium类似,云测会按照勾选的顺序执行用例。注意AI测试用例采用的是DDT的模式依次执行。

# 三、 提交测试任务

AI自定义测试任务是用Minium驱动执行的,所以它本质还是一个Minium类型的任务

AI自定义测试计划创建完成后,在“测试任务”页面,点击“新建任务”按钮。

在弹出窗口中,选择Minium测试类型,在测试计划中,选择刚才创建的AI测试计划。

注意,所有AI测试计划的右侧都有AI任务的Tag标识

# 四、 查看测试报告

任务结束后,可以在测试报告页面查看执行结果。例如上述描述执行结果如下:

测试结果一般分为 测试成功测试失败

  • 测试成功,是AI按照描述,执行完成 。特别注意:这里是AI自我感觉执行成功,用户可以根据测试报告截图以及生成的Minium代码自行判断
  • 测试失败 一般有几种情况:
    • 根据任务描述返回失败:例如任务描述要求 ”如果找不到'广州',直接返回失败,结束测试",在探索过程中,未找到'广州',此时返回失败,并结束测试,在生成代码中,会带有asesert Fasle, error_msg的代码
    • AI探索失败:AI按照任务描述,连续多次都无法成功,故返回失败。此时在用例执行结果的错误日志一般会有提示“AI探索连续失败了x次,结束测试”
    • AI探索超时:AI还在探索中,但是任务规定的时间已经到了,结束测试,并返回失败

测试成功的代码,可以直接下载,作为Minium用例上传到云测,直接跑测Minium任务

# 常见问题

# 1. 为什么AI探索耗时较长,下载的Minium的用例很快就执行完成了?

AI任务过程比较长,需要多次和大模型交互,每一步的耗时都会较长,而生成好的Minium的用例只需要执行就可以,无需和大模型再次交互,所以速度会快很多

# 2. AI任务生成不及预期应该怎么办?

建议可以先观察下测试报告,看看AI在哪里出错的,然后对应优化任务描述。 如果仍有问题,可以加入云测官方企微群,联系群主反馈

# 需要帮助

如果你任何建议或需求,欢迎前往 需要帮助 页面,扫码加入云测官方企微群,联系群主反馈。