这两年AI测试自动化越来越火,很多团队都开始尝试用AI来做自动化测试。但AI测试自动化和传统的自动化测试不太一样,配置也更复杂。
我这半年一直在做AI测试自动化的实践,从最开始的环境搭建,到后来的策略优化,踩了不少坑,也积累了一些经验。这篇文章我想详细介绍一下AI测试自动化的配置方法,从基础到高级,帮你快速上手。
什么是AI测试自动化
先说说什么是AI测试自动化。
传统的自动化测试,是用代码写测试脚本,比如用Selenium、Appium等框架,写好测试步骤,然后脚本自动执行。这种方式的好处是稳定、可控,但缺点是维护成本高,页面一变,脚本就要改。
AI测试自动化,是用AI大模型来驱动测试。你不需要写详细的测试脚本,只需要告诉AI要测试什么,AI就能自动理解页面、生成测试步骤、执行测试、判断结果。
比如,你想测试登录功能,传统方式需要写代码,找到用户名输入框、密码输入框、登录按钮,然后模拟输入和点击。而AI测试自动化,你只需要说"测试登录功能,用正确的账号密码应该能登录成功,用错误的密码应该提示错误",AI就能自动完成测试。
AI测试自动化的好处是,维护成本低,页面变化了也不需要改脚本,而且能测试一些传统自动化很难覆盖的场景。但它也有缺点,比如稳定性不如传统自动化,成本比较高,需要一定的配置和调优。
基础配置:环境搭建
先从最基础的环境搭建开始。
第一步,选择AI测试自动化框架。现在市面上有不少AI测试自动化的框架和工具,开源的有TestGPT、AutoGPT-UI、Playwright with AI等,商业的有Testim、Applitools、Mabl等。你可以根据自己的需求和预算选择。
如果你是刚开始学习,建议先用开源的框架,比如Playwright结合大模型API。Playwright是微软出的自动化测试框架,很强大,而且可以很方便地和大模型结合。
第二步,准备大模型API。AI测试自动化的核心是大模型,你需要一个大模型的API。可以用OpenAI的GPT系列,也可以用国内的大模型,比如通义千问、文心一言等。根据你的测试场景选择合适的模型,一般来说,能力越强的模型,测试效果越好,但成本也越高。
第三步,安装依赖。以Playwright为例,你需要安装Node.js、Playwright库、大模型的SDK等。安装好之后,用playwright install命令安装浏览器驱动。
第四步,配置API密钥。把大模型的API密钥配置到环境变量或者配置文件里,注意不要把密钥硬编码到代码里,也不要提交到代码仓库。
第五步,写一个最简单的测试。比如,让AI打开一个网页,找到搜索框,输入关键词,点击搜索,然后验证搜索结果。跑通这个最简单的测试,说明环境就搭建好了。
基础配置:核心参数
环境搭好之后,需要了解一些核心的配置参数。
第一个是模型选择。不同的模型,能力和价格差别很大。一般来说,复杂的测试场景,用能力强的模型,比如GPT-4级别;简单的测试场景,用便宜一点的模型,比如GPT-3.5级别。可以根据测试用例的复杂度,动态选择模型,平衡效果和成本。
第二个是温度参数。温度决定了AI输出的随机性。温度越高,输出越随机;温度越低,输出越确定。对于测试自动化来说,我们希望输出是确定的、可重复的,所以温度一般设得比较低,比如0.1或者0.2。
第三个是最大token数。这个参数限制了AI输出的最大长度。测试步骤一般不会太长,设个几百token就够了。但如果是复杂的测试场景,可能需要设大一些。
第四个是超时时间。AI的响应时间不稳定,有时候快有时候慢。要设置合理的超时时间,避免因为AI响应慢而导致测试失败。一般设个30秒到60秒比较合适。
第五个是重试次数。AI测试有时候会因为各种原因失败,比如页面加载慢、AI判断错误等。设置重试次数,失败了自动重试,能提高测试的通过率。但重试次数不要太多,否则会掩盖真正的问题。
基础配置:测试用例的编写
AI测试自动化的测试用例,和传统的不太一样。
传统的测试用例,是详细的步骤,比如"第一步,打开网页;第二步,输入用户名;第三步,输入密码;第四步,点击登录"。
AI测试自动化的测试用例,更像是自然语言的描述,比如"测试登录功能,验证正确的账号密码能登录成功,错误的密码会提示错误信息"。你不需要写详细的步骤,AI会自己生成步骤并执行。
但这并不意味着测试用例可以随便写。好的测试用例,应该包含以下几个要素:
第一,明确的测试目标。要测试什么功能,验证什么结果,要写清楚。
第二,具体的测试数据。比如用什么用户名、什么密码,要具体,不要说"用一个正确的用户名"。
第三,明确的预期结果。什么算成功,什么算失败,要描述清楚。
第四,必要的前置条件。比如需要先登录,需要有特定的测试数据,要说明。
写测试用例的时候,要尽量具体、明确,不要太模糊。模糊的测试用例,AI可能会理解错,导致测试结果不准确。
中级配置:元素定位策略
AI测试自动化虽然不需要手动写元素定位,但元素定位的策略还是很重要的。
AI定位元素,一般是通过元素的文本、属性、位置等信息来判断。但有时候,页面上有很多相似的元素,AI可能会定位错。这时候,就需要配置一些元素定位的策略。
第一个策略是,给关键元素加上稳定的标识。比如给按钮加上data-testid属性,给输入框加上name属性。这些稳定的标识,能帮助AI更准确地定位元素。
第二个策略是,配置元素定位的优先级。比如,优先用id定位,其次用data-testid,再次用name,最后用文本和位置。这样,AI会优先用最稳定的定位方式。
第三个策略是,处理动态元素。有些页面的元素是动态生成的,属性会变化。这时候,要告诉AI哪些属性是动态的,不要用这些属性来定位。
第四个策略是,处理iframe和shadow DOM。如果页面里有iframe或者shadow DOM,AI可能找不到里面的元素。需要配置框架,让它能深入iframe和shadow DOM里去找元素。
中级配置:断言策略
断言是测试的核心,判断测试是否通过。AI测试自动化的断言,和传统的也不一样。
传统的断言,是写死的,比如"页面标题应该等于'首页'"。而AI测试自动化的断言,可以是自然语言的描述,比如"页面应该显示登录成功的提示"。
但AI断言有时候会不准确,比如把"登录失败"误认为"登录成功"。所以,需要配置一些断言策略,来提高准确性。
第一个策略是,关键断言用传统方式。对于最重要的断言,比如登录是否成功、订单是否创建,建议还是用传统的断言方式,比如检查URL、检查特定元素的文本。这样更稳定、更准确。
第二个策略是,AI断言用于复杂的判断。对于一些传统断言很难做的判断,比如"页面布局是否正常""图片是否显示正确""内容是否相关",可以用AI来判断。
第三个策略是,多重断言。一个测试用例,可以有多个断言,从不同角度验证结果。比如,既检查URL,又检查页面标题,还检查关键元素的文本。这样,测试的可靠性更高。
第四个策略是,断言的容错。AI断言有时候会有小的误差,比如文本多了一个空格,或者大小写不一样。可以配置一定的容错,比如忽略大小写、忽略首尾空格、允许小的差异。
中级配置:失败处理和重试
AI测试自动化,失败率比传统自动化高,所以失败处理和重试很重要。
第一个是,区分失败类型。测试失败,可能有不同的原因:有的是真的发现了bug,有的是AI判断错误,有的是页面加载慢,有的是网络问题。要区分不同的失败类型,采取不同的处理方式。
第二个是,智能重试。对于可能是临时问题导致的失败,比如页面加载慢、网络波动,可以自动重试。但重试的时候,不要完全重复,要稍微调整一下,比如增加等待时间,或者换一种定位方式。
第三个是,失败截图和日志。测试失败的时候,要自动截图,保存页面HTML,记录AI的思考过程。这样,事后排查的时候,能知道为什么失败。
第四个是,失败分析。可以用AI来分析失败的原因,判断是真的bug,还是测试本身的问题。这样,能减少人工排查的工作量。
高级配置:成本优化
AI测试自动化的成本,主要是大模型API的调用费用。如果测试用例很多,成本会很高。所以,成本优化是高级配置的重要内容。
第一个优化是,模型分级。不同的测试用例,用不同的模型。简单的用例,用便宜的模型;复杂的用例,用贵的模型。这样,能在保证效果的前提下,降低成本。
第二个优化是,缓存AI的输出。对于相同的测试步骤,AI的输出是一样的。可以把AI的输出缓存起来,下次执行的时候,直接用缓存的结果,不用再调用AI。这样,能大大减少API调用次数。
第三个优化是,减少AI的调用次数。一个测试用例,不要每一步都调用AI。可以让AI一次生成完整的测试步骤,然后本地执行。这样,一个用例只需要调用一次AI。
第四个优化是,批量执行。把多个测试用例合并成一个请求,批量调用AI。这样,能减少请求的开销,也能享受批量的折扣。
第五个优化是,只在必要的时候用AI。对于稳定的、不常变化的功能,用传统的自动化测试。对于变化快的、复杂的功能,用AI测试自动化。不要什么都用AI,那样成本太高。
高级配置:CI/CD集成
AI测试自动化,最终要集成到CI/CD流程里,才能发挥最大的价值。
第一个是,触发策略。可以配置在代码提交的时候自动运行,也可以配置在每天定时运行,还可以配置手动触发。对于耗时比较长的AI测试,建议在夜间定时运行,或者在合并请求的时候运行。
第二个是,并行执行。AI测试比较慢,如果用例很多,串行执行会花很长时间。可以配置并行执行,同时跑多个用例,缩短整体时间。
第三个是,结果报告。测试完成后,要生成详细的报告,包括通过的用例、失败的用例、失败的原因、截图和日志。报告要清晰易懂,让开发和测试能快速定位问题。
第四个是,失败通知。如果有测试失败,要自动通知相关的人,比如发邮件、发消息。通知里要包含失败的用例和原因,方便快速处理。
第五个是,和缺陷管理系统集成。如果测试发现了bug,可以自动创建缺陷,分配给对应的开发。这样,能减少人工操作,提高效率。
高级配置:持续优化
AI测试自动化不是配置好就一劳永逸了,需要持续优化。
第一个是,监控测试的通过率和稳定性。如果某个用例经常失败,要分析原因,是用例写得不好,还是AI的问题,还是真的有bug。
第二个是,持续优化测试用例。根据测试的结果,不断改进测试用例的描述,让AI更容易理解,测试更准确。
第三个是,更新模型和框架。大模型和测试框架更新很快,要及时更新,享受新功能和性能提升。
第四个是,收集反馈。和开发、测试团队沟通,收集他们对AI测试自动化的反馈,不断改进。
常见的坑
在配置AI测试自动化的过程中,我踩了不少坑,分享几个常见的。
第一个坑是,对AI期望太高。很多人以为AI测试自动化能完全替代传统自动化,其实不是。AI测试有它的优势,但也有局限性。要把AI和传统自动化结合起来用,而不是完全替代。
第二个坑是,测试用例写得太模糊。模糊的测试用例,AI理解不了,测试结果就不准。测试用例要具体、明确,不要太抽象。
第三个坑是,不做失败分析。AI测试失败了,就简单地重试,或者忽略。这样,真正的bug可能会被漏掉。每次失败,都要分析原因,是真的bug还是测试的问题。
第四个坑是,不控制成本。AI测试的成本很容易失控,特别是用例多的时候。要做好成本监控和优化,不要等账单来了才吓一跳。
第五个坑是,忽略安全。AI测试会把页面的内容传给大模型,如果页面里有敏感信息,就会有安全风险。要做好数据脱敏,不要把敏感信息传给第三方模型。
写在最后
AI测试自动化是一个很有前景的方向,它能大大降低自动化测试的维护成本,提高测试的效率。但它也不是银弹,需要合理的配置和持续的优化,才能发挥最大的价值。
这篇文章从基础到高级,介绍了AI测试自动化的配置方法。希望能帮你快速上手,少走弯路。
如果你也在做AI测试自动化,或者准备尝试,欢迎交流。这个领域发展很快,大家一起学习,一起进步。
最后用一句话来结束这篇文章:"AI不是来替代测试工程师的,而是来帮助测试工程师做更有价值的事情的。"
愿每一个测试人,都能用好AI这个工具,让测试工作更轻松、更高效。
评论(0)
暂无评论,快来抢沙发~
评论功能仅对会员开放,请先登录
登录