ChatGPT 是一个经过预训练的 AI 语言模型,可以通过聊天的方式回答问题,或者与人闲聊。它能处理的是文本类的信息,输出也只能是文字。它从我们输入的信息中获取上下文,结合它被训练的大模型,进行分析总结,给出一个可能会让我们耳目一新的答案。
正因为简单易用,并且似乎具有超常的智慧,它使得我们“普通老百姓”有机会近距离接触到这个超能 AI,并且爱上了它;另一方面,正是由于它“智力过人”,我们在喜欢它的同时也产生了担忧,那就是我们的工作会不会被它取代,导致失业……
我的 ChatGPT 初体验
我使用 ChatGPT 也有一段时间,由于我目前所做工作主要偏向于产生内容,根据一些特定场景设计或制定解决方案之类的文本处理的事情,我会把 ChatGPT 当做一个比搜索引擎更加方便更加强大的工具来使用。比如,我可以给它输入特定场景上下文,让它帮我提供解决方案的思路。
由于大模型的支持,它的产出是经过提炼和总结的,是相对系统的,更接近于我所需要的结果,显然它是比搜索引擎更加强大、更加智能的工具,能够节省我查找资料并从资料中提炼我所需信息的大量时间,而且它可以开拓我的思路,给出一些我可能暂时想不到或者没想到的点子,这一点非常有帮助。
那是不是可以依赖于它来帮我搞定一切呢?并不能。因为它会一本正经地胡说八道,它总是过于自信,会把一个不准确的或者完成错误的结果非常自信的给出来……这个现象有个专业术语叫“人工智能幻觉”,维基百科解释如下:
在人工智能中,幻觉或人工智能幻觉是人工智能的自信反应。当模型有“幻觉”(输出欺骗性数据的倾向)时,其使用的的训练数据并不能证明输出的合理性。
该术语源自幻觉的心理学概念,因为它们具有相似的特征。人工智能幻觉的危险之处之一是模型的输出看起来是正确的,即使它本质上是错误的。
比如我跟 ChatGPT 一起 pair 整理的那份测试类型清单,在整理过程中我多次对它的回复进行澄清和修正才得以完成。我发现 ChatGPT 的有些认知是过时的,尤其在质量和测试领域,很多被大众认可的理念可能不是最新的,但是大数据会使得 ChatGPT 同样“认可”了这些观点,并输出给我。由于这是我非常熟悉的领域,它给出的回答带有明确错误或者过时认知的时候,我是能快速识别的。
当我接触到不太熟知的领域的时候,我也会去咨询它,通过这种方式来了解和学习。但是,这个时候需要特别谨慎,由于 AI 幻觉的存在,我需要批判性地看待它给出的答案。这一点跟使用搜索引擎是类似的,我们从网络上搜索到的内容很有可能也是不准确或错误的,只不过 ChatGPT 过于自信,很容易迷惑我们,让我失去判断力。
基于我对 ChatGPT 的使用感受,下面我想聊聊 ChatGPT 对具体的软件测试工作会带来什么影响。
ChatGPT 能做哪些软件测试工作?
由于 ChatGPT 处理的是文本信息,测试工作中所有跟文本打交道的工作理论上它都是可以做的,前提是要给它提供相应的上下文或者领域知识,比如:
给定业务需求文档,它可以阅读文档并从中提炼信息,识别需求关键点。
给定需要测试的场景,它可以生成对应场景下测试用例,包括输入数据和预期输出,以及常见的安全、性能、易用性等非功能测试对应的用例。
给定测试需求,并指定自动化测试框架,它可以编写相应的自动化测试代码;
给它测试结果文档,它可以汇总测试结果、生成测试报告,甚至能够根据结果推荐改进方案;
给它缺陷信息,它能够帮助测试人员分析和诊断缺陷,生成对应的缺陷分类分析报告,并提供缺陷定位和修复建议。
给它错误日志信息,它可以整合日志、分析并提炼关键信息,总结日志相关的问题。
ChatGPT 做测试工作有哪些局限性?
虽然理论上 ChatGPT 能做的测试工作有很多,但由于前面提到的 AI 幻觉存在,也就是它会误判,它会一本正经地胡说八道,它给出的结果离不开专业测试人员的判断和验证,无法交给它来独立完成测试工作。
还有一个必须得关注的是安全和隐私问题,也就是 ChatGPT 在处理测试数据和测试结果时需要保证数据的安全性和隐私性。业务上下文中可能包含商业机密,测试数据中可能包含敏感信息,例如用户名、密码等,需要进行保护和加密。同时,测试结果也需要进行保护和管理,避免被未授权的人员获取和使用。如果安全和隐私问题得不到保障,也就没法在正式的测试工作中使用 ChatGPT。
前面那些 ChatGPT 能做的工作基本都是有相对明确的规则或可以推断出相对确定的解决方案的,还有一些工作是 ChatGPT 很难完成的,对于一些需要创造性、探索性和强专业性的工作,测试人员来做更具优势,而 ChatGPT 很难通过获取到的有限信息来胜任这类工作。例如:
需要创造性思维和探索能力的工作:测试人员具有独特的创造性思维和探索能力,能够对不同场景的测试策略进行调整,能够发现系统中的潜在问题和未知的边界情况,可以通过假设和试验来寻找不同的测试路径,并提供有价值的反馈和改进建议。
用户体验和感知:测试人员能够模拟真实用户的行为和情境,从用户的角度出发评估系统的易用性、用户界面和交互体验。他们可以提供有关界面设计、文案表达和用户反馈的关键洞察。
性能等非功能性测试:这些测试需要更深入的技术知识和专业工具来评估,ChatGPT 很难具备测试人员在这些方面所具备的专业知识和经验。
异常情况和边界测试:测试人员能够主动挖掘系统的异常情况和边界条件,并进行测试。他们能够思考和模拟系统可能遇到的各种异常情况,以验证系统的稳定性。
文化和语言理解:在国际化和多语言环境下,测试人员能够更好地理解和评估不同文化背景和语言环境下的系统表现,包括语言翻译、本地化和地域特定需求。
除了前面的具体测试工作之外,还有测试相关的团队协作、沟通、以及流程中需要测试人员的综合能力和经验的工作,也是 ChatGPT 暂时做不到的。
当然,大家注意我这里说的是 ChatGPT 很难胜任,不是说它一定不能做。或许随着 AI 技术的不断发展,AI 真的会具有智慧,也可以像人一样思考和感知,那个时候可能它所不能做的事情会更少了。但目前阶段来讲,还不具备条件将测试工作完全交给 ChatGPT 或其他 AI 去做。
怎么看待 ChatGPT 对软件测试的影响?
总的来说,ChatGPT 对软件测试工作的影响是积极的,有以下几个方面的好处:
提高测试效率。ChatGPT 作为一个强大的人工智能工具,用对了地方是可以帮助节省测试人员时间的,前面也讲到了很多它所能做的工作。
启发测试人员,实现更全面的测试覆盖。前面提到在我用 ChatGPT 协助产生内容和制定方案的时候,它能开拓我的思路。对于测试人员制定策略、设计用例或工具选型等方面,ChatGPT 能够起到同样的作用,可以给到测试人员启发。
准确性更高。对于分析类的工作,如果 ChatGPT 获取了足够的上下文,它应该能做到比测试人员分析得更准确,因为人类容易犯错,而在确定语境下 ChatGPT 犯错的可能性会小很多。
另一方面,我对 ChatGPT 在软件测试中的使用持谨慎态度,不能盲目运用到实际工作中。在使用 ChatGPT 来开拓思路的时候,需要批判性地看待它提供的结果,不能过度依赖 ChatGPT。
最后,还想说一点是 ChatGPT 短期内不会取代测试人员,大家不用恐慌。但是,ChatGPT 的出现,测试人员不能置之不理,需要去了解它,掌握如何利用它;同时,自身要保持终身学习的习惯,不断提高各方面的综合能力,保持作为人类对 AI 的优势。