ChatGPT实战测试:AI能否替代软件测试工程师?

3

在数字化浪潮席卷全球的今天,人工智能(AI)正以前所未有的速度渗透到各行各业。其中,自然语言处理(NLP)技术的进步,使得AI在内容创作领域的应用日益广泛。本文旨在通过一次实际的测试流程,深入探讨ChatGPT在软件测试中的应用,并评估其在测试流程中的价值与局限性。本文将以一个简单的网站登录功能为例,模拟测试需求分析、测试点提炼、测试用例编写、测试脚本生成以及脚本优化等环节,从而揭示AI在测试领域的真实能力。

测试流程:从需求到脚本

本次测试的目标是一个个人网站的登录功能。该登录功能包含用户名、密码输入框以及登录按钮。用户输入正确的用户名和密码后,应能成功进入主页;输入错误的用户名或密码时,系统应给出相应的错误提示。

首先,我们利用ChatGPT对登录功能的需求进行分析,并提炼测试点。ChatGPT最初给出的回答较为宽泛,缺乏针对性。经过补充提问后,其生成的测试点更为具体,但仍无法直接应用于正式的工作流程。这些测试点可以作为自由测试的参考,但需要进一步完善。

登录页面

接下来,我们尝试让ChatGPT编写测试用例。如下图所示,ChatGPT生成的用例在一定程度上满足了需求,但与实际工作中的用例要求仍有差距。例如,ChatGPT未能充分考虑到边界值、等价类以及判定表等测试方法,生成的用例更像是随机编写,与特定的网站关联性较弱。尽管如此,这些用例可以作为补充和借鉴。

测试点提炼

用例生成

用例编写

脚本生成与优化:AI的局限与潜力

在测试脚本生成阶段,ChatGPT生成了一段简单的线性脚本。该脚本使用Selenium自动化测试工具,实现了启动和关闭浏览器、验证用户名和密码输入框是否存在、使用错误的用户名和密码登录并验证提示语、使用正确的用户名和密码登录并验证跳转、验证主页用户名显示以及点击退出按钮等功能。

脚本生成

这段代码的优点在于没有语法错误,能够定位页面中的关键元素,并且代码注释较为清晰。然而,其缺点也十分明显:脚本中使用的用户名、密码、主页地址等信息均为ChatGPT自行揣测,缺乏明确说明;用例脚本数量不足,与之前生成的用例数量不匹配;未采用标准的测试框架;Selenium的定位方式较为陈旧,可能导致报错。

总体而言,ChatGPT生成的代码尚不能直接应用于实际工作,需要人工进行完善。其水平大致相当于一位未经测试培训的实习生。

为了进一步评估ChatGPT的能力,我们要求其使用unittest框架重写脚本。重写后的脚本在结构上有所改进,例如使用了unittest框架,增加了“记住密码”的测试用例,并将初始化代码放入setup方法中,以保证每条用例的低耦合性。

Unittest重写

尽管如此,重写后的脚本仍然存在用例数量不足、未采用高级编写技巧、未考虑时间等待等异常情况等问题。其水平大致相当于一位刚毕业的测试工程师。

随后,我们再次提高要求,希望ChatGPT能够生成更高质量的代码。经过多次迭代,ChatGPT生成的代码在用例条数、元素定位以及代码结构等方面均有所提升。例如,其开始采用初级的Page Object模式,将元素定位独立出来。

关键代码

然而,该代码仍然存在冗余、未充分利用用例规程和并发线程、未考虑网络延迟等问题。此外,代码中尚未引入数据驱动和关键字驱动等概念。总体而言,该代码的水平相当于一位工作一年左右的工程师,但仍需大量人工矫正。

最后,我们要求ChatGPT实现多线程并发测试。ChatGPT生成的代码使用了thread库进行多线程并发,初步运用了数据驱动的概念,并巧妙地将断言目的与线程关联起来。此外,代码中仍然存在Page Object模式的影子。

并发测试

然而,该代码的多线程运用缺乏系统封装,存在风险和局限性;用例结构较为单一,无法处理复杂的测试场景;线程以用例为基本单位,无法实现多用例之间的关联;数据分离尚未实现。

通常来说,市场上的自动化测试人员需要3-5年才能流畅地编写出这种水平的代码。还有很多测试人员无法达到这一水平。

高级代码

结论与展望

通过本次测试,我们可以看到ChatGPT在测试流程中可以作为一个辅助工具,但无法完全替代人类测试工程师。ChatGPT的答案主要来源于对网络上已有信息的理解和拼接,而网络上的代码水平参差不齐,与实际工作中的核心代码存在较大差距。因此,ChatGPT生成的脚本需要人工进行矫正和优化,并且需要操作者具备较高的专业水平。

尽管如此,ChatGPT在提高工作效率方面具有显著优势。它可以帮助测试工程师快速生成测试用例和脚本,从而节省大量时间和精力。对于经验丰富的工程师来说,ChatGPT可以作为一个强大的助手,帮助他们实现更高水平的自动化测试。

然而,我们也需要认识到,过度依赖AI可能会导致技术垄断和技术阶层固化。为了避免落伍,测试工程师需要不断提高自身水平,关注表层应用和交互使用,并加快学习速度。只有具备超越AI的水平,才能更好地利用AI进行优化和改进。

总的来说,ChatGPT在测试领域的应用前景广阔,但同时也需要我们保持清醒的头脑,不断提升自身能力,才能在未来的技术变革中立于不败之地。