gemini在自动化测试中的潜力
昨天 google 发布了全新的 ai 模型 gemini,在视频里 google 演示了 gemini 近乎神奇的实时反馈能力,比如测试人员画一只鸭子,ai 可以立即识别,以及后面的一些互动小游戏中,gemini 展示出了出人意料的精准度和推理能力,这是令我印象最为深刻的多模态模型的实时演示了。
珠玉在前,gpt4 的文本类型的推理能力已经到达了一个相对可用的状态,基于该能力,我们也看到了一些比较有意思的自动化类型的项目,比如通过简化 html 输入大语言模型,让大语言模型去推断用户想要进行的操作,最终调用浏览器 api 进行自动化操作的项目,以及利用 llm 的解释器能力,一步一步推理并进行浏览器操作的项目,这些项目都非常有创意,也有一定的实用性,但是缺乏完善的多模态支持总让人觉得想象空间可能没有变得非常广阔。gemini 的出现,强大的推理能力,代码生成能力以及多模态能力的结合,也许会为自动化测试领域带来翻天覆地的变化。
UI 自动化
这是难度最高的自动化测试类型,比如浏览器和 app 的自动化,尽管概念出现的非常早,而且也发展了相当长的一段时间,但是 ui 自动化的普及度却相对来说不算太高,在资源和时间有限的情况下,ui 自动化测试往往是被大家优先降本增效的不二选择。
类型 gemini 的大语言模型的出现,可能会给 ui 自动化带来革命性的变化。今后,我们可以直接向 ai 输入一些描述相对明确的测试用例,当然,是用自然语言编写的,ai 可以推断出我们的测试意图,还原测试步骤,最终将测试步骤转化成测试代码,自动运行,通过运行中提供的截图和代码报错信息自动分析结果,自动迭代和修正代码错误,直到输出最终代码,基本上 ui 自动化是可以完美闭环的。
也就是说也许不久之后我们只需要写好手工测试用例就可以完成相对完美的自动化测试工作了,以后的测试人员可能不再需要每个用例都去执行一遍,执行的工作应该可以被 ai 和机器替代绝大部分。
顺便再考虑一下测试用例,如果 ai 的推断能力足够强的话,ai 应该可以写出大部分的测试用例,这时候测试人员只需要补充一些极端场景的用例就可以了。
那测试用例是从哪里来呢?可能是从产品文档里分析出来的,同样,如果模型精通多模态和推断的话,那么产品文档和产品设计图也是可以用 ai 去生成一大部分的,人工只要负责查缺补漏和提出修改意见就好了。同理,代码的话 ai 也能写个大部分,也许今后我们的工作方式会发生巨大的转变,从单纯的跟人合作变成跟人和 ai 一起协作,通用知识和能力将变得廉价,垂类的信息和领域知识可能会越来越值钱。
接口自动化
接口自动化可能不太需要多模态,基于模型的推理和生成能力,如果模型支持海量的上下文输入的话,那么我们是完全可以为接口自动化的用例定义规则,并教会模型如何应用这些规则生成测试用例。
举个例子,如果我们 curd 的接口遵循 restful 规则的话,ai 是完全有能力生成 restful 接口的测试用例的,毕竟 restful 的规则比较清晰,而且对于具体资源来说接口和用例的数量都是可以枚举的。
因此对于一些相对简单的接口,用 ai 去编写用例从直觉上来说是可行的,不过对于复杂接口,比如一些接口有很繁杂的前置依赖和操作步骤,ai 自动根据接口文档的话可能不太好去推断各种具体场景,这种情况下我们可能需要一种接近自然语言的简化版中间语言,这种语言描述一些接口的输入输出以及构造复杂的接口测试场景,ai 根据这种 DSL 去生成代码的话可能效率和准确性都要更高一点。
