软件测试:生成式人工智能能做什么和不能做什么?

大家好,我是峰戈。

今天和大家聊一聊这两年最火的赛道—人工智能,对我们工作可能产生的影响,以及它究竟能做什么和不能做什么。

近年来,人工智能(AI)的发展可谓是如火如荼,它正以前所未有的速度和规模影响着我们的生活和工作。

从智能助手、语音识别到自动驾驶汽车、机器学习算法,AI技术的应用范围不断拓展,其智能化水平也日益提升。

AI不仅在提高生产效率、优化决策过程方面发挥着重要作用,还在医疗、教育、金融等多个领域展现出巨大的潜力。

随着深度学习、神经网络等技术的不断进步,AI正逐步实现从简单任务自动化到复杂问题解决的跨越,为人类社会带来深远的影响。

AI的发展让越来越多的人感到焦虑,因为很多就业岗位会被AI所代替,不是人不好用了,而是用AI干活更省钱、更高效、更听话。

对于IT行业成百上千万的程序猿、攻城狮、产品、测试人员……AI能做什么?能给实际工作带来多大的赋能?本文聊一聊软件测试领域,AI到底能干哪些事儿。

01 ChatGPT 会抢走自动化工程师的工作吗?

ChatGPT 会抢走自动化工程师的工作吗?简短的回答是“也许会,但可能不会”。 

长远的答案涉及准确理解ChatGPT 和其他生成式 AI 工具在软件测试和测试自动化环境中能做什么和不能做什么。与许多其他领域的情况一样,ChatGPT 能够完成令人惊叹的事情,这些事情可能对传统工程工作构成威胁。但也有很多事情它做不到——或者至少做不好。想要使用 生成式 AI更好地完成工作(而不是被AI 取代)的自动化工程师必须了解其中的区别。 

本文将介绍 ChatGPT 作为加速测试自动化工作流程的工具的功能和局限性,强调它的亮点以及需要具有特定领域专业知识的人员介入的地方。 

02 人工智能和测试自动化、Pre-ChatGPT

将人工智能应用于软件测试的想法并不新鲜。多年来,各种软件测试和部署平台都提供了人工智能驱动的“机器人”(Google Firebase上的Robo 就是一个流行的例子),它们可以浏览应用程序,自动决定要测试的内容,然后运行测试。 

这些机器人可以帮助自动化工程师定义测试用例并执行测试。但它们有明显的缺点,例如难以突破应用程序内的身份验证壁垒,并且在执行测试时容易陷入无限循环。

因此,自动化工程师历来认为人工智能是一种可以减少进行基本测试所需的辛劳和乏味工作的工具,但并不能替代人类测试专家。 

03 ChatGPT 在软件测试自动化方面表现如何?

ChatGPT 等生成式人工智能工具代表了一种新型解决方案,与传统人工智能工具相比,它们具有更大的灵活性。它们还易于通过自然语言查询进行操作,这使得它们比许多传统解决方案更方便。 

这是否意味着 ChatGPT 可以在传统软件测试工具不足的地方表现出色?为了找到答案,让我们来看看作为一名自动化工程师可能面临的真实场景,看看 ChatGPT 能如何处理它。 

假设您要测试Web 应用程序的 UI 。如果它是基于浏览器的应用程序,则可以使用 ChatGPT 帮助生成自动化脚本,并发出如下提示: 

生成一个 Selenium 脚本,访问 kobiton.com,选择“平台”菜单选项,然后单击“真实设备测试”。 

ChatGPT 会使用我从中得到的如下脚本进行响应:

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
 
# Set up Chrome webdriver and navigate to kobiton.com 
driver = webdriver.Chrome() 
driver.get("https://kobiton.com/") 
 
# Wait for the "Platform" menu option to be clickable and click on it 
platform_menu = WebDriverWait(driver, 10).until( 
    EC.element_to_be_clickable((By.XPATH, "//a[text()='Platform']")) 

platform_menu.click() 
 
# Wait for the "Real Device Testing" option to be clickable and click on it 
real_device_testing = WebDriverWait(driver, 10).until( 
    EC.element_to_be_clickable((By.XPATH, "//a[text()='Real Device Testing']")) 

real_device_testing.click() 
 
# Close the browser 
driver.quit()


此脚本几乎可以测试提示所要求的内容,但也存在一些问题。最大的问题是“平台”实际上不是 kobiton.com 上的可点击元素(尽管您必须将鼠标悬停在其上才能显示“真实设备测试”链接)。ChatGPT 可能未能检测到这一事实,因为它以一种过于简单的方式解析了 kobiton.com.

不过,人类自动化工程师很容易就能识别出这个问题,并可以根据需要修改 Selenium 脚本。因此,在这种情况下,生成式 AI 能够完成解决测试自动化挑战所需工作的 80%;而具有特定领域知识的自动化工程师则需要完成其余工作。 

04 ChatGPT 和移动测试

进一步举个例子,假设我们不是测试网站的 UI,而是想测试在特定设备上运行的移动应用的 UI。对于生成式 AI 来说,事情就变得更加困难了。

由于 ChatGPT 无法访问大量移动设备,因此它无法像处理网站那样解析移动应用程序并编写测试用例。换句话说,无法告诉 ChatGPT,“在 Galaxy S23 上加载我的应用程序并测试登录屏幕。”这项任务自动化工程师必须主要手动处理,并借助提供移动设备访问权限的软件测试平台。

总的来说,生成式人工智能可以通过多种方式帮助工程师应对这种情况。例如,它可以审查工程师编写的自动化脚本,并建议他们可能忽略的其他测试用例,例如测试用户不输入密码的情况(而不是仅测试用户输入错误密码的情况)。

但在这种情况下,ChatGPT 只能处理满足软件测试要求所需的一小部分工作。大部分工作必须由人工测试自动化工程师完成,他们拥有特定领域的专业知识,并且能够访问 ChatGPT 所缺乏的测试基础设施。 

05 结论 

生成式人工智能正在快速发展,不难想象它能够突破我们上面描述的限制。例如,有人可能会找到一种方法让 ChatGPT 访问移动设备,以帮助它为移动应用(而不仅仅是网站)生成自动化脚本。 

但即便如此,我们也很难想象 ChatGPT 等工具能够以端到端的方式处理软件测试自动化的所有方面。

几乎可以肯定的是,总会存在一些需要人类解决的差距和疏忽。想要在以人工智能为中心的世界中脱颖而出的自动化工程师应该使用生成式人工智能来自动化测试自动化中更简单、更繁琐的方面——同时将精力集中在做人工智能无法做的事情上。

欢迎扫码关注公号,讨论交流~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值